copy previous config

This commit is contained in:
2021-08-06 14:57:00 +09:00
parent 9b3eb87947
commit dd7e95b0d7
40 changed files with 3944 additions and 1 deletions

View File

@ -0,0 +1,77 @@
env:
TERM: xterm-256color
window:
padding:
x: 6
y: 6
title: Alacritty
class:
instance: Alacritty
general: Alacritty
scrolling:
history: 10000
font:
normal:
family: Mononoki Nerd Font
style: Regular
bold:
family: Mononoki Nerd Font
style: Bold
italic:
family: Mononoki Nerd Font
style: Italic
bold_italic:
family: Mononoki Nerd Font
style: Bold Italic
# Point size
size: 11.0
offset:
x: 0
y: 1
draw_bold_text_with_bright_colors: true
colors:
primary:
background: '0x282c34'
foreground: '0xbbc2cf'
selection:
text: '0xbbc2cf'
normal:
black: '0x1c1f24'
red: '0xff6c6b'
green: '0x98be65'
yellow: '0xda8548'
blue: '0x51afef'
magenta: '0xc678dd'
cyan: '0x5699af'
white: '0x202328'
bright:
black: '0x5b6268'
red: '0xda8548'
green: '0x4db5bd'
yellow: '0xecbe7b'
blue: '0x3071db' # This is 2257a0 in Doom Emacs but I lightened it.
magenta: '0xa9a1e1'
cyan: '0x46d9ff'
white: '0xdfdfdf'
background_opacity: 0.9
key_bindings:
# (Windows, Linux, and BSD only)
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Plus, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt }
- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt }

324
.config/nvim/Vim.org Normal file
View File

@ -0,0 +1,324 @@
#+TITLE: Vim
* Vim Configuration
** Config file location
- on Windows : ~/AppData/Local/nvim/init.vim
- on Linux : ~/.config/nvim/init.vim
** Basic Settings
*** General
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
" Vim Configuration
set nocompatible "move using arrow key
"filtype plugin on
set number
set ai "auto indent
set si "smart indent
set cindent " c style indent
set shiftwidth=4 "shift order 4step
set tabstop=4 "tab order 4step
set hlsearch "highlight empathize the word.
set history=1000 "history store depth
set nobackup "no generate swp file
set noswapfile
set nowritebackup
set backupdir=~/.backup/
set directory=~/.backup/
set ruler "display the cursor position
set title "display the title
set showmatch "display the matched bracket
"set nowrap "no auto linefeed
set wmnu "auto word finder
set autochdir " auto change working directory
set hidden "buffer hidden
set updatetime=300 " 300ms
set cmdheight=2 " Better display for messages
set shortmess+=c " don't give [ins-completion-menu] messages.
set signcolumn=yes " always show signcolumns
set backspace=indent,eol,start
set fencs=ucs-bom,utf-8,cp949
set clipboard^=unnamed,unnamedplus
set mouse=a
#+end_src
여기서 clipboard 문제가 발생할 수 있다. Windows계열에서는 쉽게 ="+y= ="+p"= 로 clipboard를 통한 복사 붙여넣기가 가능하며,
리눅스의 경우는 xclip을 이용하여 사용하는것이 편했다.
리눅스는 Ctrl+C/V로 관리 되는 =+= 레지스터와 Selection으로 관리되는 마우스 중간버튼의 =*= 레지스터가 따로 관리되는 듯하니 VIM레지스터 =+= 와 =*= 을 잘 확인해 봐야한다.
** Plugin List
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
" PluginManager in vimrc
runtime plugList.vim
#+end_src
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
call plug#begin('~/.vim/plugged')
#+end_src
*** Suda
기존의 VIM에는 읽기 권한으로 파일을 열고 다음과 같은 커맨드로 sudo write가 가능했는데
Neovim에서는 불가능한 상황이다. (아마 비밀번호를 입력못했던걸로.)
#+begin_src shell
:w !sudo tee %
#+end_src
Neovim에서는 플러그인으로 문제를 해결한다.
=SudaRead==SudaWrite= 를 활용한다.
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'lambdalisue/suda.vim'
#+end_src
*** Clolor Scheme
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
"""""""""""""""""""""""""""""""""""""""""""""""""""
" Colorscheme
"""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""" One Dark
"colorscheme onedark
"""""""""""""" Grub_box
"let g:gruvbox_contrast_dark='soft'
"set background=dark
"colorscheme gruvbox
"let g:airline_theme='gruvbox'
"""""""""""""" Paper Color
"set background=light
"colorscheme PaperColor
"let g:airline_theme='hybrid'
"let g:PaperColor_Theme_Options = {
" \ 'theme': {
" \ 'default.light': {
" \ 'transparent_background': 1
" \ }
" \ }
" \ }
"""""""""""""" Molokai
"let g:molokai_original = 1
"colorscheme molokai
"""""""""""""" Solarized 8
"set background=light
"colorscheme solarized8_high
"let g:airline_theme='solarized8'
"""""""""""""" Challenger Deep
"colorscheme challenger_deep
colorscheme palenight
#+end_src
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
" color scheme
"Plug 'morhetz/gruvbox'
"Plug 'lifepillar/vim-solarized8'
"Plug 'NLKNguyen/papercolor-theme'
"Plug 'tomasr/molokai'
"Plug 'joshdick/onedark.vim'
"Plug 'challenger-deep-theme/vim', { 'as': 'challenger-deep' }
Plug 'drewtempelmeyer/palenight.vim'
#+end_src
*** Airline
VIM의 위아래에 Tab바와 같은것을 만들어 준다.
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
"""""""""""""""""""""""""""""""""""""""""""""""""""
" Air-line
"""""""""""""""""""""""""""""""""""""""""""""""""""
let g:airline#extensions#tabline#enabled = 1 " turn on buffer list
set laststatus=2 " turn on bottom bar
#+end_src
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
#+end_src
*** NerdTree
예전에는 Nerdtree를 =F3= Keybinding하여 Explorer와 같이 띄워 사용하였다.
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
""""""""""""""""""""""""""""""""""""""""""""""""""
" NERDTREE
""""""""""""""""""""""""""""""""""""""""""""""""""
"map <F3> :NERDTreeToggle<cr>
#+end_src
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
"Plug 'scrooloose/nerdtree'
#+end_src
현재는 순정으로 netrw 플러그인이 있기때문에 =:Ex= 커맨드와 =:R= 를 이용하여 사용한다.
VIM은 =:Rx= 였던걸로?
*** Unimpaired
그냥 버퍼이동 쉽게하려고 =:bnext= =:bprev= 대신에 이 플러그인에 바인딩된 =[b= =]b= 를 사용한다.
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'tpope/vim-unimpaired'
#+end_src
*** Commentary
Comment 쉽게 toggle, 키는 =gcc= 나 Visual로 라인선택 후 =gc= 사용한다.
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'tpope/vim-commentary'
#+end_src
*** Git-fugitive
=:Git commit= 과 같은 명령어 사용 가능해짐.
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'tpope/vim-fugitive' " git wrapper
#+end_src
*** Git-Gutter
변경점들을 하이라이트 해서 보여줌. =<F4>= 키로 하이라이트 토글 가능.
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
""""""""""""""""""""""""""""""""""""""""""""""""""
" Git Gutter
""""""""""""""""""""""""""""""""""""""""""""""""""
let g:gitgutter_highlight_lines = 1
map <F4> :GitGutterLineHighlightsToggle<cr>
#+end_src
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'airblade/vim-gitgutter' " git modified view;
#+end_src
*** Surround
Visual로 선택하고 =S}= =S]= =S)= =S"= 와 같은 커맨드로 괄호 치기 가능.
사실 Verilog 쓰는입장에서는 잘 안쓰게됨.
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'tpope/vim-surround'
#+end_src
*** Easy Motion
커서를 빠르게 이동함. =\w= 커맨드를 치면 워드단위로 하이라이트 되어 손쉽게 이동가능
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
""""""""""""""""""""""""""""""""""""""""""""""""""
" easymotion
""""""""""""""""""""""""""""""""""""""""""""""""""
" <Leader>f{char} to move to {char}
"map <Leader>f <Plug>(easymotion-bd-f)
"nmap <Leader>f <Plug>(easymotion-overwin-f)
" s{char}{char} to move to {char}{char}
nmap <Leader>s <Plug>(easymotion-overwin-f2)
" Move to line
"map <Leader>L <Plug>(easymotion-bd-jk)
"nmap <Leader>L <Plug>(easymotion-overwin-line)
" Move to word
map <Leader>w <Plug>(easymotion-bd-w)
nmap <Leader>w <Plug>(easymotion-overwin-w)
#+end_src
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
Plug 'easymotion/vim-easymotion'
#+end_src
*** COC(HDL-Checker가 시원찮음. 제거)
Language Server Protocol 연동가능해짐.
Configuration은 :CocConfig를 쳐서 수정하거나 아래와 같은 경로에 파일을 위치시키면됨.
- Windows는 ~/AppData/local/nvim/coc-settings.json
- Linux는 ~/.config/nvim/coc-settings.json
Configuration (hdlChecker는 윈도우에서 잘 동작안하는것 같음.)
Config 수정후 =:CocInstall= 을 통해 설치해야 적용됨.
#+begin_src json
{
"languageserver": {
"hdlChecker": {
"command": "hdl_checker",
"args": [
"--lsp"
],
"rootPatterns": [".git/"],
"filetypes": [
"vhdl",
"verilog",
"systemverilog"
],
"trace.server": "verbose"
},
"clangd": {
"command": "clangd",
"args": ["--background-index"],
"rootPatterns": ["compile_flags.txt", "compile_commands.json", ".vim/", ".git/", ".hg/"],
"filetypes": ["c", "cpp", "objc", "objcpp"]
},
"rust": {
"command": "ra_lsp_server",
"filetypes": ["rust"],
"rootPatterns": ["Cargo.toml"]
}
}
}
#+end_src
PluginManager
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
"Plug 'neoclide/coc.nvim', {'branch': 'release'}
#+end_src
** Others
#+begin_src shell :tangle ~/.config/nvim/plugList.vim :mkdirp yes
call plug#end()
#+end_src
*** Keybinding
Vim의 Yank가 아닌 클립보드 복사를 위해 =Ctrl+C= =Ctrl+N= 으로 설정하였다. VIM의 Visual Mode 단축키와 Tmux의 Prefix를 피하고자 N을 사용하였다.
또한 Neovim에서 제공하는 터미을 사용하기 위한 단축키 =<F12>= 와 레지스터 a를 매크로로 자주 활용하기 때문에 바인딩하여 활용성올 높였다.
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
map <C-c> "+ygv"*y
map <C-n> "+p
map <F12> :cd %:p:h<cr>:term bash<cr>
map <F7> @a
#+end_src
*** Others
#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes
""""""""""""""""""""""""""""""""""""""""""""""""""
" Visual-star (Search using * / in visual modde)
""""""""""""""""""""""""""""""""""""""""""""""""""
xnoremap * :<C-u>call <SID>VSetSearch('/')<CR>/<C-R>=@/<CR><CR>
xnoremap # :<C-u>call <SID>VSetSearch('?')<CR>?<C-R>=@/<CR><CR>
function! s:VSetSearch(cmdtype)
let temp = @s
norm! gv"sy
let @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g')
let @s = temp
endfunction
#+end_src
* PluginManager
** 설치
*** Unix
#+begin_src shell
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
#+end_src
*** Windows
#+begin_src shell
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
#+end_src

129
.config/nvim/init.vim Normal file
View File

@ -0,0 +1,129 @@
" Vim Configuration
set nocompatible "move using arrow key
"filtype plugin on
set number
set ai "auto indent
set si "smart indent
set cindent " c style indent
set shiftwidth=4 "shift order 4step
set tabstop=4 "tab order 4step
set hlsearch "highlight empathize the word.
set history=1000 "history store depth
set nobackup "no generate swp file
set noswapfile
set nowritebackup
set backupdir=~/.backup/
set directory=~/.backup/
set ruler "display the cursor position
set title "display the title
set showmatch "display the matched bracket
"set nowrap "no auto linefeed
set wmnu "auto word finder
set autochdir " auto change working directory
set hidden "buffer hidden
set updatetime=300 " 300ms
set cmdheight=2 " Better display for messages
set shortmess+=c " don't give [ins-completion-menu] messages.
set signcolumn=yes " always show signcolumns
set backspace=indent,eol,start
set fencs=ucs-bom,utf-8,cp949
set clipboard^=unnamed,unnamedplus
set mouse=a
" PluginManager in vimrc
runtime plugList.vim
"""""""""""""""""""""""""""""""""""""""""""""""""""
" Colorscheme
"""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""" One Dark
"colorscheme onedark
"""""""""""""" Grub_box
"let g:gruvbox_contrast_dark='soft'
"set background=dark
"colorscheme gruvbox
"let g:airline_theme='gruvbox'
"""""""""""""" Paper Color
"set background=light
"colorscheme PaperColor
"let g:airline_theme='hybrid'
"let g:PaperColor_Theme_Options = {
" \ 'theme': {
" \ 'default.light': {
" \ 'transparent_background': 1
" \ }
" \ }
" \ }
"""""""""""""" Molokai
"let g:molokai_original = 1
"colorscheme molokai
"""""""""""""" Solarized 8
"set background=light
"colorscheme solarized8_high
"let g:airline_theme='solarized8'
"""""""""""""" Challenger Deep
"colorscheme challenger_deep
colorscheme palenight
"""""""""""""""""""""""""""""""""""""""""""""""""""
" Air-line
"""""""""""""""""""""""""""""""""""""""""""""""""""
let g:airline#extensions#tabline#enabled = 1 " turn on buffer list
set laststatus=2 " turn on bottom bar
""""""""""""""""""""""""""""""""""""""""""""""""""
" Git Gutter
""""""""""""""""""""""""""""""""""""""""""""""""""
let g:gitgutter_highlight_lines = 1
map <F4> :GitGutterLineHighlightsToggle<cr>
""""""""""""""""""""""""""""""""""""""""""""""""""
" easymotion
""""""""""""""""""""""""""""""""""""""""""""""""""
" <Leader>f{char} to move to {char}
"map <Leader>f <Plug>(easymotion-bd-f)
"nmap <Leader>f <Plug>(easymotion-overwin-f)
" s{char}{char} to move to {char}{char}
nmap <Leader>s <Plug>(easymotion-overwin-f2)
" Move to line
"map <Leader>L <Plug>(easymotion-bd-jk)
"nmap <Leader>L <Plug>(easymotion-overwin-line)
" Move to word
map <Leader>w <Plug>(easymotion-bd-w)
nmap <Leader>w <Plug>(easymotion-overwin-w)
map <C-c> "+ygv"*y
map <C-n> "+p
map <F12> :cd %:p:h<cr>:term bash<cr>
map <F7> @a
map <F8> "byaw/incNumber/b
cw"bp
""""""""""""""""""""""""""""""""""""""""""""""""""
" Visual-star (Search using * / in visual modde)
""""""""""""""""""""""""""""""""""""""""""""""""""
xnoremap * :<C-u>call <SID>VSetSearch('/')<CR>/<C-R>=@/<CR><CR>
xnoremap # :<C-u>call <SID>VSetSearch('?')<CR>?<C-R>=@/<CR><CR>
function! s:VSetSearch(cmdtype)
let temp = @s
norm! gv"sy
let @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g')
let @s = temp
endfunction

