diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..b26aa2a --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -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 } diff --git a/.config/nvim/Vim.org b/.config/nvim/Vim.org new file mode 100644 index 0000000..9918ff6 --- /dev/null +++ b/.config/nvim/Vim.org @@ -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 :NERDTreeToggle +#+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 +변경점들을 하이라이트 해서 보여줌. == 키로 하이라이트 토글 가능. +#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes +"""""""""""""""""""""""""""""""""""""""""""""""""" +" Git Gutter +"""""""""""""""""""""""""""""""""""""""""""""""""" +let g:gitgutter_highlight_lines = 1 +map :GitGutterLineHighlightsToggle +#+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 +"""""""""""""""""""""""""""""""""""""""""""""""""" +" f{char} to move to {char} +"map f (easymotion-bd-f) +"nmap f (easymotion-overwin-f) + +" s{char}{char} to move to {char}{char} +nmap s (easymotion-overwin-f2) + +" Move to line +"map L (easymotion-bd-jk) +"nmap L (easymotion-overwin-line) + +" Move to word +map w (easymotion-bd-w) +nmap w (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에서 제공하는 터미을 사용하기 위한 단축키 == 와 레지스터 a를 매크로로 자주 활용하기 때문에 바인딩하여 활용성올 높였다. +#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes +map "+ygv"*y +map "+p +map :cd %:p:h:term bash +map @a +#+end_src + +*** Others +#+begin_src shell :tangle ~/.config/nvim/init.vim :mkdirp yes +"""""""""""""""""""""""""""""""""""""""""""""""""" +" Visual-star (Search using * / in visual modde) +"""""""""""""""""""""""""""""""""""""""""""""""""" +xnoremap * :call VSetSearch('/')/=@/ +xnoremap # :call VSetSearch('?')?=@/ + +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 diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..d07d51d --- /dev/null +++ b/.config/nvim/init.vim @@ -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 :GitGutterLineHighlightsToggle + + +"""""""""""""""""""""""""""""""""""""""""""""""""" +" easymotion +"""""""""""""""""""""""""""""""""""""""""""""""""" +" f{char} to move to {char} +"map f (easymotion-bd-f) +"nmap f (easymotion-overwin-f) + +" s{char}{char} to move to {char}{char} +nmap s (easymotion-overwin-f2) + +" Move to line +"map L (easymotion-bd-jk) +"nmap L (easymotion-overwin-line) + +" Move to word +map w (easymotion-bd-w) +nmap w (easymotion-overwin-w) + +map "+ygv"*y +map "+p +map :cd %:p:h:term bash +map @a +map "byaw/incNumber/b +cw"bp + +"""""""""""""""""""""""""""""""""""""""""""""""""" +" Visual-star (Search using * / in visual modde) +"""""""""""""""""""""""""""""""""""""""""""""""""" +xnoremap * :call VSetSearch('/')/=@/ +xnoremap # :call VSetSearch('?')?=@/ + +function! s:VSetSearch(cmdtype) + let temp = @s + norm! gv"sy + let @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g') + let @s = temp +endfunction + + + diff --git a/.config/nvim/plugList.vim b/.config/nvim/plugList.vim new file mode 100644 index 0000000..f962cd3 --- /dev/null +++ b/.config/nvim/plugList.vim @@ -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() + diff --git a/.config/xmobar/scripts/battery_icon.sh b/.config/xmobar/scripts/battery_icon.sh new file mode 100755 index 0000000..1764f5b --- /dev/null +++ b/.config/xmobar/scripts/battery_icon.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +STATUS=`cat /sys/class/power_supply/BAT0/status` + +if [ $STATUS = "Charging" ]; then + echo "" +elif [ $STATUS = "Discharging" ]; then + echo "" +else + echo "" +fi + diff --git a/.config/xmobar/trayer-padding-icon.sh b/.config/xmobar/trayer-padding-icon.sh new file mode 100755 index 0000000..adee04a --- /dev/null +++ b/.config/xmobar/trayer-padding-icon.sh @@ -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 -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} */ +/* */ +"$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 "" diff --git a/.config/xmobar/xmobarrc_desktop_fhd b/.config/xmobar/xmobarrc_desktop_fhd new file mode 100644 index 0000000..9dd2a93 --- /dev/null +++ b/.config/xmobar/xmobarrc_desktop_fhd @@ -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 "\xf133 %b %d %Y - (%H:%M) " "date" 50 + -- Network up and down + , Run Network "enp10s0" ["-t", "\xf0ab kb \xf0aa kb"] 20 + -- Cpu usage in percent + , Run Cpu ["-t", "\xf108 cpu: (%)","-H","50","--high","red"] 20 + -- Ram used number and percent + , Run Memory ["-t", "\xf233 mem: M (%)"] 20 + -- Disk space free + , Run DiskU [("/", "\xf0c7 hdd: 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 = " | %UnsafeStdinReader% }{ |  %uname% | %cpu% | %memory% | %disku% | %enp10s0% | %date% " + } diff --git a/.config/xmobar/xmobarrc_desktop_qhd b/.config/xmobar/xmobarrc_desktop_qhd new file mode 100644 index 0000000..4dd448a --- /dev/null +++ b/.config/xmobar/xmobarrc_desktop_qhd @@ -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 " %A %B %d  %H:%M" "date" 50 + , Run BatteryP ["BAT0"] ["-t", " ()", "-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 "\xf133 %b %d %Y - (%H:%M) " "date" 50 + -- Network up and down + , Run Network "enp10s0" ["-t", "\xf0ab kb \xf0aa kb"] 20 + -- Cpu usage in percent + , Run Cpu ["-t", "\xf108 (%)","-H","50","--high","red"] 20 + -- Ram used number and percent + , Run Memory ["-t", "\xf233 M (%)"] 20 + -- Disk space free + , Run DiskU [("/", "\xf0c7 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 = " | %UnsafeStdinReader% }{ |  %uname% | %cpu% | %memory% | %disku% | %enp10s0% | %date% |%trayerpad%" + } \ No newline at end of file diff --git a/.config/xmobar/xmobarrc_labtop_fhd b/.config/xmobar/xmobarrc_labtop_fhd new file mode 100644 index 0000000..559acaf --- /dev/null +++ b/.config/xmobar/xmobarrc_labtop_fhd @@ -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 " %A %B %d  %H:%M" "date" 50 + , Run BatteryP ["BAT0"] ["-t", " ()", "-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 "\xf133 %b %d %Y - (%H:%M) " "date" 50 + -- Network up and down + , Run Network "wlp3s0" ["-t", "\xf0ab kb \xf0aa kb"] 20 + -- Cpu usage in percent + , Run Cpu ["-t", "\xf108 (%)","-H","50","--high","red"] 20 + -- Ram used number and percent + , Run Memory ["-t", "\xf233 M (%)"] 20 + -- Disk space free + , Run DiskU [("/", "\xf0c7 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 = " | %UnsafeStdinReader% }{ |  %uname% | %cpu% | %memory% | %disku% | %wlp3s0% | %date% | %batteryIcon% %battery% |%trayerpad%" + } diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..1ec5f9a --- /dev/null +++ b/.gitconfig @@ -0,0 +1,3 @@ +[user] + name = JaeYoo-Im + email = cpu3792@gmail.com diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e370f25 --- /dev/null +++ b/.gitignore @@ -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/ + diff --git a/.julia/startup.jl b/.julia/startup.jl new file mode 100644 index 0000000..534fd70 --- /dev/null +++ b/.julia/startup.jl @@ -0,0 +1,3 @@ +#using Plots +#using PlotThemes +#theme(:juno) diff --git a/.minttyrc b/.minttyrc new file mode 100644 index 0000000..decc7fb --- /dev/null +++ b/.minttyrc @@ -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 diff --git a/.ssh/config b/.ssh/config new file mode 100644 index 0000000..26cf344 --- /dev/null +++ b/.ssh/config @@ -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 diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..59b06ea --- /dev/null +++ b/.tmux.conf @@ -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' diff --git a/.xmonad/haskell_20.xpm b/.xmonad/haskell_20.xpm new file mode 100644 index 0000000..9e11ae2 --- /dev/null +++ b/.xmonad/haskell_20.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * haskell_20_xpm[] = { +"20 20 2 1", +" c None", +". c #FFFFFF", +" ", +" ", +" ", +".... .... ", +" .... ... ", +" ... .... ", +" .... .... ", +" .... ... ........", +" ... .... .......", +" .... .... ", +" .... .... ", +" ... ...... .....", +" .... ....... ....", +" .... .... ... ", +" ... .... .... ", +" .... ... .... ", +".... .... ... ", +" ", +" ", +" "}; diff --git a/.xmonad/picom.conf b/.xmonad/picom.conf new file mode 100644 index 0000000..0291771 --- /dev/null +++ b/.xmonad/picom.conf @@ -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; } +}; diff --git a/.xmonad/xmonad.org b/.xmonad/xmonad.org new file mode 100644 index 0000000..f234f3f --- /dev/null +++ b/.xmonad/xmonad.org @@ -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 = ""++ws++"" + 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-", 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-", 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-", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next ws + --, ("M-S-", 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-", promote) -- Moves focused window to master, others maintain order + --, ("M-S-", rotSlavesDown) -- Rotate all windows except master and keep focus in place + , ("M-C-", rotAllDown) -- Rotate all the windows in the current stack + + -- Layouts + --, ("M-", sendMessage NextLayout) -- Switch to next layout + --, ("M-C-M1-", sendMessage Arrange) + --, ("M-C-M1-", sendMessage DeArrange) + --, ("M-S-", sendMessage ToggleStruts) -- Toggles struts + --, ("M-S-n", sendMessage $ MT.Toggle NOBORDERS) -- Toggles noborder + , ("M-", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full + + -- Increase/decrease windows in the master pane or the stack + --, ("M-S-", sendMessage (IncMasterN 1)) -- Increase # of clients master pane + --, ("M-S-", sendMessage (IncMasterN (-1))) -- Decrease # of clients master pane + --, ("M-C-", increaseLimit) -- Increase # of windows + --, ("M-C-", 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-", spawn "sxiv -r -q -t -o ~/wallpapers/*") + --, ("M-", spawn "/bin/ls ~/wallpapers | shuf -n 1 | xargs xwallpaper --stretch") + --, ("M-", 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 ", 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 + --, ("", spawn (myTerminal ++ "mocp --play")) + --, ("", spawn (myTerminal ++ "mocp --previous")) + --, ("", spawn (myTerminal ++ "mocp --next")) + --, ("", spawn "amixer set Master toggle") + , ("", spawn "amixer set Master 5%- unmute") + , ("", spawn "amixer set Master 5%+ unmute") + --, ("", spawn "firefox") + --, ("", safeSpawn "firefox" ["https://www.duckduckgo.com/"]) + --, ("", runOrRaise "thunderbird" (resource =? "thunderbird")) + --, ("", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk")) + --, ("", spawn "toggleeject") + --, ("", 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 = " | " -- 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 diff --git a/.xprofile b/.xprofile new file mode 100644 index 0000000..12711fa --- /dev/null +++ b/.xprofile @@ -0,0 +1,3 @@ +export GTK_IM_MODULE=fcitx +export QT_IM_MODULE=fcitx +export XMODIFIERS="@im=fcitx" diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..f5f075f --- /dev/null +++ b/.zshrc @@ -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" diff --git a/Note/ArchLinux.org b/Note/ArchLinux.org new file mode 100644 index 0000000..140525a --- /dev/null +++ b/Note/ArchLinux.org @@ -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 window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s 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 diff --git a/Note/HyperV.org b/Note/HyperV.org new file mode 100644 index 0000000..a737152 --- /dev/null +++ b/Note/HyperV.org @@ -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의 내용을 참고 diff --git a/Note/Linux.org b/Note/Linux.org new file mode 100644 index 0000000..9060c22 --- /dev/null +++ b/Note/Linux.org @@ -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 diff --git a/Note/WSL.org b/Note/WSL.org new file mode 100644 index 0000000..4df0c1c --- /dev/null +++ b/Note/WSL.org @@ -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 diff --git a/Note/WSL/config.xlaunch b/Note/WSL/config.xlaunch new file mode 100644 index 0000000..c41d3e9 --- /dev/null +++ b/Note/WSL/config.xlaunch @@ -0,0 +1,2 @@ + + diff --git a/Note/WSL/run_emacs.sh b/Note/WSL/run_emacs.sh new file mode 100755 index 0000000..e9db8a9 --- /dev/null +++ b/Note/WSL/run_emacs.sh @@ -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 diff --git a/Note/WSL/usr_cmd.zip b/Note/WSL/usr_cmd.zip new file mode 100755 index 0000000..f29277e Binary files /dev/null and b/Note/WSL/usr_cmd.zip differ diff --git a/Note/WindowEnv.org b/Note/WindowEnv.org new file mode 100644 index 0000000..94bf430 --- /dev/null +++ b/Note/WindowEnv.org @@ -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 diff --git a/Note/images/screenshot-01.png b/Note/images/screenshot-01.png new file mode 100644 index 0000000..024948e Binary files /dev/null and b/Note/images/screenshot-01.png differ diff --git a/Note/images/screenshot-02.png b/Note/images/screenshot-02.png new file mode 100644 index 0000000..8139358 Binary files /dev/null and b/Note/images/screenshot-02.png differ diff --git a/Note/images/screenshot-03.png b/Note/images/screenshot-03.png new file mode 100644 index 0000000..7d70551 Binary files /dev/null and b/Note/images/screenshot-03.png differ diff --git a/Note/images/screenshot-04.png b/Note/images/screenshot-04.png new file mode 100755 index 0000000..8cad18f Binary files /dev/null and b/Note/images/screenshot-04.png differ diff --git a/Note/images/screenshot-05.png b/Note/images/screenshot-05.png new file mode 100755 index 0000000..e79e9f5 Binary files /dev/null and b/Note/images/screenshot-05.png differ diff --git a/Note/images/screenshot-06.png b/Note/images/screenshot-06.png new file mode 100755 index 0000000..125e0b1 Binary files /dev/null and b/Note/images/screenshot-06.png differ diff --git a/Note/virtmanager.org b/Note/virtmanager.org new file mode 100644 index 0000000..0dc926f --- /dev/null +++ b/Note/virtmanager.org @@ -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 diff --git a/README.org b/README.org deleted file mode 100644 index 243b38c..0000000 --- a/README.org +++ /dev/null @@ -1 +0,0 @@ -First Init diff --git a/scripts/hyperv_mount_settings.sh b/scripts/hyperv_mount_settings.sh new file mode 100755 index 0000000..b4ca49b --- /dev/null +++ b/scripts/hyperv_mount_settings.sh @@ -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 + diff --git a/scripts/init_script_arcolinux.sh b/scripts/init_script_arcolinux.sh new file mode 100755 index 0000000..f1b6778 --- /dev/null +++ b/scripts/init_script_arcolinux.sh @@ -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 diff --git a/scripts/init_script_hyperv.sh b/scripts/init_script_hyperv.sh new file mode 100755 index 0000000..8960fe2 --- /dev/null +++ b/scripts/init_script_hyperv.sh @@ -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 diff --git a/scripts/set_proxy.sh b/scripts/set_proxy.sh new file mode 100755 index 0000000..00c4164 --- /dev/null +++ b/scripts/set_proxy.sh @@ -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 + + +