├── wallpaper ├── wallpaper1.png └── wallpaper2.png ├── bin └── tmux-attach ├── applications └── chromium.desktop ├── tmux ├── config │ ├── tmux-titlebar.conf │ ├── tmux-mouse.conf │ ├── tmux-statusbar.conf │ ├── tmux-colors.conf │ ├── tmux-yank.conf │ └── tmux-keys.conf └── tmux.conf ├── i3status └── config ├── autorunner └── config ├── bash └── bashrc ├── i3 ├── bin │ └── wsmove.py └── config ├── git └── gitconfig └── install.sh /wallpaper/wallpaper1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cytopia/dotfiles-kali/master/wallpaper/wallpaper1.png -------------------------------------------------------------------------------- /wallpaper/wallpaper2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cytopia/dotfiles-kali/master/wallpaper/wallpaper2.png -------------------------------------------------------------------------------- /bin/tmux-attach: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SESSION="$( tmux -u ls | grep -v '(attached)' | awk -F':' '{print $1}' | head -1 )" 4 | 5 | if [ -n "${SESSION}" ]; then 6 | tmux attach -t "${SESSION}" 2>/dev/null 7 | else 8 | tmux new-session 2>/dev/null 9 | fi 10 | -------------------------------------------------------------------------------- /applications/chromium.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=Chromium Web Browser 4 | GenericName=Web Browser 5 | Exec=/usr/bin/chromium --no-sandbox %U 6 | Terminal=false 7 | X-MultipleArgs=false 8 | Type=Application 9 | Icon=chromium 10 | Categories=Network;WebBrowser; 11 | MimeType=text/html;text/xml;application/xhtml_xml;application/x-mimearchive;x-scheme-handler/http;x-scheme-handler/https; 12 | StartupWMClass=chromium 13 | StartupNotify=true 14 | -------------------------------------------------------------------------------- /tmux/config/tmux-titlebar.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Terminal Title Bar 3 | ######################################################################## 4 | 5 | set-option -g set-titles on 6 | set -g set-titles-string "(s:#S) [w:#I|p:#P] @#H - #W#F" 7 | 8 | #S Name of session 9 | #I Index of window 10 | #P Index of pane 11 | #W Name of window 12 | #F Window flags 13 | #h Hostname of local host without domain 14 | #H Hostname of local host 15 | #D Unique pane ID 16 | #T Title of pane 17 | 18 | -------------------------------------------------------------------------------- /tmux/config/tmux-mouse.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Mouse Settings 3 | ######################################################################## 4 | 5 | ## Mouse Interaction 6 | set -g mouse on 7 | 8 | 9 | # http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/ 10 | # Toggle mouse on 11 | bind-key m \ 12 | set-option -g mouse on \;\ 13 | display-message 'Mouse: ON' 14 | 15 | # Toggle mouse off 16 | bind-key M \ 17 | set-option -g mouse off \;\ 18 | display-message 'Mouse: OFF' 19 | -------------------------------------------------------------------------------- /tmux/config/tmux-statusbar.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Tmux Status Bar 3 | ######################################################################## 4 | 5 | # Refresh the status bar every 1 second. 6 | set-option -g status-interval 1 7 | 8 | # Time messages remain in the status bar. Lower this number 9 | # if this is too distracting. 10 | set-option -g display-panes-time 2000 11 | set-option -g display-time 1000 12 | 13 | # window activity notifications; display activity on other window 14 | set-window-option -g monitor-activity on 15 | set-option -g visual-activity on 16 | 17 | -------------------------------------------------------------------------------- /i3status/config: -------------------------------------------------------------------------------- 1 | general { 2 | colors = true 3 | interval = 5 4 | } 5 | 6 | order += "ethernet tap0" 7 | order += "ethernet _first_" 8 | order += "disk /" 9 | order += "load" 10 | order += "memory" 11 | order += "tztime date" 12 | order += "tztime time" 13 | 14 | ethernet tap0 { 15 | format_up = " VPN: %ip " 16 | format_down = " VPN: down " 17 | } 18 | 19 | ethernet _first_ { 20 | format_up = " E: %ip " 21 | format_down = " E: down " 22 | } 23 | 24 | disk "/" { 25 | format = " %used / %avail " 26 | } 27 | 28 | load { 29 | format = " %1min " 30 | } 31 | 32 | memory { 33 | format = " %used RAM " 34 | } 35 | 36 | tztime date { 37 | format = " %Y-%m-%d " 38 | } 39 | 40 | tztime time { 41 | format = " %H:%M " 42 | } 43 | -------------------------------------------------------------------------------- /tmux/config/tmux-colors.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Tmux Colors 3 | ######################################################################## 4 | 5 | # pane number display 6 | set-option -g display-panes-active-colour colour33 #blue 7 | set-option -g display-panes-colour colour166 #orange 8 | 9 | # clock 10 | set-window-option -g clock-mode-colour colour64 #green 11 | 12 | # bell 13 | set-window-option -g window-status-bell-style fg=colour235,bg=colour160 #base02, red 14 | # default statusbar colors 15 | set-option -g status-bg default 16 | set-option -g status-fg colour136 #yellow 17 | 18 | # Inside statusbar 19 | set-option -g status-justify centre 20 | set-option -g status-left-length 40 21 | set-option -g status-left "#[fg=white][#[fg=cyan]Session: #[fg=yellow]#S#[fg=white]]" 22 | set-option -g status-right "#[fg=white][#[fg=cyan]Tab: #[fg=yellow]#I#[fg=white]] [#[fg=cyan]Pane: #[fg=yellow]#P#[fg=white]]" 23 | -------------------------------------------------------------------------------- /autorunner/config: -------------------------------------------------------------------------------- 1 | # Autorunner configuration file 2 | # 3 | # Usage: execute "" "" "" 4 | # 5 | # 1: Kill the process and restart it 6 | # 0: Only start when it is not running 7 | # 8 | # 1: Notify via notifications when started/restarted 9 | # 0: Do not notify 10 | # Full command (including arguments) to run 11 | # 12 | # Examples: 13 | # 14 | # # Run clipmenu once (never restart it) 15 | # execute "0" "0" "clipmenud" 16 | # 17 | # # Run thunar daemon and always restart it when autorunner is called again 18 | # # Always trigger notifications whenever it is stopped and restarted 19 | # execute "1" "1" "thunar --daemon" 20 | # 21 | 22 | 23 | # Turn on/off annoying system beep 24 | execute "0" "1" "xset b off" 25 | 26 | # Set keyboard settings 27 | # 250 ms delay and 25 cps (characters per second) repeat rate. 28 | # KEYBOARD_RATE=60 29 | # KEYBOARD_DELAY=250 30 | execute "0" "1" "xset r rate 250 50" 31 | 32 | # Clipboard manager 33 | #execute "0" "1" "clipmenud" 34 | 35 | # Notification daemon 36 | execute "0" "1" "dunst" 37 | 38 | # Compositor 39 | execute "1" "1" "compton" 40 | -------------------------------------------------------------------------------- /bash/bashrc: -------------------------------------------------------------------------------- 1 | if [ -n "${TMUX}" ]; then 2 | export TERM=screen-256color 3 | else 4 | export TERM=xterm-256color 5 | fi 6 | 7 | export COLORTERM=truecolor 8 | export VISUAL="nvim" 9 | export EDITOR="nvim" 10 | export PAGER="less" 11 | 12 | alias ..="cd .." 13 | alias ...="cd ..." 14 | alias ....="cd ...." 15 | alias .....="cd ....." 16 | 17 | alias open="xdg-open" 18 | 19 | alias chromium="chromium --no-sandbox" 20 | 21 | alias vi="nvim" 22 | alias vim="nvim" 23 | 24 | alias tmux="tmux -2 -u" 25 | 26 | alias l='ls --color=always --group-directories-first --classify -l' 27 | alias la='ls --color=always --group-directories-first --classify -a' 28 | alias less='less --IGNORE-CASE --tabs=4 --status-column --LONG-PROMPT --line-numbers --RAW-CONTROL-CHARS' 29 | alias ll='ls --color=always --group-directories-first --classify -al' 30 | alias ls='ls --color=always --group-directories-first --classify' 31 | 32 | 33 | # Reload Xresources config 34 | if [ -f ~/.Xresources ]; then 35 | rld-xresources() { 36 | echo "\$ xrdb ~/.Xresources" 37 | xrdb ~/.Xresources 38 | } 39 | fi 40 | 41 | repo() { 42 | local specific="${1:-}" 43 | 44 | if [ "${#}" = "1" ]; then 45 | cd "${HOME}/repo/${1}"* 46 | else 47 | cd "${HOME}/repo/cytopia" 48 | fi 49 | } 50 | -------------------------------------------------------------------------------- /i3/bin/wsmove.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | ''' i3 helper to move windows to named workspaces''' 3 | 4 | import sys 5 | import subprocess 6 | import json 7 | 8 | def run(command): 9 | '''Wrapper to run shell commands''' 10 | return subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout.readlines() 11 | 12 | def main(argv): 13 | '''Main entrypoint''' 14 | workspaces = json.loads(''.join(run('i3-msg -t get_workspaces'))) 15 | 16 | target = argv[1] 17 | 18 | focused_workspace_num = None 19 | for workspace in workspaces: 20 | if workspace['focused']: 21 | focused_workspace_num = workspace['num'] 22 | break 23 | 24 | # get all named workspaces from config 25 | command = 'cat ~/.config/i3/config | grep "^set \\$WS" | sed "s/.*\\$WS[0-9]*\\s//g"' 26 | workspace = ''.join(run(command)).split('\n') 27 | 28 | if target == "prev": 29 | if focused_workspace_num == 1: 30 | sendto = 10 31 | else: 32 | sendto = focused_workspace_num - 1 33 | elif target == "next": 34 | if focused_workspace_num == 10: 35 | sendto = 1 36 | else: 37 | sendto = focused_workspace_num + 1 38 | 39 | # Move container to chosen workspace 40 | run('i3-msg move container to workspace ' + workspace[sendto-1]) 41 | # Jump to chosen workspace 42 | run('i3-msg workspace ' + workspace[sendto-1]) 43 | 44 | if __name__ == '__main__': 45 | main(sys.argv) 46 | -------------------------------------------------------------------------------- /tmux/config/tmux-yank.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Copy Mode (Vim Style) + 3 | ######################################################################## 4 | 5 | # https://shapeshed.com/custom-vim-bindings-in-tmux-2-4/ 6 | 7 | ### 8 | ### Enable vi-style for Visual Mode 9 | ### 10 | setw -g mode-keys vi 11 | 12 | 13 | 14 | ### 15 | ### Copy Mode 16 | ### 17 | 18 | # This breaks tmux-copycat 19 | #unbind-key [ # Unbind 'Start copy mode' 20 | #unbind-key -t vi-copy q # Unbind 'Exit copy mode' 21 | #bind-key Escape copy-mode \; display 'Copy Mode' # Start copy mode; default is [ 22 | #bind-key -t vi-copy Escape cancel # Exit copy mode; or hit q 23 | 24 | 25 | 26 | ### 27 | ### Visual Mode (Selection) 28 | ### 29 | bind-key -T copy-mode-vi 'v' send -X begin-selection # Start visual mode (selection) 30 | bind-key -T copy-mode-vi 'V' send -X select-line # Select whole line 31 | bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Toggle block selection (in select mode) 32 | bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel "xsel -i -p && xsel -o -p | xsel -i -b" 33 | 34 | ### 35 | ### Copy/Paste (normal mode 36 | ### 37 | 38 | # Copying in normal mode is useful for mouse integration. 39 | # This way you can select text with a mouse, release mouse and 40 | # copy it to clipboard via C-y. 41 | bind-key y run "tmux show-buffer | xsel -i -p && xsel -o -p | xsel -i -b"\; display 'copied' 42 | 43 | # Allow system clipboard to be pasted with tmux 44 | bind-key p run "xsel -o | tmux load-buffer - ; tmux paste-buffer" 45 | -------------------------------------------------------------------------------- /tmux/tmux.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Tmux default config 3 | ######################################################################## 4 | 5 | # Do not start a login shell 6 | set -g default-command "${SHELL}" 7 | 8 | # Allows for faster key repetition. 9 | # Lowers the delay time between the prefix key and other keys 10 | # address vim mode switching delay (http://superuser.com/a/252717/65504) 11 | set -sg escape-time 0 12 | 13 | # Increase scrollback history. 14 | set -g history-limit 50000 15 | 16 | # Enable 256 color terminal. 17 | # http://blog.sanctum.geek.nz/256-colour-terminals/ 18 | set -g default-terminal "screen-256color" 19 | 20 | # Focus events enabled for terminals that support them. 21 | set -g focus-events on 22 | 23 | # Rather than constraining window size to the maximum size of any client 24 | # connected to the *session*, constrain window size to the maximum size of any 25 | # client connected to *that window*. 26 | # Super useful when using "grouped sessions" and multi-monitor setup 27 | setw -g aggressive-resize on 28 | 29 | # Start Window index (Tabs) at 1 instead of 0 30 | set -g base-index 1 31 | 32 | # Start Panes at 1 insteaad of 0 33 | setw -g pane-base-index 1 34 | 35 | # Renumber windows sequentially after closing any of them 36 | # https://github.com/thoughtbot/dotfiles/blob/master/tmux.conf 37 | set -g renumber-windows on 38 | 39 | # Set Auto Rename of Windows base on command 40 | # note: ohmyzsh users commet out DISABLE_AUTO_TITLE=true from zshrc to disable autorename 41 | # http://superuser.com/questions/306028/tmux-and-zsh-custom-prompt-bug-with-window-name 42 | setw -g automatic-rename on 43 | 44 | # Source configs 45 | source-file ~/.config/tmux/tmux-keys.conf 46 | source-file ~/.config/tmux/tmux-mouse.conf 47 | source-file ~/.config/tmux/tmux-statusbar.conf 48 | source-file ~/.config/tmux/tmux-titlebar.conf 49 | source-file ~/.config/tmux/tmux-yank.conf 50 | source-file ~/.config/tmux/tmux-colors.conf 51 | -------------------------------------------------------------------------------- /git/gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = user 3 | email = user@email.tld 4 | 5 | 6 | [core] 7 | # Check if converting CRLF is reversible 8 | # and abort if not 9 | safecrlf = true 10 | 11 | # Default 'git diff' view 12 | #pager = less -x1,5 13 | pager = diff-highlight | less -x1,5 -R 14 | 15 | # whitespace fix 16 | # space-before-tab: treats a space character that appears immediately before a 17 | # tab character in the initial indent part of the line as an error 18 | whitespace = blank-at-eol,blank-at-eof,space-before-tab,trailing-space 19 | 20 | 21 | [apply] 22 | # Warn about whitespace issues defined in core.whitespace 23 | whitespace = warn 24 | 25 | 26 | [status] 27 | submodulesummary = true 28 | 29 | 30 | [commit] 31 | verbose = true 32 | 33 | 34 | [pull] 35 | ff = only 36 | 37 | 38 | [merge] 39 | summary = true 40 | ff = false 41 | 42 | 43 | [mergetool] 44 | keepBackup = false 45 | prompt = false 46 | 47 | 48 | [mergetool "vimdiff"] 49 | cmd = nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J' 50 | 51 | 52 | [diff] 53 | tool = vimdiff 54 | 55 | 56 | [difftool] 57 | # Do not prompt before launching a diff tool 58 | prompt = false 59 | # Be able to abort all diffs with `:cq` or `:cquit` 60 | trustExitCode = true 61 | 62 | 63 | [difftool "vimdiff"] 64 | cmd = nvim -d $LOCAL $REMOTE 65 | 66 | 67 | [alias] 68 | uncommit = reset HEAD~1 --mixed 69 | current = !sh -c 'git name-rev --tags --name-only $(git rev-parse HEAD)' 70 | tags = !"git for-each-ref \ 71 | --sort=creatordate \ 72 | --format '%(refname)_,,,_%(creatordate:format:%Y-%m-%d %H:%M)_,,,_%(committername)%(taggername)_,,,_%(subject)' refs/tags \ 73 | | sed 's|^refs/tags/||g' \ 74 | | awk 'BEGIN { FS = \"_,,,_\" } ; { \ 75 | printf \"%-20s %-18s %-25s %s\\n\", $2, $1, $4, $3 \ 76 | }'" 77 | 78 | # List files (indexed) 79 | ls = ls-tree --name-only -r HEAD 80 | 81 | # List files (ignored) 82 | ign = ls-files -o -i --exclude-standard 83 | ls-ign = ls-files -o -i --exclude-standard 84 | ls-ignored = ls-files -o -i --exclude-standard 85 | 86 | # List files (modified) 87 | ls-mod = ls-files -m 88 | ls-modified = ls-files -m 89 | 90 | # List files (deleted) 91 | ls-del = ls-files -d 92 | ls-deleted = ls-files -d 93 | 94 | # List files (unmerged) 95 | ls-unm = ls-files -u 96 | ls-unmerged = ls-files -u 97 | 98 | 99 | [color] 100 | ui = true 101 | 102 | 103 | [color "branch"] 104 | current = yellow bold 105 | local = green bold 106 | remote = cyan bold 107 | 108 | 109 | [color "diff"] 110 | meta = yellow bold 111 | frag = magenta bold 112 | old = red bold 113 | new = green bold 114 | whitespace = red reverse 115 | 116 | 117 | [color "status"] 118 | added = green bold 119 | changed = yellow bold 120 | untracked = red bold 121 | -------------------------------------------------------------------------------- /tmux/config/tmux-keys.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Tmux key bindings 3 | ######################################################################## 4 | 5 | ### 6 | ### Documentation 7 | ### 8 | 9 | # https://github.com/tmux-plugins/tmux-sensible 10 | 11 | 12 | 13 | ### 14 | ### Change Prefix Key 15 | ### 16 | # C-b is not acceptable -- Vim uses it 17 | # C-a is not acceptable -- Screen uses it 18 | # C-s is OK 19 | unbind C-b 20 | set -g prefix C-s 21 | bind C-s send-prefix 22 | 23 | # Goto last used window (Ctrl+s Ctrl+s) 24 | #bind-key C-s last-window 25 | 26 | # Nested Tmux Session 27 | # Allows us to use C-s s to send commands 28 | # to a TMUX session inside another TMUX session 29 | #bind-key s send-prefix 30 | 31 | # Clear screen and scrollback history 32 | # Ctrl + l 33 | bind-key -n C-l send-keys C-l \; run 'tmux clear-history' 34 | 35 | # Reload config file + 36 | bind-key r source-file ~/.tmux.conf \; display-message "Config reloaded in ~/.config/tmux/tmux.conf ..." 37 | 38 | # renumber windows manually 39 | # https://github.com/jasoncodes/dotfiles/blob/master/config/tmux.conf 40 | bind-key R set renumber-windows on\; new-window\; kill-window\; set renumber-windows off\; display 'Renumbered' 41 | 42 | 43 | 44 | ######################################################################## 45 | # Keybindings (Vim Style) 46 | ######################################################################## 47 | 48 | # Xterm Behavior 49 | # TODO: check what it does 50 | # enable shell hotkeys C-left/C-right 51 | # http://sigizmund.com/tmux-and-c-leftc-right/ 52 | set-window-option -g xterm-keys on 53 | 54 | 55 | # vim keys in command prompt 56 | # TODO: check if emacs is better 57 | set-option -g status-keys vi 58 | 59 | # Select Panes 60 | bind-key k select-pane -U 61 | bind-key h select-pane -L 62 | bind-key j select-pane -D 63 | bind-key l select-pane -R 64 | 65 | # Cycle Windows/Panes (no prefix) 66 | # note: weechat was using + so it didnt work in tmux 67 | #bind-key -n M-k select-pane -t :.- # prev pane 68 | #bind-key -n M-j select-pane -t :.+ # next pane 69 | #bind-key -n M-h select-window -t :- # previous window 70 | #bind-key -n M-l select-window -t :+ # next window 71 | # note: +l to clear terminal didn' work anymore 72 | #bind-key -n C-k select-pane -t :.- # prev pane 73 | #bind-key -n C-j select-pane -t :.+ # next pane 74 | #bind-key -n C-h select-window -t :- # previous window 75 | #bind-key -n C-l select-window -t :+ # next window 76 | 77 | 78 | 79 | # Resize Panes 80 | bind-key -r J resize-pane -D 1 81 | bind-key -r K resize-pane -U 1 82 | bind-key -r H resize-pane -L 1 83 | bind-key -r L resize-pane -R 1 84 | 85 | # Better Pane Split Bindings 86 | bind-key \\ split-window -h # vertical split 87 | bind-key - split-window -v # horizontal split 88 | 89 | # Move pane left/right 90 | bind-key -r "<" swap-window -t -1 91 | bind-key -r ">" swap-window -t +1 92 | 93 | # Explicit confirmation when killing window/pane; by default is set to ask 94 | # http://unix.stackexchange.com/a/30283 95 | bind-key & confirm-before -p "kill window #W? (y/n)" kill-window 96 | bind-key x confirm-before -p "kill pane #W? (y/n)" kill-pane 97 | 98 | 99 | # Sync panes - send what you're typing to other panes. 100 | bind-key C-s set-window-option synchronize-panes 101 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | set -u 5 | set -o pipefail 6 | 7 | ROOT_PATH="$(cd -P -- "$(dirname -- "${0}")" && pwd -P)" 8 | 9 | 10 | # ------------------------------------------------------------------------------------------------- 11 | # Packages 12 | # ------------------------------------------------------------------------------------------------- 13 | APT_PACKAGES="\ 14 | chromium \ 15 | compton \ 16 | dunst \ 17 | feh \ 18 | git \ 19 | i3 \ 20 | libnotify-bin \ 21 | maim \ 22 | python-neovim \ 23 | python3-neovim \ 24 | python3-pip \ 25 | qalc \ 26 | rofi \ 27 | rxvt-unicode-256color \ 28 | tmux \ 29 | x11-utils \ 30 | xsel \ 31 | silversearcher-ag \ 32 | " 33 | 34 | PIP_PACKAGES="\ 35 | pynvim \ 36 | " 37 | PIP3_PACKAGES="\ 38 | pynvim \ 39 | " 40 | 41 | URL_PACKAGES="\ 42 | https://raw.githubusercontent.com/K-Phoen/Config/master/bin/diff-highlight \ 43 | https://raw.githubusercontent.com/cdown/clipmenu/master/clipdel \ 44 | https://raw.githubusercontent.com/cdown/clipmenu/master/clipmenu \ 45 | https://raw.githubusercontent.com/cdown/clipmenu/master/clipmenud \ 46 | https://raw.githubusercontent.com/cytopia/autorunner/master/autorunner \ 47 | https://raw.githubusercontent.com/cytopia/i3-utils-bin/master/bin/rcalc \ 48 | https://raw.githubusercontent.com/cytopia/i3-utils-bin/master/bin/xscreenshot \ 49 | " 50 | 51 | URL_FONTS=" \ 52 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Bold/complete/Terminess%20(TTF)%20Bold%20Nerd%20Font%20Complete%20Mono%20Windows%20Compatible.ttf \ 53 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Bold/complete/Terminess%20(TTF)%20Bold%20Nerd%20Font%20Complete%20Mono.ttf \ 54 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Bold/complete/Terminess%20(TTF)%20Bold%20Nerd%20Font%20Complete%20Windows%20Compatible.ttf \ 55 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Bold/complete/Terminess%20(TTF)%20Bold%20Nerd%20Font%20Complete.ttf \ 56 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/BoldItalic/complete/Terminess%20(TTF)%20Bold%20Italic%20Nerd%20Font%20Complete%20Mono%20Windows%20Compatible.ttf \ 57 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/BoldItalic/complete/Terminess%20(TTF)%20Bold%20Italic%20Nerd%20Font%20Complete%20Mono.ttf \ 58 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/BoldItalic/complete/Terminess%20(TTF)%20Bold%20Italic%20Nerd%20Font%20Complete%20Windows%20Compatible.ttf \ 59 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/BoldItalic/complete/Terminess%20(TTF)%20Bold%20Italic%20Nerd%20Font%20Complete.ttf \ 60 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Italic/complete/Terminess%20(TTF)%20Italic%20Nerd%20Font%20Complete%20Mono%20Windows%20Compatible.ttf \ 61 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Italic/complete/Terminess%20(TTF)%20Italic%20Nerd%20Font%20Complete%20Mono.ttf \ 62 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Italic/complete/Terminess%20(TTF)%20Italic%20Nerd%20Font%20Complete%20Windows%20Compatible.ttf \ 63 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Italic/complete/Terminess%20(TTF)%20Italic%20Nerd%20Font%20Complete.ttf \ 64 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Regular/complete/Terminess%20(TTF)%20Nerd%20Font%20Complete%20Mono%20Windows%20Compatible.ttf \ 65 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Regular/complete/Terminess%20(TTF)%20Nerd%20Font%20Complete%20Mono.ttf \ 66 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Regular/complete/Terminess%20(TTF)%20Nerd%20Font%20Complete%20Windows%20Compatible.ttf \ 67 | https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Regular/complete/Terminess%20(TTF)%20Nerd%20Font%20Complete.ttf \ 68 | " 69 | 70 | # ------------------------------------------------------------------------------------------------- 71 | # Install Packages 72 | # ------------------------------------------------------------------------------------------------- 73 | 74 | # Apt 75 | apt update && apt install -y ${APT_PACKAGES} 76 | 77 | # Python 78 | pip install ${PIP_PACKAGES} 79 | pip3 install ${PIP3_PACKAGES} 80 | 81 | # Tools from URL 82 | for url in ${URL_PACKAGES}; do 83 | name="$( echo "${url}" | sed 's/.*\///g' )" 84 | curl -sS "${url}" -o "/usr/local/bin/${name}" 85 | chmod +x "/usr/local/bin/${name}" 86 | done 87 | 88 | # Fonts from URL 89 | mkdir -p "/usr/share/fonts/truetype/terminus/" 90 | for url in ${URL_FONTS}; do 91 | name="$( echo "${url}" | sed -e 's/.*\///g' -e 's/%20/ /g' )" 92 | curl -sS -L "${url}" -o "/usr/share/fonts/truetype/terminus/${name}" 93 | done 94 | fc-cache -fv 95 | 96 | 97 | # ------------------------------------------------------------------------------------------------- 98 | # Symlink config 99 | # ------------------------------------------------------------------------------------------------- 100 | 101 | mkdir -p "${HOME}/.config" 102 | 103 | ### 104 | ### Autorunner 105 | ### 106 | ln -sf "${ROOT_PATH}/autorunner" "${HOME}/.config/autorunner" 107 | 108 | 109 | ### 110 | ### Bash 111 | ### 112 | if ! grep -E '^\. ~/\.config/bash/bashrc' "${HOME}/.bashrc" >/dev/null; then 113 | echo ". ~/.config/bash/bashrc" >> "${HOME}/.bashrc" 114 | fi 115 | ln -sf "${ROOT_PATH}/bash" "${HOME}/.config/bash" 116 | 117 | 118 | ### 119 | ### Binaries 120 | ### 121 | cp -f "${ROOT_PATH}/bin/tmux-attach" "/usr/local/bin/tmux-attach" 122 | 123 | 124 | ### 125 | ### Git 126 | ### 127 | ln -sf "${ROOT_PATH}/git/gitconfig" "${HOME}/.gitconfig" 128 | 129 | 130 | ### 131 | ### I3 132 | ### 133 | ln -sf "${ROOT_PATH}/i3" "${HOME}/.config/i3" 134 | 135 | 136 | ### 137 | ### I3status 138 | ### 139 | ln -sf "${ROOT_PATH}/i3status" "${HOME}/.config/i3status" 140 | 141 | 142 | ### 143 | ### Tmux 144 | ### 145 | ln -sf "${ROOT_PATH}/tmux/tmux.conf" "${HOME}/.tmux.conf" 146 | ln -sf "${ROOT_PATH}/tmux/config" "${HOME}/.config/tmux" 147 | 148 | 149 | ### 150 | ### Neovim 151 | ### 152 | TMP_SCRIPT="$( mktemp )" 153 | mkdir -p "${HOME}/.config/nvim" 154 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/neovim/init.vim -o "${HOME}/.config/nvim/init.vim" 155 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/neovim/coc-settings.json -o "${HOME}/.config/nvim/coc-settings.json" 156 | curl -sS https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh -o "${TMP_SCRIPT}" 157 | sh "${TMP_SCRIPT}" "${HOME}/.local/share/nvim/bundles" || true 158 | rm -f "${TMP_SCRIPT}" 159 | nvim +'call dein#install()' +qall || true 160 | nvim +'call dein#update()' +qall 161 | { 162 | echo "set termguicolors"; 163 | echo "set colorcolumn=0"; 164 | echo "hi Normal guibg=None ctermbg=None"; 165 | echo "hi LineNr guibg=None ctermbg=None"; 166 | echo "hi SignColumn guibg=None ctermbg=None"; 167 | echo "hi SignifySignAdd guibg=None"; 168 | echo "hi SignifySignDelete guibg=None"; 169 | echo "hi SignifySignChange guibg=None"; 170 | } >> "${HOME}/.config/nvim/init.vim" 171 | 172 | 173 | ### 174 | ### Xresources 175 | ### 176 | mkdir -p "${HOME}/.config/Xresources.d" 177 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/X11/Xresources -o "${HOME}/.Xresources" 178 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/X11/Xresources.d/colors.xresources -o "${HOME}/.config/Xresources.d/colors.xresources" 179 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/X11/Xresources.d/rofi.xresources -o "${HOME}/.config/Xresources.d/rofi.xresources" 180 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/X11/Xresources.d/urxvt.xresources -o "${HOME}/.config/Xresources.d/urxvt.xresources" 181 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/X11/Xresources.d/xft.xresources -o "${HOME}/.config/Xresources.d/xft.xresources" 182 | curl -sS https://raw.githubusercontent.com/cytopia/dotfiles/master/X11/Xresources.d/fonts.xresources -o "${HOME}/.config/Xresources.d/fonts.xresources" 183 | xrdb ~/.Xresources 184 | 185 | 186 | ### 187 | ### Application defines 188 | ### 189 | cp -f "${ROOT_PATH}/applications/chromium.desktop" "/usr/share/applications/chromium.desktop" 190 | 191 | 192 | ### 193 | ### Wallpaper 194 | ### 195 | cp "${ROOT_PATH}/wallpaper/wallpaper1.png" "${HOME}/Pictures/wallpaper1.png" 196 | cp "${ROOT_PATH}/wallpaper/wallpaper2.png" "${HOME}/Pictures/wallpaper2.png" 197 | -------------------------------------------------------------------------------- /i3/config: -------------------------------------------------------------------------------- 1 | ############################################################################################ 2 | # 3 | # Modifier Keys / Variables 4 | # 5 | ############################################################################################ 6 | 7 | # In case you are on an apple Notebook/Keyboard 8 | # you can simply swap Mod1 and Mod4 to get the same 9 | # behaviour 10 | # Mod4 = Super key 11 | # Mod1 = Alt key 12 | set $mod Mod1 13 | set $alt Mod4 14 | set $control Control 15 | 16 | # use these keys for focus, movement, and resize directions when reaching for 17 | # the arrows is not convenient 18 | set $up k 19 | set $down j 20 | set $left h 21 | set $right l 22 | 23 | # assign workspace variables 24 | set $WS1 " kali 1 " 25 | set $WS2 " kali 2 " 26 | set $WS3 " kali 3 " 27 | set $WS4 " kali 4 " 28 | set $WS5 " kali 5 " 29 | set $WS6 " kali 6 " 30 | set $WS7 " kali 7 " 31 | set $WS8 " kali 8 " 32 | set $WS9 " kali 9 " 33 | set $WS10 " kali 10 " 34 | 35 | 36 | 37 | ############################################################################################ 38 | # 39 | # Theming 40 | # 41 | ############################################################################################ 42 | 43 | # Font for window titles. Will also be used by the bar unless a different font 44 | # is used in the bar {} block below. 45 | font pango: Liberation Sans Regular 10 46 | 47 | # A 3 px border and no title bar 48 | new_window pixel 3 49 | 50 | 51 | 52 | ############################################################################################ 53 | # 54 | # i3 Status Bar 55 | # 56 | ############################################################################################ 57 | 58 | # Start i3bar to display a workspace bar (plus the system information i3status 59 | # finds out, if available) 60 | bar { 61 | status_command i3status 62 | i3bar_command i3bar --transparency 63 | position top 64 | 65 | colors { 66 | # 67 | background #000000bb 68 | statusline #ffffffbb 69 | separator #666666bb 70 | 71 | # 72 | focused_workspace #4c7899ff #28557710 #ffffffff 73 | active_workspace #333333ff #5f676a10 #ffffffff 74 | inactive_workspace #333333ff #22222210 #888888ff 75 | urgent_workspace #2f343aff #90000010 #ffffffff 76 | binding_mode #2f343aff #90000010 #ffffffff 77 | } 78 | 79 | # Only show on main 80 | #output primary 81 | #output eDP1 82 | 83 | # tray_output none|primary| 84 | tray_output primary 85 | 86 | mode dock 87 | 88 | # separator between bar sections 89 | separator_symbol "|" 90 | } 91 | 92 | 93 | 94 | ############################################################################################ 95 | # 96 | # Floating 97 | # 98 | ############################################################################################ 99 | 100 | # When holding the floating modifier, you can resize a floating window by pressing 101 | # the right mouse button on it and moving around while holding it. 102 | # If you hold the shift button as well, the resize will be proportional (the aspect ratio will be preserved). 103 | # Use Mouse+$mod to drag floating windows to their wanted position 104 | floating_modifier $mod 105 | 106 | # toggle tiling / floating 107 | bindsym $mod+Shift+space floating toggle 108 | 109 | 110 | 111 | ############################################################################################ 112 | # 113 | # Tiling (Splitting/Layout) 114 | # 115 | ############################################################################################ 116 | 117 | # split in horizontal orientation 118 | bindsym $mod+g split h 119 | bindsym $mod+v split v 120 | bindsym $mod+t split toggle 121 | 122 | # change container layout (stacked, tabbed, toggle split) 123 | bindsym $mod+s layout stacking 124 | bindsym $mod+w layout tabbed 125 | bindsym $mod+e layout toggle split 126 | 127 | # focus the parent container 128 | bindsym $mod+a focus parent 129 | 130 | 131 | 132 | ############################################################################################ 133 | # 134 | # Fullscreen 135 | # 136 | ############################################################################################ 137 | 138 | # enter fullscreen mode for the focused container 139 | bindsym $mod+f fullscreen 140 | 141 | #popup_during_fullscreen smart|ignore|leave_fullscreen 142 | popup_during_fullscreen leave_fullscreen 143 | 144 | 145 | 146 | ############################################################################################ 147 | # 148 | # Scratch Pad 149 | # 150 | ############################################################################################ 151 | 152 | # Make the currently focused window a scratchpad 153 | # move the currently focused window to the scratchpad 154 | bindsym $mod+Shift+minus move scratchpad 155 | 156 | # Show the next scratchpad window or hide the focused scratchpad window. 157 | # If there are multiple scratchpad windows, this command cycles through them. 158 | bindsym $mod+minus scratchpad show 159 | 160 | 161 | 162 | ############################################################################################ 163 | # 164 | # Resizing 165 | # 166 | ############################################################################################ 167 | 168 | # Key to enter resize mode 169 | bindsym $mod+r mode "resize" 170 | 171 | # resize window (you can also use the mouse for that) 172 | mode "resize" { 173 | # These bindings trigger as soon as you enter the resize mode 174 | 175 | # Pressing left will shrink the window’s width. 176 | # Pressing right will grow the window’s width. 177 | # Pressing up will shrink the window’s height. 178 | # Pressing down will grow the window’s height. 179 | bindsym $left resize shrink width 10 px or 10 ppt 180 | bindsym $down resize grow height 10 px or 10 ppt 181 | bindsym $up resize shrink height 10 px or 10 ppt 182 | bindsym $right resize grow width 10 px or 10 ppt 183 | 184 | # same bindings, but for the arrow keys 185 | bindsym Left resize shrink width 10 px or 10 ppt 186 | bindsym Down resize grow height 10 px or 10 ppt 187 | bindsym Up resize shrink height 10 px or 10 ppt 188 | bindsym Right resize grow width 10 px or 10 ppt 189 | 190 | # back to normal: Enter or Escape 191 | bindsym Return mode "default" 192 | bindsym Escape mode "default" 193 | } 194 | 195 | 196 | 197 | ############################################################################################ 198 | # 199 | # Navigation (inside one workspace) 200 | # 201 | ############################################################################################ 202 | 203 | ############################################################ 204 | # Change Focus 205 | ############################################################ 206 | 207 | # change focus 208 | # alternatively, you can use the cursor keys: 209 | bindsym $mod+Left focus left 210 | bindsym $mod+Down focus down 211 | bindsym $mod+Up focus up 212 | bindsym $mod+Right focus right 213 | 214 | bindsym $mod+$left focus left 215 | bindsym $mod+$down focus down 216 | bindsym $mod+$up focus up 217 | bindsym $mod+$right focus right 218 | 219 | 220 | ############################################################ 221 | # Move/snap Window 222 | ############################################################ 223 | 224 | # (Note: Previously done with $alt+Shift+) 225 | 226 | # Alternatively, you can use the cursor keys: 227 | bindsym $alt+Left move left 228 | bindsym $alt+Down move down 229 | bindsym $alt+Up move up 230 | bindsym $alt+Right move right 231 | 232 | # Move focused Window 233 | bindsym $alt+$left move left 234 | bindsym $alt+$down move down 235 | bindsym $alt+$up move up 236 | bindsym $alt+$right move right 237 | 238 | 239 | 240 | ############################################################################################ 241 | # 242 | # Navigation (workspaces) 243 | # 244 | ############################################################################################ 245 | 246 | ############################################################ 247 | # Go to workspace 248 | ############################################################ 249 | 250 | # Switch to workspace by number 251 | bindsym $mod+1 workspace $WS1 252 | bindsym $mod+2 workspace $WS2 253 | bindsym $mod+3 workspace $WS3 254 | bindsym $mod+4 workspace $WS4 255 | bindsym $mod+5 workspace $WS5 256 | bindsym $mod+6 workspace $WS6 257 | bindsym $mod+7 workspace $WS7 258 | bindsym $mod+8 workspace $WS8 259 | bindsym $mod+9 workspace $WS9 260 | bindsym $mod+0 workspace $WS10 261 | 262 | # Cycle through Workspaces (on current monitor) 263 | bindsym $control+$mod+Left workspace prev_on_output 264 | bindsym $control+$mod+Right workspace next_on_output 265 | bindsym $control+$mod+$left workspace prev_on_output 266 | bindsym $control+$mod+$right workspace next_on_output 267 | 268 | # For instance: Assume you are on workspace "1: www" and switch to "2: IM" 269 | # using mod+2 because somebody sent you a message. 270 | # You don’t need to remember where you came from now, 271 | # you can just press $mod+2 again to switch back to "1: www". 272 | workspace_auto_back_and_forth yes 273 | 274 | # Use alt+tab to switch between workspaces back and forth 275 | bindsym $mod+Tab workspace back_and_forth 276 | 277 | 278 | ############################################################ 279 | # Move container to workspace 280 | ############################################################ 281 | 282 | # Move focused container to workspace by number 283 | bindsym $mod+Shift+1 move container to workspace $WS1 284 | bindsym $mod+Shift+2 move container to workspace $WS2 285 | bindsym $mod+Shift+3 move container to workspace $WS3 286 | bindsym $mod+Shift+4 move container to workspace $WS4 287 | bindsym $mod+Shift+5 move container to workspace $WS5 288 | bindsym $mod+Shift+6 move container to workspace $WS6 289 | bindsym $mod+Shift+7 move container to workspace $WS7 290 | bindsym $mod+Shift+8 move container to workspace $WS8 291 | bindsym $mod+Shift+9 move container to workspace $WS9 292 | bindsym $mod+Shift+0 move container to workspace $WS10 293 | 294 | # Go to Workspace with next/prev window (Shift+Alt) 295 | bindsym $mod+Shift+Left exec "~/.config/i3/bin/wsmove.py prev" 296 | bindsym $mod+Shift+Right exec "~/.config/i3/bin/wsmove.py next" 297 | bindsym $mod+Shift+$left exec "~/.config/i3/bin/wsmove.py prev" 298 | bindsym $mod+Shift+$right exec "~/.config/i3/bin/wsmove.py next" 299 | 300 | 301 | 302 | ############################################################################################ 303 | # 304 | # Navigation (monitors) 305 | # 306 | ############################################################################################ 307 | 308 | # Move workspace (virtual desktop) to top|down|right|left monitor 309 | 310 | #move workspace to output <|> 311 | #move container to output <|> 312 | bindsym $mod+$alt+$up move workspace to output up 313 | bindsym $mod+$alt+$down move workspace to output down 314 | bindsym $mod+$alt+$right move workspace to output right 315 | bindsym $mod+$alt+$left move workspace to output left 316 | 317 | bindsym $mod+$alt+Up move workspace to output up 318 | bindsym $mod+$alt+Down move workspace to output down 319 | bindsym $mod+$alt+Right move workspace to output right 320 | bindsym $mod+$alt+Left move workspace to output left 321 | 322 | 323 | 324 | ############################################################################################ 325 | # 326 | # Program Hotkeys 327 | # 328 | ############################################################################################ 329 | 330 | ############################################################ 331 | # System 332 | ############################################################ 333 | 334 | # Reload the configuration file 335 | bindsym $mod+Shift+c reload 336 | 337 | # Restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 338 | bindsym $mod+Shift+r restart 339 | 340 | # Exit i3 (logs you out of your X session) 341 | #bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" 342 | bindsym $mod+Shift+e mode "$mode_system" 343 | 344 | # Kill focused window 345 | bindsym $mod+q kill 346 | 347 | # Lock, Logout, Suspend, Hibernat, Reboot, Poweroff 348 | set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (p) poweroff 349 | mode "$mode_system" { 350 | #bindsym l exec --no-startup-id system-lock.sh ~/Pictures/wallpaper/4k/2.png, mode "default" 351 | bindsym l exec --no-startup-id xlock -m, mode "default" 352 | bindsym e exec --no-startup-id i3-msg exit, mode "default" 353 | bindsym s exec --no-startup-id "xlock -b -m; system-suspend", mode "default" 354 | bindsym h exec --no-startup-id "xlock -b -m; system-hibernate", mode "default" 355 | bindsym r exec --no-startup-id system-reboot, mode "default" 356 | bindsym p exec --no-startup-id system-shutdown, mode "default" 357 | 358 | # back to normal: Enter or Escape 359 | bindsym Return mode "default" 360 | bindsym Escape mode "default" 361 | } 362 | 363 | 364 | ############################################################ 365 | # Apps 366 | ############################################################ 367 | 368 | # Start a terminal 369 | bindsym $mod+Return exec --no-startup-id exec urxvt -e tmux-attach 370 | bindsym $mod+Shift+Return exec --no-startup-id exec urxvt -name "floating_urxvt" -e tmux-attach 371 | 372 | # Run Dialog 373 | bindsym $mod+d exec "exec rofi -theme /usr/share/rofi/themes/lb.rasi -show run" 374 | bindsym $mod+space exec "exec rofi -theme /usr/share/rofi/themes/lb.rasi -show combi -combi-modi window,drun,run -modi combi,'calc:rcalc' -sidebar-mode" 375 | 376 | # Clipboard Dialog 377 | bindsym $mod+c exec "CM_LAUNCHER=rofi clipmenu -p 'clipboard:'" 378 | 379 | 380 | ############################################################ 381 | # Special Keyboard keys 382 | ############################################################ 383 | 384 | # Screenshot: all (with multi monitors) 385 | bindsym Print exec --no-startup-id "exec xscreenshot -c maim -m multi" 386 | # Screenshot: select window or rectangle 387 | bindsym $mod+Sys_Req exec --no-startup-id "exec xscreenshot -c maim -m selection" 388 | # Screenshot: select window 389 | bindsym $mod+Shift+Sys_Req exec --no-startup-id "exec xscreenshot -c maim -m window" 390 | 391 | 392 | 393 | ############################################################################################ 394 | # 395 | # Default floating Apps 396 | # 397 | ############################################################################################ 398 | 399 | # Use xprop to detect class name: 400 | # $ xprop |grep -i class 401 | # WM_CLASS(STRING) = "gajim", "Gajim" 402 | # (Use the second name, that starts with a capital letter) 403 | 404 | # Drop-down Terminal 405 | exec --no-startup-id exec urxvt -name scratchurxvt -e tmux-attach 406 | for_window [instance="scratchurxvt"] move scratchpad 407 | bindsym $mod+grave [instance="scratchurxvt"] scratchpad show 408 | 409 | # Allow to start urxvt in floating mode ($mod+shift+enter) 410 | for_window [class="URxvt" instance="floating_urxvt$"] floating toggle 411 | 412 | 413 | 414 | ############################################################################################ 415 | # 416 | # Autostart Programs 417 | # 418 | ############################################################################################ 419 | 420 | # Autostart helper: https://github.com/cytopia/autorunner 421 | exec_always --no-startup-id /usr/local/bin/autorunner 422 | 423 | # Wallpaper 424 | exec_always --no-startup-id feh --no-fehbg --bg-scale ${HOME}/Pictures/wallpaper2.png 425 | --------------------------------------------------------------------------------