25
.config/nvim/plugList.vim Normal file
View File

@ -0,0 +1,25 @@
call plug#begin('~/.vim/plugged')
Plug 'lambdalisue/suda.vim'
" color scheme
"Plug 'morhetz/gruvbox'
"Plug 'lifepillar/vim-solarized8'
"Plug 'NLKNguyen/papercolor-theme'
"Plug 'tomasr/molokai'
"Plug 'joshdick/onedark.vim'
"Plug 'challenger-deep-theme/vim', { 'as': 'challenger-deep' }
Plug 'drewtempelmeyer/palenight.vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'tpope/vim-unimpaired'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-fugitive' " git wrapper
Plug 'airblade/vim-gitgutter' " git modified view;
Plug 'tpope/vim-surround'
Plug 'easymotion/vim-easymotion'
"Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()

View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
STATUS=`cat /sys/class/power_supply/BAT0/status`
if [ $STATUS = "Charging" ]; then
echo "<fc=#f0c674><fn=1></fn></fc>"
elif [ $STATUS = "Discharging" ]; then
echo "<fc=#e86f69><fn=1></fn></fc>"
else
echo "<fn=1></fn>"
fi

View File

@ -0,0 +1,48 @@
#!/bin/sh
# Copied from https://github.com/jaor/xmobar/issues/239#issuecomment-233206552
# Detects the width of running trayer-srg window (xprop name 'panel')
# and creates an XPM icon of that width, 1px height, and transparent.
# Outputs an <icon>-tag for use in xmobar to display the generated
# XPM icon.
#
# Run script from xmobar:
# `Run Com "/where/ever/trayer-padding-icon.sh" [] "trayerpad" 10`
# and use `%trayerpad%` in your template.
# Function to create a transparent Wx1 px XPM icon
create_xpm_icon () {
timestamp=$(date)
pixels=$(for i in `seq $1`; do echo -n "."; done)
cat << EOF > "$2"
/* XPM *
static char * trayer_pad_xpm[] = {
/* This XPM icon is used for padding in xmobar to */
/* leave room for trayer-srg. It is dynamically */
/* updated by by trayer-padding-icon.sh which is run */
/* by xmobar. */
/* Created: ${timestamp} */
/* <w/cols> <h/rows> <colors> <chars per pixel> */
"$1 1 1 1",
/* Colors (none: transparent) */
". c none",
/* Pixels */
"$pixels"
};
EOF
}
# Width of the trayer window
width=$(xprop -name panel | grep 'program specified minimum size' | cut -d ' ' -f 5)
# Icon file name
iconfile="/tmp/trayer-padding-${width}px.xpm"
# If the desired icon does not exist create it
if [ ! -f $iconfile ]; then
create_xpm_icon $width $iconfile
fi
# Output the icon tag for xmobar
echo "<icon=${iconfile}/>"

View File

@ -0,0 +1,43 @@
-- http://projects.haskell.org/xmobar/
-- install xmobar with these flags: --flags="with_alsa" --flags="with_mpd" --flags="with_xft" OR --flags="all_extensions"
-- you can find weather location codes here: http://weather.noaa.gov/index.html
Config { font = "xft:NanumGothic:weight=bold:pixelsize=11:antialias=true:hinting=true"
, additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true"
, "xft:FontAwesome:pixelsize=12"
]
, bgColor = "#282c34"
, fgColor = "#ff6c6b"
, position = Static { xpos = 2560 , ypos = 0, width = 1920, height = 24 }
, lowerOnStart = True
, hideOnStart = False
, allDesktops = True
, persistent = True
, iconRoot = "/home/jaeus/.xmonad/" -- default: "."
, commands = [
-- Time and date
Run Date "<fn=1>\xf133 </fn> %b %d %Y - (%H:%M) " "date" 50
-- Network up and down
, Run Network "enp10s0" ["-t", "<fn=1>\xf0ab </fn> <rx>kb <fn=1>\xf0aa </fn> <tx>kb"] 20
-- Cpu usage in percent
, Run Cpu ["-t", "<fn=1>\xf108 </fn> cpu: (<total>%)","-H","50","--high","red"] 20
-- Ram used number and percent
, Run Memory ["-t", "<fn=1>\xf233 </fn> mem: <used>M (<usedratio>%)"] 20
-- Disk space free
, Run DiskU [("/", "<fn=1>\xf0c7 </fn> hdd: <free> free")] [] 60
-- Runs custom script to check for pacman updates.
-- This script is in my dotfiles repo in .local/bin.
, Run Com "~/.local/bin/pacupdate" [] "pacupdate" 36000
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
, Run Com "/bin/sh" [ "-c", "/home/jaeus/.config/xmobar/trayer-padding-icon.sh" ] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
, Run UnsafeStdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " <action=`xdotool key control+alt+g`><icon=haskell_20.xpm/> </action><fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666> |</fc> <fc=#b3afc2><fn=1> </fn> %uname% </fc><fc=#666666> |</fc> <fc=#ecbe7b> %cpu% </fc><fc=#666666> |</fc> <fc=#ff6c6b> %memory% </fc><fc=#666666> |</fc> <fc=#51afef> %disku% </fc><fc=#666666> |</fc> <fc=#98be65> %enp10s0% </fc><fc=#666666> |</fc> <fc=#46d9ff> %date% </fc>"
}

View File

@ -0,0 +1,52 @@
-- http://projects.haskell.org/xmobar/
-- install xmobar with these flags: --flags="with_alsa" --flags="with_mpd" --flags="with_xft" OR --flags="all_extensions"
-- you can find weather location codes here: http://weather.noaa.gov/index.html
Config { -- font = "xft:Noto Sans CJK KR:weight=bold:pixelsize=14:antialias=true:hinting=true"
-- , additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=14:antialias=true:hinting=true"
-- , "xft:FontAwesome:pixelsize=16"
-- ]
--font = "xft:DejaVu Sans:size=9.5:antialias=true"
font = "xft:NanumGothic:weight=bold:pixelsize=14:antialias=true:hinting=true"
, additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true"
, "xft:FontAwesome:pixelsize=12"
]
, bgColor = "#282c34"
, fgColor = "#ff6c6b"
, position = Static { xpos = 0 , ypos = 0, width = 2560, height = 36 }
, lowerOnStart = True
, hideOnStart = False
, allDesktops = True
, persistent = True
, iconRoot = "/home/jaeus/.xmonad/" -- default: "."
, commands = [
Run Date "<fn=1> </fn> %A %B %d <fn=1> </fn> %H:%M" "date" 50
, Run BatteryP ["BAT0"] ["-t", "<left> (<timeleft>)", "-S", "True"
,"-L","20","-H","70"
,"-l","#ff3333",
"--normal","#f0c674",
"--high", "#99cc99" ] 50
, Run Com "bash" ["/home/jaeus/.config/xmobar/scripts/battery_icon.sh"] "batteryIcon" 50
-- Time and date
-- Run Date "<fn=1>\xf133 </fn> %b %d %Y - (%H:%M) " "date" 50
-- Network up and down
, Run Network "enp10s0" ["-t", "<fn=1>\xf0ab </fn> <rx>kb <fn=1>\xf0aa </fn> <tx>kb"] 20
-- Cpu usage in percent
, Run Cpu ["-t", "<fn=1>\xf108 </fn> (<total>%)","-H","50","--high","red"] 20
-- Ram used number and percent
, Run Memory ["-t", "<fn=1>\xf233 </fn> <used>M (<usedratio>%)"] 20
-- Disk space free
, Run DiskU [("/", "<fn=1>\xf0c7 </fn> <free> free")] [] 60
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
, Run Com "/bin/sh" [ "-c", "/home/jaeus/.config/xmobar/trayer-padding-icon.sh" ] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
, Run UnsafeStdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " <action=`xdotool key control+alt+g`><icon=haskell_20.xpm/> </action><fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666> |</fc> <fc=#b3afc2><fn=1> </fn> %uname% </fc> <fc=#666666> |</fc><fc=#ecbe7b> %cpu% </fc><fc=#666666> |</fc> <fc=#ff6c6b> %memory% </fc><fc=#666666> |</fc> <fc=#51afef> %disku% </fc><fc=#666666> |</fc> <fc=#98be65> %enp10s0% </fc><fc=#666666> |</fc><fc=#46d9ff> %date% </fc><fc=#666666> |</fc>%trayerpad%"
}

View File

@ -0,0 +1,43 @@
Config { font = "xft:NanumGothic:weight=bold:pixelsize=11:antialias=true:hinting=true"
, additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true"
, "xft:FontAwesome:pixelsize=12"
]
, bgColor = "#282c34"
, fgColor = "#ff6c6b"
, position = Static { xpos = 0 , ypos = 0, width = 1920, height = 24 }
, lowerOnStart = True
, hideOnStart = False
, allDesktops = True
, persistent = True
, iconRoot = "/home/jaeus/.xmonad/" -- default: "."
, commands = [
Run Date "<fn=1> </fn> %A %B %d <fn=1> </fn> %H:%M" "date" 50
, Run BatteryP ["BAT0"] ["-t", "<left> (<timeleft>)", "-S", "True"
,"-L","20","-H","70"
,"-l","#ff3333",
"--normal","#f0c674",
"--high", "#99cc99" ] 50
, Run Com "bash" ["/home/jaeus/.config/xmobar/scripts/battery_icon.sh"] "batteryIcon" 50
-- Time and date
-- Run Date "<fn=1>\xf133 </fn> %b %d %Y - (%H:%M) " "date" 50
-- Network up and down
, Run Network "wlp3s0" ["-t", "<fn=1>\xf0ab </fn> <rx>kb <fn=1>\xf0aa </fn> <tx>kb"] 20
-- Cpu usage in percent
, Run Cpu ["-t", "<fn=1>\xf108 </fn> (<total>%)","-H","50","--high","red"] 20
-- Ram used number and percent
, Run Memory ["-t", "<fn=1>\xf233 </fn> <used>M (<usedratio>%)"] 20
-- Disk space free
, Run DiskU [("/", "<fn=1>\xf0c7 </fn> <free> free")] [] 60
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
, Run Com "/bin/sh" [ "-c", "/home/jaeus/.config/xmobar/trayer-padding-icon.sh" ] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
, Run UnsafeStdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " <action=`xdotool key control+alt+g`><icon=haskell_20.xpm/> </action><fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666> |</fc> <fc=#b3afc2><fn=1> </fn> %uname% </fc> <fc=#666666> |</fc><fc=#ecbe7b> %cpu% </fc><fc=#666666> |</fc> <fc=#ff6c6b> %memory% </fc><fc=#666666> |</fc> <fc=#51afef> %disku% </fc><fc=#666666> |</fc> <fc=#98be65> %wlp3s0% </fc><fc=#666666> |</fc><fc=#46d9ff> %date% </fc><fc=#666666> |</fc> %batteryIcon% %battery%<fc=#666666> |</fc>%trayerpad%"
}

3
.gitconfig Normal file
View File

@ -0,0 +1,3 @@
[user]
name = JaeYoo-Im
email = cpu3792@gmail.com

14
.gitignore vendored Normal file
View File

@ -0,0 +1,14 @@
.ssh/*
!.ssh/config
.xmonad/*
!.xmonad/xmonad.org
!.xmonad/picom.conf
!.xmonad/haskell_20.xpm
.emacs.d/*
!.emacs.d/desktop.org
!.emacs.d/emacs.org
!.emacs.d/init.el
!.emacs.d/exwm/

3
.julia/startup.jl Normal file
View File

@ -0,0 +1,3 @@
#using Plots
#using PlotThemes
#theme(:juno)

36
.minttyrc Normal file
View File

@ -0,0 +1,36 @@
# Challenger Deep
ForegroundColour=161,176,184
BackgroundColour=41,45,62
Black=37,37,37
BoldBlack=37,37,37
Red=255,83,112
BoldRed=255,83,112
Green=195,232,141
BoldGreen=195,232,141
Yellow=255,203,107
BoldYellow=255,203,107
Blue=130,170,255
BoldBlue=130,170,255
Magenta=199,146,234
BoldMagenta=199,146,234g
Cyan=137,221,255
BoldCyan=137,221,255
White=245,245,245
BoldWhite=245,245,245
Font=Fira Code Retina
FontHeight=12
Term=xterm-256color
Locale=ko_KR
Charset=UTF-8
FontSmoothing=default
AllowBlinking=no
BoldAsFont=no
CursorType=block
CursorBlinks=yes
BellTaskbar=no
BellType=0
BellFlash=no
FontWeight=400
FontIsBold=no
Transparency=medium

28
.ssh/config Normal file
View File

@ -0,0 +1,28 @@
###################################################################
Host ju-server
User jaeus
# NOTE : Do not commit for security
Hostname 127.0.0.1
Port 22
# ProxyCommand ssh -W %h:%p odroid
Host github.com
User git
# ProxyCommand ssh -W %h:%p odroid
###################################################################
# Proxy Server
Host odroid
Hostname 192.168.1.168
User jaeus
Host bsat
User bsat
Hostname 192.168.1.31
Host zynq
User jaeus
hostname 192.168.1.145
Host lora_1
User root
hostname 192.168.144.10
Host lora_2
User root
hostname 192.168.144.11

25
.tmux.conf Normal file
View File

@ -0,0 +1,25 @@
set -g default-terminal "screen-256color"
set -g mouse on
# utf8 is on
# set -g utf8 on
# set -g status-utf8 on
# address vim mode switching delay (http://superuser.com/a/252717/65504)
set -s escape-time 0
# scrollback buffer size increase
set -g history-limit 100000
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm'

25
.xmonad/haskell_20.xpm Normal file
View File

@ -0,0 +1,25 @@
/* XPM */
static char * haskell_20_xpm[] = {
"20 20 2 1",
" c None",
". c #FFFFFF",
" ",
" ",
" ",
".... .... ",
" .... ... ",
" ... .... ",
" .... .... ",
" .... ... ........",
" ... .... .......",
" .... .... ",
" .... .... ",
" ... ...... .....",
" .... ....... ....",
" .... .... ... ",
" ... .... .... ",
" .... ... .... ",
".... .... ... ",
" ",
" ",
" "};

443
.xmonad/picom.conf Normal file
View File

@ -0,0 +1,443 @@
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 7;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -7;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -7;
# Avoid drawing shadows on dock/panel windows. This option is deprecated,
# you should use the *wintypes* option in your config file instead.
#
# no-dock-shadow = false
# Don't draw shadows on drag-and-drop windows. This option is deprecated,
# you should use the *wintypes* option in your config file instead.
#
# no-dnd-shadow = false
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Do not paint shadows on shaped windows. Note shaped windows
# here means windows setting its shape through X Shape extension.
# Those using ARGB background is beyond our control.
# Deprecated, use
# shadow-exclude = 'bounding_shaped'
# or
# shadow-exclude = 'bounding_shaped && !rounded_corners'
# instead.
#
# shadow-ignore-shaped = ''
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g ?= 'Notify-osd'",
"name = 'Plank'",
"name = 'Docky'",
"name = 'Kupfer'",
"name = 'xfce4-notifyd'",
"name *= 'VLC'",
"name *= 'compton'",
"name *= 'Chromium'",
"name *= 'Chrome'",
"class_g = 'Firefox' && argb",
"class_g = 'Conky'",
"class_g = 'Kupfer'",
"class_g = 'Synapse'",
"class_g ?= 'Notify-osd'",
"class_g ?= 'Cairo-dock'",
"class_g = 'Cairo-clock'",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'",
"_GTK_FRAME_EXTENTS@:c",
];
# Add this one too for ...
# "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
# Add this one above to the list to have no shadow in Openbox menu
# "! name~=''",
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = false
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1;
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
# menu-opacity = 1.0
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should always be considered focused.
# focus-exclude = []
focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
opacity-rule = [ "80:class_g = 'Alacritty'"];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ''
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = 'glx'
backend = "xrender";
# Enable/disable VSync. Set to false for transparency in VirtualBox.
vsync = false
#vsync = true
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Specify refresh rate of the screen. If not specified or 0, picom will
# try detecting this with X RandR extension.
#
# refresh-rate = 60
refresh-rate = 0
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
# boost performance. This should not be used with
# vsync drm/opengl/opengl-oml
# as they essentially does sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
#
# sw-opti =
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
# detect-transient is enabled, too.
#
# detect-client-leader = false
detect-client-leader = true
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
# in the source tree for examples.
#
# glx-fshader-win = ''
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = '~/.config/compton.log'
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = '/path/to/your/log/file'
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.9; focus = true; full-shadow = false; };
dock = { shadow = false; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.9; }
dropdown_menu = { opacity = 0.9; }
};

566
.xmonad/xmonad.org Normal file
View File

@ -0,0 +1,566 @@
#+TITLE: Xmonad
* Xmonad
** Import
#+begin_src haskell :tangle ./xmonad.hs
-- Base
import XMonad
import System.Directory
import System.IO (hPutStrLn)
import System.Exit (exitSuccess)
import qualified XMonad.StackSet as W
-- Actions
import XMonad.Actions.CopyWindow (kill1)
import XMonad.Actions.CycleWS (Direction1D(..), moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
import XMonad.Actions.GridSelect
import XMonad.Actions.MouseResize
import XMonad.Actions.Promote
import XMonad.Actions.RotSlaves (rotSlavesDown, rotAllDown)
import XMonad.Actions.WindowGo (runOrRaise)
import XMonad.Actions.WithAll (sinkAll, killAll)
import qualified XMonad.Actions.Search as S
-- Data
import Data.Char (isSpace, toUpper)
import Data.Maybe (fromJust)
import Data.Monoid
import Data.Maybe (isJust)
import Data.Tree
import qualified Data.Map as M
-- Hooks
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
import XMonad.Hooks.EwmhDesktops -- for some fullscreen events, also for xcomposite in obs.
import XMonad.Hooks.ManageDocks (avoidStruts, docksEventHook, manageDocks, ToggleStruts(..))
import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
import XMonad.Hooks.ServerMode
import XMonad.Hooks.SetWMName
import XMonad.Hooks.WorkspaceHistory
-- Layouts
import XMonad.Layout.Accordion
import XMonad.Layout.GridVariants (Grid(Grid))
import XMonad.Layout.SimplestFloat
import XMonad.Layout.Spiral
import XMonad.Layout.ResizableTile
import XMonad.Layout.Tabbed
import XMonad.Layout.ThreeColumns
-- Layouts modifiers
import XMonad.Layout.LayoutModifier
import XMonad.Layout.LimitWindows (limitWindows, increaseLimit, decreaseLimit)
import XMonad.Layout.Magnifier
import XMonad.Layout.MultiToggle (mkToggle, single, EOT(EOT), (??))
import XMonad.Layout.MultiToggle.Instances (StdTransformers(NBFULL, MIRROR, NOBORDERS))
import XMonad.Layout.NoBorders
import XMonad.Layout.Renamed
import XMonad.Layout.ShowWName
import XMonad.Layout.Simplest
import XMonad.Layout.Spacing
import XMonad.Layout.SubLayouts
import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
import qualified XMonad.Layout.MultiToggle as MT (Toggle(..))
-- Utilities
import XMonad.Util.Dmenu
import XMonad.Util.EZConfig (additionalKeysP)
import XMonad.Util.NamedScratchpad
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
import XMonad.Util.SpawnOnce
#+end_src
** Gobal Variable
#+begin_src haskell :tangle ./xmonad.hs
myFont :: String
myFont = "xft:NanumGothic:regular:size=9:antialias=true:hinting=true"
myEmojiFont :: String
myEmojiFont = "xft:Noto Fonts Emoji:regular:size=9:antialias=true:hinting=true"
myModMask :: KeyMask
myModMask = mod4Mask -- Sets modkey to super/windows key
myTerminal :: String
myTerminal = "alacritty" -- Sets default terminal
myBrowser :: String
myBrowser = "qutebrowser " -- Sets qutebrowser as browser
myEmacs :: String
myEmacs = "emacsclient -c -a 'emacs' " -- Makes emacs keybindings easier to type
myEditor :: String
myEditor = "emacsclient -c -a 'emacs' " -- Sets emacs as editor
-- myEditor = myTerminal ++ " -e vim " -- Sets vim as editor
myBorderWidth :: Dimension
myBorderWidth = 2 -- Sets border width for windows
myNormColor :: String
myNormColor = "#282c34" -- Border color of normal windows
myFocusColor :: String
myFocusColor = "#46d9ff" -- Border color of focused windows
altMask :: KeyMask
altMask = mod1Mask -- Setting this for use in xprompts
windowCount :: X (Maybe String)
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
#+end_src
** StartupHook
#+begin_src haskell :tangle ./xmonad.hs
myStartupHook :: X ()
myStartupHook = do
--spawnOnce "xrandr --output DP-4 --primary --mode 2560x1440 --pos 0x0 --rotate normal --output HDMI-0 --mode 1920x1080 --pos 2560x0 --rotate normal"
spawnOnce "nm-applet &"
spawnOnce "picom -b --config ~/.xmonad/picom.conf &"
--spawnOnce "picom --experimental-backends -b --config ~/.xmonad/picom.conf &"
spawnOnce "dwall -s firewatch &"
spawnOnce "fcitx &"
--spawnOnce "seafile-applet &"
spawnOnce "seadrive-gui &"
spawnOnce "blueberry-tray &"
spawnOnce "volumeicon &"
--spawnOnce "enpass"
spawnOnce "green-tunnel -s &"
spawnOnce "trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 0 --transparent true --alpha 0 --tint 0x282c34 --height 24 &"
spawnOnce "/usr/bin/emacs --daemon &"
-- spawnOnce "/usr/bin/emacs --daemon &" -- emacs daemon for the emacsclient
-- spawnOnce "kak -d -s mysession &" -- kakoune daemon for better performance
-- spawnOnce "urxvtd -q -o -f &" -- urxvt daemon for better performance
--spawnOnce "xargs xwallpaper --stretch < ~/.xwallpaper" -- set last saved with xwallpaper
-- spawnOnce "/bin/ls ~/wallpapers | shuf -n 1 | xargs xwallpaper --stretch" -- set random xwallpaper
-- spawnOnce "~/.fehbg &" -- set last saved feh wallpaper
-- spawnOnce "feh --randomize --bg-fill ~/wallpapers/*" -- feh set random wallpaper
-- spawnOnce "nitrogen --restore &" -- if you prefer nitrogen to feh
--setWMName "LG3D"
#+end_src
** Layout
#+begin_src haskell :tangle ./xmonad.hs
myColorizer :: Window -> Bool -> X (String, String)
myColorizer = colorRangeFromClassName
(0x28,0x2c,0x34) -- lowest inactive bg
(0x28,0x2c,0x34) -- highest inactive bg
(0xc7,0x92,0xea) -- active bg
(0xc0,0xa7,0x9a) -- inactive fg
(0x28,0x2c,0x34) -- active fg
-- gridSelect menu layout
mygridConfig :: p -> GSConfig Window
mygridConfig colorizer = (buildDefaultGSConfig myColorizer)
{ gs_cellheight = 40
, gs_cellwidth = 200
, gs_cellpadding = 6
, gs_originFractX = 0.5
, gs_originFractY = 0.5
, gs_font = myFont
}
spawnSelected' :: [(String, String)] -> X ()
spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
where conf = def
{ gs_cellheight = 40
, gs_cellwidth = 200
, gs_cellpadding = 6
, gs_originFractX = 0.5
, gs_originFractY = 0.5
, gs_font = myFont
}
myAppGrid = [ --("Audacity", "audacity")
--, ("Deadbeef", "deadbeef")
("Vivaldi", "vivaldi-stable")
, ("Emacs", "emacsclient -c -a emacs")
, ("Firefox", "firefox")
--, ("Geany", "geany")
--, ("Geary", "geary")
, ("Gimp", "gimp")
, ("Kdenlive", "kdenlive")
, ("LibreOffice Impress", "loimpress")
, ("LibreOffice Writer", "lowriter")
--, ("OBS", "obs")
, ("PCManFM", "pcmanfm")
]
myScratchPads :: [NamedScratchpad]
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
, NS "mocp" spawnMocp findMocp manageMocp
, NS "calculator" spawnCalc findCalc manageCalc
]
where
spawnTerm = myTerminal ++ " -t scratchpad"
findTerm = title =? "scratchpad"
manageTerm = customFloating $ W.RationalRect l t w h
where
h = 0.9
w = 0.9
t = 0.95 -h
l = 0.95 -w
spawnMocp = myTerminal ++ " -t mocp -e mocp"
findMocp = title =? "mocp"
manageMocp = customFloating $ W.RationalRect l t w h
where
h = 0.9
w = 0.9
t = 0.95 -h
l = 0.95 -w
spawnCalc = "qalculate-gtk"
findCalc = className =? "Qalculate-gtk"
manageCalc = customFloating $ W.RationalRect l t w h
where
h = 0.5
w = 0.4
t = 0.75 -h
l = 0.70 -w
--Makes setting the spacingRaw simpler to write. The spacingRaw module adds a configurable amount of space around windows.
mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True
-- Below is a variation of the above except no borders are applied
-- if fewer than two windows. So a single window has no gaps.
mySpacing' :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
mySpacing' i = spacingRaw True (Border i i i i) True (Border i i i i) True
-- Defining a bunch of layouts, many that I don't use.
-- limitWindows n sets maximum number of windows displayed for layout.
-- mySpacing n sets the gap size around the windows.
tall = renamed [Replace "tall"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ limitWindows 12
$ mySpacing 8
$ ResizableTall 1 (3/100) (1/2) []
magnify = renamed [Replace "magnify"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ magnifier
$ limitWindows 12
$ mySpacing 8
$ ResizableTall 1 (3/100) (1/2) []
monocle = renamed [Replace "monocle"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ limitWindows 20 Full
floats = renamed [Replace "floats"]
$ smartBorders
$ limitWindows 20 simplestFloat
grid = renamed [Replace "grid"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ limitWindows 12
$ mySpacing 8
$ mkToggle (single MIRROR)
$ Grid (16/10)
spirals = renamed [Replace "spirals"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ mySpacing' 8
$ spiral (6/7)
threeCol = renamed [Replace "threeCol"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ limitWindows 7
$ ThreeCol 1 (3/100) (1/2)
threeRow = renamed [Replace "threeRow"]
$ smartBorders
$ addTabs shrinkText myTabTheme
$ subLayout [] (smartBorders Simplest)
$ limitWindows 7
-- Mirror takes a layout and rotates it by 90 degrees.
-- So we are applying Mirror to the ThreeCol layout.
$ Mirror
$ ThreeCol 1 (3/100) (1/2)
tabs = renamed [Replace "tabs"]
-- I cannot add spacing to this layout because it will
-- add spacing between window and tabs which looks bad.
$ tabbed shrinkText myTabTheme
tallAccordion = renamed [Replace "tallAccordion"]
$ Accordion
wideAccordion = renamed [Replace "wideAccordion"]
$ Mirror Accordion
-- setting colors for tabs layout and tabs sublayout.
myTabTheme = def { fontName = myFont
, activeColor = "#46d9ff"
, inactiveColor = "#313846"
, activeBorderColor = "#46d9ff"
, inactiveBorderColor = "#282c34"
, activeTextColor = "#282c34"
, inactiveTextColor = "#d0d0d0"
}
-- Theme for showWName which prints current workspace when you change workspaces.
myShowWNameTheme :: SWNConfig
myShowWNameTheme = def
{ swn_font = "xft:Ubuntu:bold:size=60"
, swn_fade = 1.0
, swn_bgcolor = "#1c1f24"
, swn_color = "#ffffff"
}
-- The layout hook
myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats
$ mkToggle (NBFULL ?? NOBORDERS ?? EOT) myDefaultLayout
where
myDefaultLayout = withBorder myBorderWidth tall
||| magnify
||| noBorders monocle
||| floats
||| noBorders tabs
||| grid
||| spirals
||| threeCol
||| threeRow
||| tallAccordion
||| wideAccordion
#+end_src
** Workspace
#+begin_src haskell :tangle ./xmonad.hs
myWorkspaces = [" 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 "]
-- myWorkspaces = [" dev ", " www ", " sys ", " doc ", " vbox ", " chat ", " mus ", " vid ", " gfx "]
myWorkspaceIndices = M.fromList $ zipWith (,) myWorkspaces [1..] -- (,) == \x y -> (x,y)
clickable ws = "<action=xdotool key super+"++show i++">"++ws++"</action>"
where i = fromJust $ M.lookup ws myWorkspaceIndices
myManageHook :: XMonad.Query (Data.Monoid.Endo WindowSet)
myManageHook = composeAll
-- 'doFloat' forces a window to float. Useful for dialog boxes and such.
-- using 'doShift ( myWorkspaces !! 7)' sends program to workspace 8!
-- I'm doing it this way because otherwise I would have to write out the full
-- name of my workspaces and the names would be very long if using clickable workspaces.
[ className =? "confirm" --> doFloat
, className =? "file_progress" --> doFloat
, className =? "dialog" --> doFloat
, className =? "download" --> doFloat
, className =? "error" --> doFloat
, className =? "Gimp" --> doFloat
, className =? "notification" --> doFloat
, className =? "pinentry-gtk-2" --> doFloat
, className =? "splash" --> doFloat
, className =? "toolbar" --> doFloat
--, title =? "Oracle VM VirtualBox Manager" --> doFloat
--, title =? "Mozilla Firefox" --> doShift ( myWorkspaces !! 1 )
--, className =? "brave-browser" --> doShift ( myWorkspaces !! 1 )
--, className =? "qutebrowser" --> doShift ( myWorkspaces !! 1 )
--, className =? "mpv" --> doShift ( myWorkspaces !! 7 )
--, className =? "Gimp" --> doShift ( myWorkspaces !! 8 )
--, className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 )
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
, (className =? "steam" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
] <+> namedScratchpadManageHook myScratchPads
#+end_src
** Key bindings
#+begin_src haskell :tangle ./xmonad.hs
myKeys :: [(String, X ())]
myKeys =
-- Xmonad
[ ("M-C-r", spawn "xmonad --recompile") -- Recompiles xmonad
, ("M-S-r", spawn "xmonad --restart") -- Restarts xmonad
, ("M-S-q", io exitSuccess) -- Quits xmonad
-- Run Prompt
-- M-p was the default keybinding. I've changed it to M-S-RET because I will use
-- M-p as part of the keychord for the other dmenu script bindings.
, ("M-S-<Return>", spawn "dmenu_run -i -p \"Run: \"") -- Dmenu
-- Launch Apps
, ("M-f", spawn "firefox")
, ("M-t", spawn "thunar")
, ("M-p", spawn "enpass")
--, ("M-e", spawn "emacs")
, ("M-e", spawn myEmacs)
, ("M-l", spawn "arcolinux-logout")
-- Useful programs to have a keybinding for launch
, ("M-<Return>", spawn (myTerminal))
--, ("M-b", spawn (myBrowser ++ " www.youtube.com/c/DistroTube/"))
--, ("M-M1-h", spawn (myTerminal ++ " -e htop"))
-- Kill windows
, ("M-S-c", kill1) -- Kill the currently focused client
--, ("M-S-a", killAll) -- Kill all windows on current workspace
-- Workspaces
--, ("M-.", nextScreen) -- Switch focus to next monitor
--, ("M-,", prevScreen) -- Switch focus to prev monitor
--, ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next ws
--, ("M-S-<KP_Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to prev ws
-- Floating windows
--, ("M-f", sendMessage (T.Toggle "floats")) -- Toggles my 'floats' layout
--, ("M-t", withFocused $ windows . W.sink) -- Push floating window back to tile
--, ("M-S-t", sinkAll) -- Push ALL floating windows to tile
-- Increase/decrease spacing (gaps)
--, ("M-d", decWindowSpacing 4) -- Decrease window spacing
--, ("M-i", incWindowSpacing 4) -- Increase window spacing
--, ("M-S-d", decScreenSpacing 4) -- Decrease screen spacing
--, ("M-S-i", incScreenSpacing 4) -- Increase screen spacing
-- Grid Select (CTR-g followed by a key)
, ("M-g g", spawnSelected' myAppGrid) -- grid select favorite apps
, ("M-g t", goToSelected $ mygridConfig myColorizer) -- goto selected window
--, ("C-g b", bringSelected $ mygridConfig myColorizer) -- bring selected window
-- Windows navigation
--, ("M-m", windows W.focusMaster) -- Move focus to the master window
, ("M-j", windows W.focusDown) -- Move focus to the next window
, ("M-k", windows W.focusUp) -- Move focus to the prev window
--, ("M-S-m", windows W.swapMaster) -- Swap the focused window and the master window
--, ("M-S-j", windows W.swapDown) -- Swap focused window with next window
--, ("M-S-k", windows W.swapUp) -- Swap focused window with prev window
--, ("M-<Backspace>", promote) -- Moves focused window to master, others maintain order
--, ("M-S-<Tab>", rotSlavesDown) -- Rotate all windows except master and keep focus in place
, ("M-C-<Tab>", rotAllDown) -- Rotate all the windows in the current stack
-- Layouts
--, ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout
--, ("M-C-M1-<Up>", sendMessage Arrange)
--, ("M-C-M1-<Down>", sendMessage DeArrange)
--, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
--, ("M-S-n", sendMessage $ MT.Toggle NOBORDERS) -- Toggles noborder
, ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
-- Increase/decrease windows in the master pane or the stack
--, ("M-S-<Up>", sendMessage (IncMasterN 1)) -- Increase # of clients master pane
--, ("M-S-<Down>", sendMessage (IncMasterN (-1))) -- Decrease # of clients master pane
--, ("M-C-<Up>", increaseLimit) -- Increase # of windows
--, ("M-C-<Down>", decreaseLimit) -- Decrease # of windows
-- Window resizing
--, ("M-h", sendMessage Shrink) -- Shrink horiz window width
--, ("M-l", sendMessage Expand) -- Expand horiz window width
--, ("M-M1-j", sendMessage MirrorShrink) -- Shrink vert window width
--, ("M-M1-k", sendMessage MirrorExpand) -- Expand vert window width
-- Sublayouts
-- This is used to push windows to tabbed sublayouts, or pull them out of it.
--, ("M-C-h", sendMessage $ pullGroup L)
--, ("M-C-l", sendMessage $ pullGroup R)
--, ("M-C-k", sendMessage $ pullGroup U)
--, ("M-C-j", sendMessage $ pullGroup D)
--, ("M-C-m", withFocused (sendMessage . MergeAll))
---- , ("M-C-u", withFocused (sendMessage . UnMerge))
--, ("M-C-/", withFocused (sendMessage . UnMergeAll))
--, ("M-C-.", onGroup W.focusUp') -- Switch focus to next tab
--, ("M-C-,", onGroup W.focusDown') -- Switch focus to prev tab
-- Scratchpads
-- Toggle show/hide these programs. They run on a hidden workspace.
-- When you toggle them to show, it brings them to your current workspace.
-- Toggle them to hide and it sends them back to hidden workspace (NSP).
--, ("C-s t", namedScratchpadAction myScratchPads "terminal")
--, ("C-s m", namedScratchpadAction myScratchPads "mocp")
--, ("C-s c", namedScratchpadAction myScratchPads "calculator")
-- Set wallpaper with 'feh'. Type 'SUPER+F1' to launch sxiv in the wallpapers directory.
-- Then in sxiv, type 'C-x w' to set the wallpaper that you choose.
--, ("M-<F1>", spawn "sxiv -r -q -t -o ~/wallpapers/*")
--, ("M-<F2>", spawn "/bin/ls ~/wallpapers | shuf -n 1 | xargs xwallpaper --stretch")
--, ("M-<F2>", spawn "feh --randomize --bg-fill ~/wallpapers/*")
-- Controls for mocp music player (SUPER-u followed by a key)
--, ("M-u p", spawn "mocp --play")
--, ("M-u l", spawn "mocp --next")
--, ("M-u h", spawn "mocp --previous")
--, ("M-u <Space>", spawn "mocp --toggle-pause")
-- Emacs (CTRL-e followed by a key)
-- , ("C-e e", spawn myEmacs) -- start emacs
--, ("C-e e", spawn (myEmacs ++ ("--eval '(dashboard-refresh-buffer)'"))) -- emacs dashboard
--, ("C-e b", spawn (myEmacs ++ ("--eval '(ibuffer)'"))) -- list buffers
--, ("C-e d", spawn (myEmacs ++ ("--eval '(dired nil)'"))) -- dired
--, ("C-e i", spawn (myEmacs ++ ("--eval '(erc)'"))) -- erc irc client
--, ("C-e m", spawn (myEmacs ++ ("--eval '(mu4e)'"))) -- mu4e email
--, ("C-e n", spawn (myEmacs ++ ("--eval '(elfeed)'"))) -- elfeed rss
--, ("C-e s", spawn (myEmacs ++ ("--eval '(eshell)'"))) -- eshell
--, ("C-e t", spawn (myEmacs ++ ("--eval '(mastodon)'"))) -- mastodon.el
---- , ("C-e v", spawn (myEmacs ++ ("--eval '(vterm nil)'"))) -- vterm if on GNU Emacs
--, ("C-e v", spawn (myEmacs ++ ("--eval '(+vterm/here nil)'"))) -- vterm if on Doom Emacs
---- , ("C-e w", spawn (myEmacs ++ ("--eval '(eww \"distrotube.com\")'"))) -- eww browser if on GNU Emacs
--, ("C-e w", spawn (myEmacs ++ ("--eval '(doom/window-maximize-buffer(eww \"distrotube.com\"))'"))) -- eww browser if on Doom Emacs
---- emms is an emacs audio player. I set it to auto start playing in a specific directory.
--, ("C-e a", spawn (myEmacs ++ ("--eval '(emms)' --eval '(emms-play-directory-tree \"~/Music/Non-Classical/70s-80s/\")'")))
-- Multimedia Keys
--, ("<XF86AudioPlay>", spawn (myTerminal ++ "mocp --play"))
--, ("<XF86AudioPrev>", spawn (myTerminal ++ "mocp --previous"))
--, ("<XF86AudioNext>", spawn (myTerminal ++ "mocp --next"))
--, ("<XF86AudioMute>", spawn "amixer set Master toggle")
, ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute")
, ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute")
--, ("<XF86HomePage>", spawn "firefox")
--, ("<XF86Search>", safeSpawn "firefox" ["https://www.duckduckgo.com/"])
--, ("<XF86Mail>", runOrRaise "thunderbird" (resource =? "thunderbird"))
--, ("<XF86Calculator>", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk"))
--, ("<XF86Eject>", spawn "toggleeject")
--, ("<Print>", spawn "scrotd 0")
]
-- The following lines are needed for named scratchpads.
where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP"))
nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "NSP"))
#+end_src
** Main
#+begin_src haskell :tangle ./xmonad.hs
main :: IO ()
main = do
-- Launching three instances of xmobar on their monitors.
-- xmproc0 <- spawnPipe "xmobar -x 0 $HOME/.config/xmobar/xmobarrc_desktop_qhd"
-- xmproc1 <- spawnPipe "xmobar -x 1 $HOME/.config/xmobar/xmobarrc_desktop_fhd"
xmproc0 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc_labtop_fhd"
-- the xmonad, ya know...what the WM is named after!
xmonad $ ewmh def
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageDocks
-- Run xmonad commands from command line with "xmonadctl command". Commands include:
-- shrink, expand, next-layout, default-layout, restart-wm, xterm, kill, refresh, run,
-- focus-up, focus-down, swap-up, swap-down, swap-master, sink, quit-wm. You can run
-- "xmonadctl 0" to generate full list of commands written to ~/.xsession-errors.
-- To compile xmonadctl: ghc -dynamic xmonadctl.hs
, handleEventHook = serverModeEventHookCmd
<+> serverModeEventHook
<+> serverModeEventHookF "XMONAD_PRINT" (io . putStrLn)
<+> docksEventHook
<+> fullscreenEventHook -- this does NOT work right if using multi-monitors!
, modMask = myModMask
, terminal = myTerminal
, startupHook = myStartupHook
, layoutHook = showWName' myShowWNameTheme $ myLayoutHook
, workspaces = myWorkspaces
, borderWidth = myBorderWidth
, normalBorderColor = myNormColor
, focusedBorderColor = myFocusColor
, logHook = dynamicLogWithPP $ namedScratchpadFilterOutWorkspacePP $ xmobarPP
-- the following variables beginning with 'pp' are settings for xmobar.
{ ppOutput = \x -> hPutStrLn xmproc0 x -- xmobar on monitor 1
-- >> hPutStrLn xmproc1 x -- xmobar on monitor 2
-- >> hPutStrLn xmproc2 x -- xmobar on monitor 3
, ppCurrent = xmobarColor "#FFFFFF" "" . wrap "●" "" -- Current workspace
, ppVisible = xmobarColor "#c0a79a" "" . wrap "♼" "" . clickable -- Visible but not current workspace
, ppHidden = xmobarColor "#c0a79a" "" . wrap "○" "" . clickable -- Hidden workspaces
, ppHiddenNoWindows = xmobarColor "#c792ea" "" . \s -> "" -- Hidden workspaces (no windows)
, ppTitle = xmobarColor "#b3afc2" "" . shorten 60 -- Title of active window
, ppSep = "<fc=#666666> <fn=1>|</fn> </fc>" -- Separator character
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
, ppExtras = [windowCount] -- # of windows current workspace
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t] -- order of things in xmobar
}
} `additionalKeysP` myKeys
#+end_src

3
.xprofile Normal file
View File

@ -0,0 +1,3 @@
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

30
.zshrc Normal file
View File

@ -0,0 +1,30 @@
export ZSH="/home/jaeus/.oh-my-zsh"
ZSH_THEME="random"
plugins=(git)
source $ZSH/oh-my-zsh.sh
prompt_context(){}
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
##WSL2
#VETHER_IP=$(/bin/grep nameserver /etc/resolv.conf 2> /dev/null | /bin/tr -s ' ' | /bin/cut -d' ' -f2)
#export DISPLAY=$VETHER_IP:10.0
#neovim to vi
alias vi=nvim
#pacman unlock
alias paruunlock="sudo rm /var/lib/pacman/db.lck"
#grub update
alias update-grub="sudo grub-mkconfig -o /boot/grub/grub.cfg"
#youtube-dl
alias ytv-best="youtube-dl -f bestvideo+bestaudio "
#gpg for future uses
#verify signature for isos
#alias gpg-check="gpg2 --keyserver-options auto-key-retrieve --verify"
#alias fix-gpg-check="gpg2 --keyserver-options auto-key-retrieve --verify"
#receive the key of a developer
#alias gpg-retrieve="gpg2 --keyserver-options auto-key-retrieve --receive-keys"
#alias fix-gpg-retrieve="gpg2 --keyserver-options auto-key-retrieve --receive-keys"
#alias fix-key="[ -d ~/.gnupg ] || mkdir ~/.gnupg ; cp /etc/pacman.d/gnupg/gpg.conf ~/.gnupg/ ; echo 'done'"
figlet -w 100 "JaeUs-Device"

950
Note/ArchLinux.org Normal file
View File

@ -0,0 +1,950 @@
#+TITLE: Arch Linux
* Linux
Archlinux Bare 기준
** Local Time
#+begin_src shell
timedatectl set-ntp true
timedatectl status
#+end_src
** Partition - UEFI
#+begin_src shell
fdisk -l # list
fdisk /dev/sda
#+end_src
g : Make GPT Partition
n : partition create
t : partition type change
create 2-3 partitions
partition 1 : +550M size / EFI System
partition 2 : rest size / Linux System
partition (optional swap) : memory size x 2
#+begin_src shell
## CAUTION !!
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkswap /dev/sda3
swapon /dev/sda2
#+end_src
** Base Linux Installation
#+begin_src shell
mount /dev/sda2 /mnt
pacstrap /mnt base linux linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab # generate filesystem table
arch-chroot /mnt
#+end_src
** TIMEZONE
#+begin_src shell
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
hwclock --systohc
pacman -S vim
vim /etc/locale.gen # uncomment us_EN.UTF-8 / ko_KR.UTF-8
locale-gen
#+end_src
** Host
#+begin_src shell
echo "JaeUs-ArchLinux" > /etc/hostname
vim /etc/hosts
#+end_src
#+begin_src conf
127.0.0.1 localhost
::1 localhost
127.0.0.1 JaeUs-ArchLinux.localdomain JaeUs-ArchLinux
#+end_src
** Add User
#+begin_src shell
passwd # make root password
useradd -m jaeus
passwd jaeus
usermod -aG wheel,audio,video,optical,storage jaeus
EDITOR=vim visudo # uncomment %wheel ALL=(ALL) ALL
#+end_src
** Grub
#+begin_src shell
pacman -S grub efibootmgr dosfstools os-prober mtools
mkdir /boot/EFI
mount /dev/sda1 /bootEFI
grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
grub-mkconfig -o /boot/grub/grub.cfg
#+end_src
** AUR Manager
#+begin_src shell
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
#+end_src
** Extra Stuff
#+begin_src shell
pacman -S networkmanager git
systemctl enable NetworkManager
exit
umount -l /mnt
reboot
#+end_src
** Neovim
#+begin_src shell
paru -S neovim xclip
#+end_src
** ZSH
#+begin_src shell
paru -S zsh oh-my-zsh-git zsh-syntax-highlighting zsh-autosuggestions
chsh -s /bin/zsh jaeus
/usr/share/oh-my-zsh/tools/install.sh
#+end_src
ZSH initial Config
#+begin_src conf
export ZSH="/home/jaeus/.oh-my-zsh"
ZSH_THEME="agnoster"
plugins=(git)
source $ZSH/oh-my-zsh.sh
prompt_context(){}
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
alias vi=nvim
#+end_src
** 한글 입력
#+begin_src shell
paru -S fcitx-hangul fcitx-configtool
#+end_src
#+begin_src shell :tangle ~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
#+end_src
** Alacritty
#+begin_src conf :tangle ~/.config/alacritty/alacritty.yml :mkdirp yes
env:
TERM: xterm-256color
window:
padding:
x: 6
y: 6
title: Alacritty
class:
instance: Alacritty
general: Alacritty
scrolling:
history: 10000
font:
normal:
family: Mononoki Nerd Font
style: Regular
bold:
family: Mononoki Nerd Font
style: Bold
italic:
family: Mononoki Nerd Font
style: Italic
bold_italic:
family: Mononoki Nerd Font
style: Bold Italic
# Point size
size: 11.0
offset:
x: 0
y: 1
draw_bold_text_with_bright_colors: true
colors:
primary:
background: '0x282c34'
foreground: '0xbbc2cf'
selection:
text: '0xbbc2cf'
normal:
black: '0x1c1f24'
red: '0xff6c6b'
green: '0x98be65'
yellow: '0xda8548'
blue: '0x51afef'
magenta: '0xc678dd'
cyan: '0x5699af'
white: '0x202328'
bright:
black: '0x5b6268'
red: '0xda8548'
green: '0x4db5bd'
yellow: '0xecbe7b'
blue: '0x3071db' # This is 2257a0 in Doom Emacs but I lightened it.
magenta: '0xa9a1e1'
cyan: '0x46d9ff'
white: '0xdfdfdf'
background_opacity: 0.9
key_bindings:
# (Windows, Linux, and BSD only)
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Plus, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt }
- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt }
#+end_src
** Login And WindowManager
#+begin_src shell
paru -S sddm xorg i3 i3status xss-lock
reboot
#+end_src
*** I3
#+begin_src conf :tangle ~/.config/i3/config :mkdirp yes
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
exec --no-startup-id picom -b --config ~/.config/i3/picom.conf
exec --no-startup-id dwall -s colony
exec --no-startup-id fcitx
exec --no-startup-id seafile-applet
exec --no-startup-id blueberry-tray
exec --no-startup-id volumeicon
exec --no-startup-id enpass
exec --no-startup-id green-tunnel -s
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+d exec --no-startup-id dmenu_run
# A more modern dmenu replacement is rofi:
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
}
#+end_src
*** PICOM
#+begin_src conf :tangle ~/.config/i3/picom.conf :mkdirp yes
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 7;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -7;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -7;
# Avoid drawing shadows on dock/panel windows. This option is deprecated,
# you should use the *wintypes* option in your config file instead.
#
# no-dock-shadow = false
# Don't draw shadows on drag-and-drop windows. This option is deprecated,
# you should use the *wintypes* option in your config file instead.
#
# no-dnd-shadow = false
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Do not paint shadows on shaped windows. Note shaped windows
# here means windows setting its shape through X Shape extension.
# Those using ARGB background is beyond our control.
# Deprecated, use
# shadow-exclude = 'bounding_shaped'
# or
# shadow-exclude = 'bounding_shaped && !rounded_corners'
# instead.
#
# shadow-ignore-shaped = ''
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g ?= 'Notify-osd'",
"name = 'Plank'",
"name = 'Docky'",
"name = 'Kupfer'",
"name = 'xfce4-notifyd'",
"name *= 'VLC'",
"name *= 'compton'",
"name *= 'Chromium'",
"name *= 'Chrome'",
"class_g = 'Firefox' && argb",
"class_g = 'Conky'",
"class_g = 'Kupfer'",
"class_g = 'Synapse'",
"class_g ?= 'Notify-osd'",
"class_g ?= 'Cairo-dock'",
"class_g = 'Cairo-clock'",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'",
"_GTK_FRAME_EXTENTS@:c",
];
# Add this one too for ...
# "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
# Add this one above to the list to have no shadow in Openbox menu
# "! name~=''",
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = false
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1;
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
# menu-opacity = 1.0
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should always be considered focused.
# focus-exclude = []
focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
opacity-rule = [ "80:class_g = 'Alacritty'" ];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ''
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = 'glx'
backend = "xrender";
# Enable/disable VSync. Set to false for transparency in VirtualBox.
# vsync = false
vsync = true
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Specify refresh rate of the screen. If not specified or 0, picom will
# try detecting this with X RandR extension.
#
# refresh-rate = 60
refresh-rate = 0
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
# boost performance. This should not be used with
# vsync drm/opengl/opengl-oml
# as they essentially does sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
#
# sw-opti =
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
# detect-transient is enabled, too.
#
# detect-client-leader = false
detect-client-leader = true
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
# in the source tree for examples.
#
# glx-fshader-win = ''
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = '~/.config/compton.log'
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = '/path/to/your/log/file'
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.9; focus = true; full-shadow = false; };
dock = { shadow = false; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.9; }
dropdown_menu = { opacity = 0.9; }
};
#+end_src
** Audio related.
*** PulseAudio
#+begin_src shell
paru -S pulseaudio pavucontrol-qt volumeicon
#+end_src
volumeicon은 i3config에 추가
volumeicon을 이용해 pavucontrol-qt연결.
*** Bluetooth
#+begin_src shell
paru -S blueberry pulseaudio-bluetooth
sudo systemctl enable bluetooth
#+end_src
Tray는 i3config에 추가.
** Dynamic Wallpaper
#+begin_src shell
paru -S xorg-xrandr feh cronie
cd ~
git clone https://github.com/adi1090x/dynamic-wallpaper.git
cd dynamic-wallpaper
chmod +x install.sh
./install.sh
#+end_src
i3에 추가.
** Enpass
#+begin_src shell
paru -S enpass
#+end_src
** Seafile-client
#+begin_src shell
paru -S seafile-client
#+end_src
** Green-tunnel
proxy redirect
#+begin_src shell
sudo npm install -g green-tunnel
#+end_src
** Fonts
#+begin_src shell
paru -S ttf-fira-code ttf-nanum nerd-fonts-mononoki
#+end_src
** FileManager
*** TODO smb연동하는법 까먹음.
#+begin_src shell
paru -S thunar thunar-volman thunar-shares-plugin gvfs gvfs-smb sshfs
#+end_src
** MPV
#+begin_src shell
paru -S mpv
#+end_src
** Virtual Desktop
*** QEMU
#+begin_src shell
paru -S qemu qemu-arch-extra ovmf bridge-utils dnsmasq vde2 openbsd-netcat ebtables iptables
systemctl enable libvirtd
systemctl start libvirtd
#+end_src
- ovmf helps to do the UEFI Bios and Secure Boot setups.
- bridge-utils for network bridge needed for VMs
- vde2 for QEMU distributed ethernet emulation
- dnsmasq the DNS forwarder and DHCP server
- openbsd-netcat network testing tool (Optional)
- ebtables and iptables to create packet routing and firewalls
#+begin_src shell
paru -S virt-manager virt-viewer
#+end_src
#+begin_src shell
# Enable Auto-Start of the Service
# optional
# sudo systemctl enable libvirtd.service
# Start the Service Right now
sudo systemctl start libvirtd.service
#+end_src

89
Note/HyperV.org Normal file
View File

@ -0,0 +1,89 @@
#+TITLE: Hyper V
ArcoLinux B Xmonad 기반으로 작성되었음.
https://wiki.archlinux.org/index.php/Hyper-V : Arch Wiki 참고
Window Manager(Xmonad)와 Emacs구동이 목적임.
* Hyper V enable
Windows Home에서 기능 추가
#+begin_src shell
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
#+end_src
Appwiz.cpl에서 enable 또는 다음 커멘드 입력.
#+begin_src shell
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
#+end_src
* 가상머신 생성
1. Hyper-V 2세대
2. 보안부팅 해제
3. Arcolinux 설치 및 업데이트
* 모니터 해상도
/etc/default/grub에서
GRUB_CMDLINE_LINUX_DEFAULT에 "splash video=hyperv_fb:1920x1080"
update-grub
* AUR Manager의 설치(Paru)
#+begin_src shell
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
#+end_src
* Hyper-V Extension
#+begin_src shell
paru -S hyperv
sudo systemctl enable hv_fcopy_daemon.service
sudo systemctl enable hv_kvp_daemon.service
sudo systemctl enable hv_vss_daemon.service
#+end_src
* 공유폴더 기능
윈도우에서 로컬계정을 추가하여 공유폴더 설정, 폴더권한을 추가한다.
CIFS 네트워크 공유방법이다.
#+begin_src shell
mkdir -p /mnt/HV
sudo mount -t cifs //192.168.0.10/d /mnt/HV -o username=HV-User
#+end_src
자동 마운트를 위해
/etc/fstab에 다음 내용 추가
#+begin_src unix-conf
//SERVER/sharename /mnt/mountpoint cifs _netdev,nofail,username=myuser,password=mypass 0 0
#+end_src
* 고급 세션기능
#+begin_src shell
git clone https://github.com/Microsoft/linux-vm-tools
cd linux-vm-tools/arch
./makepkg.sh
sudo ./install-config.sh
#+end_src
이러면 RDP가 활성화 되는데, RDP를 이용하여 접속을 해야만 고급세션기능이 활성화 된다.
마우스 반응 속도 및 클립보드 공유기능이 사용가능하다.
일단 접속방식을 소켓으로 변경한다.
powershell에서 다음을 입력한다.
#+begin_src shell
Set-VM -VMName Arch-HV -EnhancedSessionTransportType HvSocket
#+end_src
그리고 xrdp 로그인시, xinitrc로 초기화 되므로 윈도우 메니저 진입점을 설정한다.
** XMONAD
TODO: 내용 추가 바람. 기존에 EXWM으로 해봣었음.
** EXWM 사용시
#+begin_src unix-conf
exec dbus-launch --exit-with-session emacs -mm -debug-init
#+end_src
* Emacs 설치
Emacs.org의 내용을 참고

267
Note/Linux.org Normal file
View File

@ -0,0 +1,267 @@
#+TITLE: Linux
* Linux 초기설정 정리
Arcolinux-xmonad 기준
** Init
mirrorlist to korea
#+begin_src shell
pacman -Syu
#+end_src
** AUR Manager
#+begin_src shell
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
#+end_src
** GIT
#+begin_src shell
git config --global user.name "JaeYoo-Im"
git config --global user.email "cpu3792@gmail.com"
#+end_src
** ZSH
*** Install
#+begin_src shell
paru -S zsh oh-my-zsh-git zsh-syntax-highlighting zsh-autosuggestions
chsh -s /usr/bin/zsh jaeus
/usr/share/oh-my-zsh/tools/install.sh
#+end_src
*** modifiy zshrc
theme to (agnoster or random)
after =source $ZSH/oh-my-zsh.sh=
#+begin_src shell
prompt_context(){}
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
#+end_src
** TMUX
#+begin_src shell
paru -S tmux
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
#+end_src
Configuration(~/.tmux.conf)
#+begin_src shell :tangle ./.tmux.conf
set -g default-terminal "screen-256color"
set -g mouse on
# utf8 is on
# set -g utf8 on
# set -g status-utf8 on
# address vim mode switching delay (http://superuser.com/a/252717/65504)
set -s escape-time 0
# scrollback buffer size increase
set -g history-limit 100000
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm'
#+end_src
.tmux.conf파일을 위치시킨 후에.
#+begin_src shell
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/scripts/install_plugins.sh
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/bin/update_plugins all
#+end_src
tmux를 항시 실행하기 위해 .zshrc에 다음 내용 추가
#+begin_src shell
printf "if command -v tmux &> /dev/null && [ -z \"\$TMUX\" ]; then\ntmux\n fi\n" >> ~/.zshrc
#+end_src
** Fonts
#+begin_src shell
paru -S ttf-fira-code ttf-nanum nerd-fonts-mononoki
#+end_src
** 한글 입력문제
#+begin_src shell
paru -S fcitx-hangul fcitx-configtool
#+end_src
in ~/.profile
#+begin_src shell
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
#+end_src
in ~/.xmonad/scripts/autostart.sh
#+begin_src shell
run fcitx &
#+end_src
** Enpass
#+begin_src shell
paru -S enpass
#+end_src
in ~/.xmonad/scripts/autostart.sh
#+begin_src shell
run enpass &
#+end_src
** EMACS
*** Install
#+begin_src shell
paru -S ripgrep emacs
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom -y install
echo "alias doomsync=\"~/.emacs.d/bin/doom sync\"" >> ~/.zshrc
#+end_src
Latex 지원
#+begin_src shell
paru -S auctex texlive-most texlive-lang
#+end_src
in ~/.xmonad/scripts/autostart.sh
#+begin_src shell
run emacs --daemon
#+end_src
** Libre-office
Libre-office를 깔면 Emacs에서도 그 파일이 열림.
#+begin_src shell
paru -S libreoffice
#+end_src
** Alacritty
*** Install
#+begin_src shell
paru -S alacritty
#+end_src
*** Configuration
#+begin_src shell :tangle ~/.config/alacritty/alacritty.yml :mkdirp yes
env:
TERM: xterm-256color
window:
padding:
x: 6
y: 6
title: Alacritty
class:
instance: Alacritty
general: Alacritty
scrolling:
history: 10000
font:
normal:
family: Mononoki Nerd Font
style: Regular
bold:
family: Mononoki Nerd Font
style: Bold
italic:
family: Mononoki Nerd Font
style: Italic
bold_italic:
family: Mononoki Nerd Font
style: Bold Italic
# Point size
size: 11.0
offset:
x: 0
y: 1
draw_bold_text_with_bright_colors: true
colors:
primary:
background: '0x282c34'
foreground: '0xbbc2cf'
selection:
text: '0xbbc2cf'
normal:
black: '0x1c1f24'
red: '0xff6c6b'
green: '0x98be65'
yellow: '0xda8548'
blue: '0x51afef'
magenta: '0xc678dd'
cyan: '0x5699af'
white: '0x202328'
bright:
black: '0x5b6268'
red: '0xda8548'
green: '0x4db5bd'
yellow: '0xecbe7b'
blue: '0x3071db' # This is 2257a0 in Doom Emacs but I lightened it.
magenta: '0xa9a1e1'
cyan: '0x46d9ff'
white: '0xdfdfdf'
background_opacity: 0.9
key_bindings:
# (Windows, Linux, and BSD only)
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Plus, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt }
- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt }
#+end_src
** Green-tunnel
proxy redirect
#+begin_src shell
npm install green-tunnel
#+end_src
* Proxy
#+begin_src shell
export proxy_addr="http://192.168.1.168:3128"
#+end_src
** Global
#+begin_src shell
echo export http_proxy=$proxy_addr >> ~/.zshrc
echo export HTTP_PROXY=$proxy_addr >> ~/.zshrc
echo export https_proxy=$proxy_addr >> ~/.zshrc
echo export HTTPS_PROXY=$proxy_addr >> ~/.zshrc
echo export ftp_proxy=$proxy_addr >> ~/.zshrc
echo export FTP_PROXY=$proxy_addr >> ~/.zshrc
echo export rsync_proxy=$proxy_addr >> ~/.zshrc
echo export RSYNC_PROXY=$proxy_addr >> ~/.zshrc
#+end_src
Sudo 명령어에 proxy 환경변수 통과
#+begin_src shell
echo "Defaults env_keep += \"*_proxy *_PROXY\"" > ./05_proxy
sudo mv 05_proxy /etc/sudoers.d
sudo chown root:root /etc/sudoers.d/05_proxy
#+end_src
가끔 PGP키를 못받을때
#+begin_src shell
sudo killall dirmngr
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 \
--keyserver-options "timeout=40 http-proxy=$http_proxy" \
--recv-keys B0F4253373F8F6F510D42178520A9993A1C052F8
#+end_src
** Git
#+begin_src shell
git config --global http.proxy $proxy_addr
git config --global https.proxy $proxy_addr
#+end_src

225
Note/WSL.org Normal file
View File

@ -0,0 +1,225 @@
#+TITLE: Wsl
Arch 리눅스 기반으로 작성되었음.
WSL1 기반임. WSL2는 네트워크가 불안정해보임.
* WSL Installation (Powershell)
** Windows Function Enable
Windows Function enable ()
#+begin_src shell
# WSL
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# Windows Sandbox (optional)
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online
#+end_src
** Download and Installation
#+begin_src shell
$Arch_instDir = "c:/Archlinux"
mkdir -p $Arch_instDir
pushd $Arch_instDir
wget https://github.com/yuk7/ArchWSL/releases/latest/download/Arch.zip -OutFile Arch.zip
unzip ./Arch.zip
./Arch.exe
#+end_src
** Terminal Emulator Installation
*** Installation
vcxsrv는 X windows 기반 앱사용시 설치.
#+begin_src shell
choco install wsltty vcxsrv -y
pushd 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs'
& '.\WSL Generate Shortcuts.lnk'
popd
#+end_src
시작 폴더 =shell:startup= 에 다음의 config.xlaunch 넣으면 좋은듯?
#+begin_src shell
cp $HOME/.dotfiles/Note/WSL/config.xlaunch $HOME/AppData/Roaming/Microsoft/Windows/"Start Menu"/Programs/Startup/
#+end_src
*** Icon Change
[[file:./images/screenshot-02.png]]
#+begin_src shell
$Shell = New-Object -ComObject ("WScript.Shell")
$ShortcutPath = [Environment]::GetFolderPath("Desktop") + "/WSL Terminal.lnk"
$Shortcut = $Shell.CreateShortcut($ShortcutPath);
$Shortcut.IconLocation = "$Arch_instDir/arch.exe, 0"
$Shortcut.Save()
#+end_src
*** Add Context Menu
[[file:./images/screenshot-03.png]]
#+begin_src shell
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\wsltty" /t REG_SZ /d "Open in WSLtty..." /f
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\wsltty" /v Icon /t REG_SZ /d "$Arch_instDir/arch.exe" /f
$mintty_cmd = $HOME + "\AppData\Local\wsltty\bin\mintty.exe --WSL= --configdir=" + $HOME + "\AppData\Roaming\wsltty"
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\wsltty\Command" /t REG_SZ /d $mintty_cmd /f
#+end_src
*** Minttyrc
wsltty는 mintty기반이므로 .minttyrc의 설정값을 따른다.
=$HOME= Directory에 위치시키자
#+begin_src shell
cp $HOME/.dotfiles/.minttyrc $HOME/
#+end_src
* WSL Initialization (in WSL)
** Locale
#+begin_src shell
echo ko_KR.UTF-8 UTF-8 >> /etc/locale.gen
locale-gen
echo LANG=ko_KR.UTF-8 > /etc/locale.conf
echo [network] > /etc/wsl.conf
echo generateHosts = false >> /etc/wsl.conf
pacman-key --init
pacman-key --populate archlinux
#+end_src
** Pacman Mirror List
WSL1 glibc-2-33-4 이슈가 있음. 마이크로소프트의 WSL1 커널 업데이트를 기대하기 힘든 상황이므로 WSL2를 사용하던지 Update Repo를 2월 14일자로 고정해 놓고 glibc를 업데이트 하면 glibc-2-33-3으로 업데이트됨.
#+begin_src shell
echo "Server = https://archive.archlinux.org/repos/2021/02/14/\$repo/os/\$arch" > etc/pacman.d/mirrorlist
pacman -Sy archlinux-keyring
pacman -S glibc
#+end_src
그후 =/etc/pacman.conf= 의 IgnorePkg에 glibc 추가하여 업데이트가 진행되지 않도록 한후 mirrorlist를 최신으로 돌림.
#+begin_src config
IgnorePkg = fakeroot glibc
#+end_src
한국 서버 우선.
#+begin_src shell
echo "Server = http://ftp.harukasan.org/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist
echo "Server = https://ftp.harukasan.org/archlinux/\$repo/os/\$arch" >> /etc/pacman.d/mirrorlist
echo "Server = http://ftp.lanet.kr/archlinux/\$repo/os/\$arch" >> /etc/pacman.d/mirrorlist
echo "Server = https://ftp.lanet.kr/archlinux/\$repo/os/\$arch" >> /etc/pacman.d/mirrorlist
echo "Server = http://mirror.premi.st/archlinux/\$repo/os/\$arch" >> /etc/pacman.d/mirrorlist
pacman -Syu man wget
#+end_src
** User Addition
#+begin_src shell
EDITOR=vim visudo # uncomment %wheel ALL=(ALL) ALL
useradd -m -g users -G wheel -s /bin/bash jaeus
passwd jaeus
#+end_src
Arch.exe 실행파일 있는곳에서 실행. (in powershell)
#+begin_src shell
./arch.exe config --default-user jaeus
#+end_src
** Git
#+begin_src shell
sudo pacman -S git
git config --global user.name "JaeYoo,Im"
git config --global user.email "cpu3792@gmail.com"
#+end_src
** Paru (AUR Manager)
WSL1에서는 fakeroot-tcp를 사용해야 한다.
#+begin_src shell
sudo pacman -S base-devel # don't install fakeroot
cd ~
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
#+end_src
** Application
#+begin_src shell
paru -S openssh python inetutils
#+end_src
*** Copy Configuration
#+begin_src shell
paru -S stow
rm ~/.zshrc
rm ~/.bashrc
git clone https://github.com/JaeYoo-Im/myDots.git ~/.dotfiles
cd ~/.dotfiles
stow .
#+end_src
*** ZSH
#+begin_src shell
paru -S zsh oh-my-zsh-git zsh-syntax-highlighting zsh-autosuggestions
chsh -s /bin/zsh jaeus
/usr/share/oh-my-zsh/tools/install.sh
mv ~/.zshrc.* ~/.zshrc # overwrite configuration
#+end_src
*** TMUX
#+begin_src shell
paru -S tmux
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/scripts/install_plugins.sh
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/bin/update_plugins all
#+end_src
*** EMACS
GUI를 사용하기 위해 DISPLAY환경변수 추가.
#+begin_src shell
paru -S ripgrep emacs ttf-fira-code ttf-nanum
# WSL1
#echo export DISPLAY=:10.0 >> ~/.zshrc
# WSL2
VETHER_IP=$(/bin/grep nameserver /etc/resolv.conf 2> /dev/null | /bin/tr -s ' ' | /bin/cut -d' ' -f2)
export DISPLAY=$VETHER_IP:0.0
#+end_src
Latex 지원
#+begin_src shell
paru -S auctex texlive-most texlive-lang
#+end_src
Emacs Windows shortcut
=c:\windows\system32\bash.exe= 를 이용하며,
실행시 cmd창이 자꾸 뜨기 때문에 runs.exe프로그램을 이용한다.
in wsl.
#+begin_src shell
cp ~/.dotfiles/Note/WSL/run_emacs.sh ~/.run_emacs.sh
#+end_src
in Powershell.
#+begin_src shell
unzip $HOME/.dotfiles/Note/WSL/usr_cmd.zip -d $HOME/usr_cmd
#+end_src
[[./WSL/usr_cmd.zip]] 파일의 내용을 Windows의 =$HOME/usr_cmd= 에 넣는다.
*** Libre-office
Libre-office를 깔면 Emacs에서도 그 파일이 열림.
#+begin_src shell
paru -S libreoffice
#+end_src
* Proxy
#+begin_src shell
export proxy_addr="http://192.168.1.168:3128"
#+end_src
** Global
#+begin_src shell
echo export http_proxy=$proxy_addr >> ~/.zshrc
echo export HTTP_PROXY=$proxy_addr >> ~/.zshrc
echo export https_proxy=$proxy_addr >> ~/.zshrc
echo export HTTPS_PROXY=$proxy_addr >> ~/.zshrc
echo export ftp_proxy=$proxy_addr >> ~/.zshrc
echo export FTP_PROXY=$proxy_addr >> ~/.zshrc
echo export rsync_proxy=$proxy_addr >> ~/.zshrc
echo export RSYNC_PROXY=$proxy_addr >> ~/.zshrc
#+end_src
Sudo 명령어에 proxy 환경변수 통과
#+begin_src shell
echo "Defaults env_keep += \"*_proxy *_PROXY\"" > ./05_proxy
sudo mv 05_proxy /etc/sudoers.d
sudo chown root:root /etc/sudoers.d/05_proxy
#+end_src
** Git
#+begin_src shell
git config --global http.proxy $proxy_addr
git config --global https.proxy $proxy_addr
#+end_src

2
Note/WSL/config.xlaunch Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="10" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="True" ExtraParams="" Wgl="True" DisableAC="True" XDMCPTerminate="False"/>

8
Note/WSL/run_emacs.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
VETHER_IP=$(/bin/grep nameserver /etc/resolv.conf 2> /dev/null | /bin/tr -s ' ' | /bin/cut -d' ' -f2)
export DISPLAY=$VETHER_IP:10.0
emacs
disown
exit

BIN
Note/WSL/usr_cmd.zip Executable file

Binary file not shown.

275
Note/WindowEnv.org Normal file
View File

@ -0,0 +1,275 @@
#+TITLE: Window Env
* Windows Environment
모든 명령어는 Powershell에서 수행된다.
** 사전준비
*** 환경변수
#+begin_src shell
$git_username = "JaeYoo-Im"
$git_email = "cpu3792@gmail.com"
#+end_src
*** CapsLock키 비활성화
#+begin_src shell
# Change KeyMap (Capslock to ctrl key)
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v "Scancode Map" /t REG_BINARY /d 0000000000000000020000001d003a0000000000 /f
#+end_src
*** Chocolatey 설치
#+begin_src shell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
#+end_src
** Application
*** Base Apps
#+begin_src shell
choco install firefox -y
choco install git -y
choco install git-fork -y
choco install dejavufonts -y
choco install firacode -y
choco install enpass.install -y
#+end_src
windows에서 기본으로 제공하는 openssh는 proxycommand등의 기능이 지원되지 않는다.
삭제후 Git을 설치하면 같이 설치되는 ssh를 사용한다.
[[./images/screenshot-04.png]]
[[./images/screenshot-05.png]]
개인적으로 =%HOME%/usr_cmd= 를 환경변수에 추가하여 스크립트들을 넣어 사용한다.
#+begin_src shell
[Environment]::SetEnvironmentVariable("HOME", $HOME, "Machine")
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";" + $HOME + "\usr_cmd;c:\Program Files\Git\bin;c:\Program Files\Git\usr\bin", "Machine")
$env:Path = [Environment]::GetEnvironmentVariable("Path", "Machine")
git config --global user.name $git_username
git config --global user.email $git_email
git clone https://github.com/JaeYoo-Im/myDots.git $HOME/.dotfiles
#+end_src
*** Neovim
#+begin_src shell
choco install neovim -y
choco install ctags -y
cp -r $HOME/.dotfiles/.config/nvim $HOME/AppData/Local
#+end_src
Context 메뉴 추가
[[./images/screenshot-06.png]]
#+begin_src shell
# Edit with neovim context menu
reg add HKEY_CLASSES_ROOT\*\shell\NeoVim /t REG_SZ /d "Edit with NeoVim..." /f
reg add HKEY_CLASSES_ROOT\*\shell\NeoVim /v Icon /t REG_SZ /d "C:\tools\neovim\Neovim\bin\nvim-qt.exe" /f
reg add HKEY_CLASSES_ROOT\*\shell\NeoVim\Command /t REG_SZ /d "C:\tools\neovim\Neovim\bin\nvim-qt.exe """"%1""""" /f
#+end_src
Plugin Manager 설치
#+begin_src shell
md ~\AppData\Local\nvim\autoload
$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
(New-Object Net.WebClient).DownloadFile(
$uri,
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath(
"~\AppData\Local\nvim\autoload\plug.vim"
)
)
#+end_src
*** Networking
#+begin_src shell
choco install angryip -y
choco install wireshark -y
choco install putty.install -y
#+end_src
*** Media
#+begin_src shell
choco install handbrake.install -y
choco install potplayer -y
choco install reaper -y
choco install gimp -y
choco install inkscape -y
#choco install blender -y
#+end_src
*** Gaming
#+begin_src shell
choco install goggalaxy -y
choco install msiafterburner -y
choco install steam -y
choco install epicgameslauncher -y
choco install discord -y
#+end_src
*** Programming
#+begin_src shell
choco install visualstudio2019buildtools -y
#+end_src
**** Clang
#+begin_src shell
choco install llvm -y
choco install cmake -y
#+end_src
**** Rust
Rust는 build tools 설치후 진행.
#+begin_src shell
wget https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe -OutFile rustup-init.exe
./rustup-init.exe
$env:Path += ";$HOME/.cargo/bin"
rustup component add rls
rustup component add rust-src
rustup component add rust-analysis
rm ./rustup-init.exe
#+end_src
**** Python Packages
#+begin_src shell
choco install python -y
$env:Path += ";C:/Python39/Scripts"
python -m pip install --upgrade pip
#pip install wheel
#pip install six
#pip uninstall pygls
#pip install pygls==0.9.1 # hdl_checker dependency
#pip install hdl_checker #neovim / modelsim 연동
pip install numpy
pip install matplotlib
#+end_src
**** Julia
#+begin_src shell
choco install julia atom -y
#+end_src
***** Package Install
Julia 실행후
#+begin_src julia
] #package 관리자 진입
add Plots
add FFTW
#+end_src
***** ATOM
=Ctrl+,= 입력하여 설정창 띄운후 uber-juno 설치.
*** Latex
예전에 사용하던 방법인데 남겨놓는다. 최근에는 WSL의 EMACS에서 AUCTEX를 이용해서 사용하고자 하고 있음.
**** Texlive 사용방법
#+begin_src shell
wget http://mirror.navercorp.com/CTAN/systems/texlive/Images/texlive.iso -OutFile texlive.iso
$image_path = (Get-Location).path + "\texlive.iso"
$mountResult = Mount-DiskImage -ImagePath $image_path -PassThru
$driveLetter = ($mountResult | Get-Volume).DriveLetter + ":"
Push-Location $driveLetter
.\install-tl-windows.bat
Pop-Location
Dismount-DiskImage -ImagePath $image_path
choco install texstudio -y
rm ./texlive.iso
#+end_src
Context Menu
#+begin_src shell
reg add "HKEY_CLASSES_ROOT\tex File\shell\pdfLatex" /t REG_SZ /d "Generate PDF..." /f
$texlive_context_cmd = $texlive_inst_dir + "/bin/win32/pdflatex.exe -synctex=1 -interaction=nonstopmode ""%1"""
reg add "HKEY_CLASSES_ROOT\tex File\shell\pdfLatex\Command" /t REG_SZ /d $texlive_context_cmd /f
#+end_src
**** Miktex 사용방법
#+begin_src shell
choco install miktex -y
choco install texmaker -y
choco install graphviz -y
choco install gnuplot -y
#+end_src
*** Others
#+begin_src shell
choco install bandizip -y
choco install everything -y
choco install sumatrapdf.install -y
choco install filezilla -y
choco install transgui -y
choco install honeyview -y
choco install rufus -y
choco install pdfsam.install -y
choco install dotnetcore-sdk -y
choco install powertoys -y
#+end_src
* Proxy
프록시를 이용하여 특정앱을 업데이트하거나 특정앱의 인터넷접속을 할때 쓰던 방식이다.
환경변수는 아래와 같다.
#+begin_src shell
$proxy_addr = "192.168.1.168:3128"
#+end_src
** Global Proxy
앞서 usr_cmd를 환경변수에 추가하였기에 여기에 =proxy.bat= 파일을 생성하여 =Win-R= 실행창에서 빠르게 프록시를 켜고 끌수 있게 하였다.
1. Proxy 0 프록시 끄기
2. Proxy 1 프록시 켜기
#+begin_src shell
$proxy_bat_file = $HOME + "\usr_cmd\proxy.bat"
Add-Content -Path $proxy_bat_file -Value ("set PROXY_ADDR=" + $proxy_addr)
Add-Content -Path $proxy_bat_file -Value (Get-Content "./proxy_base.txt")
#+end_src
여기서 proxy_base.txt 파일의 내용은 다음과 같다.
이상하게 Internet Explorer를 켜고 꺼야 적용이 되더라.
#+begin_src shell
@echo off
taskkill /IM iexplore.exe
set argc=0
for %%x in (%*) do Set /A argc+=1
echo argc : %argc%
if %argc% == 1 goto START_BAT
echo Argument is needed.
goto END_BAT
:START_BAT
if /i %1 == 0 goto DISABLE
goto ENABLE
goto DISABLE
:ENABLE
@%SystemRoot%\system32\reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d %PROXY_ADDR% /f
@%SystemRoot%\system32\reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
start iexplore.exe
sleep 2
taskkill /IM iexplore.exe
goto END_BAT
:DISABLE
@%SystemRoot%\system32\reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d 0.0.0.0:80 /f
@%SystemRoot%\system32\reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
start iexplore.exe
sleep 2
taskkill /IM iexplore.exe
goto END_BAT
:END_BAT
#+end_src
** Chocolatey
#+begin_src shell
choco config set proxy http://$proxy_addr
#+end_src
** Git
#+begin_src shell
git config --global http.proxy http://$proxy_addr
git config --global https.proxy https://$proxy_addr
#+end_src
** Powershell에서 임시 활성화
#+begin_src shell
$proxy='http://'+$proxy_addr
$ENV:HTTP_PROXY=$proxy
$ENV:HTTPS_PROXY=$proxy
#+end_src

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
Note/images/screenshot-04.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
Note/images/screenshot-05.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
Note/images/screenshot-06.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

66
Note/virtmanager.org Normal file
View File

@ -0,0 +1,66 @@
#+TITLE: Virt-Manager Configuration
* Installation
#+begin_src shell
#+end_src
* Config
** =/etc/libvirt/libvirtd.conf=
sudo vim /etc/libvirt/libvirtd.conf
find each of these in the file, or add them if they are not there:
#unix_sock_group = "libvirt"
#unix_sock_rw_perms = "0770"
#log_filters="1:qemu"
#log_outputs="1:file:/var/log/libvirt/libvirtd.log"
change to:
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
log_filters="1:qemu"
log_outputs="1:file:/var/log/libvirt/libvirtd.log"
if it is not in the file, simply add it. If it is not commented out with #, then just leave it as it is and exit the file.
Now run the following commands:
sudo usermod -a -G libvirt $(whoami)
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
** QEMU configuration
edit:
sudo nano /etc/libvirt/qemu.conf
find:
#user = "root"
#group = "root"
change to:
user = "YOUR USERNAME"
group = "YOUR USERNAME"
Restart Libvirt:
sudo systemctl restart libvirtd
sudo usermod -a -G kvm "YOUR USERNAME"
sudo usermod -a -G libvirt "YOUR USERNAME"
** Network Default Switch
sudo virsh net-autostart default
sudo virsh net-start default
** 성능향상팁
drive는 raw, virtio, cache 모드는 writeback
network => virtio

View File

@ -1 +0,0 @@
First Init

View File

@ -0,0 +1,23 @@
#!/bin/sh
echo "===================================="
echo "Share Directory Mount?(y/N)?"
echo ${whoami}
read val
if [ "${val}" == "" ]; then
val="N"
fi
if [ "${val}" == "y" ];then
echo "address(ex://192.168.1.144/d)?"
read addr
echo "user(ex:JaeUs-HV)?"
read user
echo "password?"
read pass
echo "mount point(ex:/home/jaeus/mnt)?"
read mpoint
sudo echo "${addr} ${mpoint} cifs _netdev,nofail,username=${user},password=${pass},uid=jaeus,gid=jaeus 0 0" >> /etc/fstab
fi

View File

@ -0,0 +1,56 @@
#!/bin/sh
sudo pacman -S betterlockscreen
sudo pacman -Syu --noconfirm
git clone https://github.com/JaeYoo-Im/myDots ~/.dotfiles
paru -S stow zsh-autosuggestions-git alacritty trayer --noconfirm
/usr/share/oh-my-zsh/tools/install.sh
rm ~/.zshrc ~/.bashrc ~/.xmonad/xmonad.hs
cd ~/.dotfiles
stow .
# neovim
paru -S neovim --noconfirm
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
nvim +PlugInstall +q +q
# git config
git config --global user.name "JaeYoo-Im"
git config --global user.email "cpu3792@gmail.com"
# tmux
paru -S tmux --noconfirm
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/scripts/install_plugins.sh
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/bin/update_plugins all
# Dynamic wallpaper
paru -S cronie --noconfirm
git clone https://github.com/adi1090x/dynamic-wallpaper.git ~/dynamic-wallpaper
cd dynamic-wallpaper
./install.sh
# font
paru -S ttf-fira-code ttf-nanum nerd-fonts-mononoki --noconfirm
# hangul
paru -S fcitx-hangul fcitx-configtool --noconfirm
# enpass
paru -S enpass --noconfirm
paru -S green-tunnel --noconfirm
#emacs
paru -S ripgrep emacs --noconfirm
paru -S auctex texlive-most texlive-lang --noconfirm
#seafile
paru -S seadrive-gui --noconfirm
# etc
paru -S figlet --noconfirm

15
scripts/init_script_hyperv.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
paru -S hyperv --noconfirm
sudo systemctl enable hv_fcopy_daemon.service
sudo systemctl enable hv_kvp_daemon.service
sudo systemctl enable hv_vss_daemon.service
git clone https://github.com/Microsoft/linux-vm-tools
cd linux-vm-tools/arch
./makepkg.sh
sudo ./install-config.sh
echo "type ""Set-VM -VMName Arch-HV -EnhancedSessionTransportType HvSocket"" in powershell"
echo xmonad >> ~/.xinitrc

39
scripts/set_proxy.sh Executable file
View File

@ -0,0 +1,39 @@
echo "===================================="
echo "Proxy Setting enable(y/N)?"
read val
if [ "${val}" == "" ]; then
echo $val
fi
if [ "${val}" == "y" ];then
echo "address(ex:192.168.1.168)?"
read ip
echo "port(ex:3128)"
read port
proxy_addr="http://${ip}:${port}"
echo proxy address is $proxy_addr
# zsh
echo export http_proxy=$proxy_addr >> ~/.zshrc
echo export HTTP_PROXY=$proxy_addr >> ~/.zshrc
echo export https_proxy=$proxy_addr >> ~/.zshrc
echo export HTTPS_PROXY=$proxy_addr >> ~/.zshrc
echo export ftp_proxy=$proxy_addr >> ~/.zshrc
echo export FTP_PROXY=$proxy_addr >> ~/.zshrc
echo export rsync_proxy=$proxy_addr >> ~/.zshrc
echo export RSYNC_PROXY=$proxy_addr >> ~/.zshrc
#sudo
echo "Defaults env_keep += \"*_proxy *_PROXY\"" > ./05_proxy
sudo mv 05_proxy /etc/sudoers.d
sudo chown root:root /etc/sudoers.d/05_proxy
#git
git config --global http.proxy $proxy_addr
git config --global https.proxy $proxy_addr
fi