├── gtk └── .config │ ├── gtk-2.0 │ ├── settings.ini │ └── gtkfilechooser.ini │ └── gtk-3.0 │ ├── bookmarks │ └── settings.ini ├── karabiner └── .config │ └── karabiner │ ├── .gitignore │ ├── assets │ └── complex_modifications │ │ └── custom-capslock.json │ └── karabiner.json ├── vim ├── .vim │ ├── .gitignore │ └── coc-settings.json └── .vimrc ├── awesome └── .config │ └── awesome │ ├── autorun.lua │ ├── screenshot.lua │ ├── theme.lua │ └── rc.lua ├── kvantum └── .config │ └── Kvantum │ ├── kvantum.kvconfig │ └── Mojave-dark │ └── Mojave-dark.kvconfig ├── bash ├── .bash_profile ├── .config │ └── powerline │ │ ├── config.json │ │ ├── themes │ │ └── shell │ │ │ └── default_leftonly.json │ │ └── colorschemes │ │ └── default.json └── .bashrc ├── X11 └── xorg.conf.d │ ├── 20-amdgpu.conf │ ├── 20-displaylink.conf │ ├── 40-libinput.conf │ └── 00-keyboard.conf ├── firefox ├── treestyletabs.css └── userChrome.css ├── spotify-ripper └── .spotify-ripper │ └── spotify_appkey.key ├── ubersicht └── Library │ └── Application Support │ └── Übersicht │ └── widgets │ └── logo.png ├── profile ├── .xprofile ├── .profile └── .xinitrc ├── screenlayout └── .screenlayout │ ├── laptop.sh │ └── work.sh ├── .gitmodules ├── KeyBindings └── Library │ └── KeyBindings │ └── DefaultKeyBinding.dict ├── tmux └── .tmux.conf ├── git └── .gitconfig ├── spacebar └── .config │ └── spacebar │ └── spacebarrc ├── termite └── .config │ └── termite │ └── config ├── yabai └── .config │ └── yabai │ └── yabairc ├── deadbeef └── .config │ └── deadbeef │ └── config ├── term └── .Xresources ├── vivaldi ├── treetab_dark.tt_theme └── treetab_light.tt_theme ├── alacritty └── .config │ └── alacritty │ └── alacritty.yml ├── skhd └── .config │ └── skhd │ └── skhdrc ├── neovim └── .config │ └── nvim │ └── init.vim ├── sway └── .config │ └── sway │ └── config ├── install.txt └── zsh └── .zshrc /gtk/.config/gtk-2.0/settings.ini: -------------------------------------------------------------------------------- 1 | ../gtk-3.0/settings.ini -------------------------------------------------------------------------------- /karabiner/.config/karabiner/.gitignore: -------------------------------------------------------------------------------- 1 | automatic_backups 2 | -------------------------------------------------------------------------------- /gtk/.config/gtk-3.0/bookmarks: -------------------------------------------------------------------------------- 1 | file:///home/kvaps/Music/onetwo 2 | -------------------------------------------------------------------------------- /vim/.vim/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !coc-settings.json 4 | -------------------------------------------------------------------------------- /awesome/.config/awesome/autorun.lua: -------------------------------------------------------------------------------- 1 | run_once("wmname", "LG3D") -- java fix 2 | -------------------------------------------------------------------------------- /kvantum/.config/Kvantum/kvantum.kvconfig: -------------------------------------------------------------------------------- 1 | [General] 2 | theme=Mojave-dark 3 | -------------------------------------------------------------------------------- /bash/.bash_profile: -------------------------------------------------------------------------------- 1 | # 2 | # ~/.bash_profile 3 | # 4 | [[ -f ~/.bashrc ]] && . ~/.bashrc 5 | -------------------------------------------------------------------------------- /X11/xorg.conf.d/20-amdgpu.conf: -------------------------------------------------------------------------------- 1 | Section "Device" 2 | Identifier "AMDGPU" 3 | Driver "amdgpu" 4 | EndSection 5 | -------------------------------------------------------------------------------- /firefox/treestyletabs.css: -------------------------------------------------------------------------------- 1 | :root { --tab-height: 22pt !important; } 2 | .tab:not(.pinned) { height: var(--tab-height) !important; } 3 | -------------------------------------------------------------------------------- /spotify-ripper/.spotify-ripper/spotify_appkey.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kvaps/dotfiles/HEAD/spotify-ripper/.spotify-ripper/spotify_appkey.key -------------------------------------------------------------------------------- /X11/xorg.conf.d/20-displaylink.conf: -------------------------------------------------------------------------------- 1 | Section "Device" 2 | Identifier "DisplayLink" 3 | Driver "modesetting" 4 | Option "PageFlip" "false" 5 | EndSection 6 | -------------------------------------------------------------------------------- /ubersicht/Library/Application Support/Übersicht/widgets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kvaps/dotfiles/HEAD/ubersicht/Library/Application Support/Übersicht/widgets/logo.png -------------------------------------------------------------------------------- /profile/.xprofile: -------------------------------------------------------------------------------- 1 | export EDITOR="nvim" 2 | export BROWSER="firefox" 3 | export TERMINAL="termite" 4 | export QT_QPA_PLATFORMTHEME="gtk3" 5 | export QT_STYLE_OVERRIDE="kvantum" 6 | -------------------------------------------------------------------------------- /bash/.config/powerline/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "ext": { 3 | "shell": { 4 | "colorscheme": "default", 5 | "theme": "default_leftonly" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /screenlayout/.screenlayout/laptop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | xrandr --output VIRTUAL1 --off --output eDP1 --mode 1920x1080 --pos 0x0 --rotate normal --output DP1 --off --output DVI-I-1-1 --off --output HDMI2 --off --output HDMI1 --off 3 | -------------------------------------------------------------------------------- /profile/.profile: -------------------------------------------------------------------------------- 1 | export EDITOR="vim" 2 | export BROWSER="firefox" 3 | export TERMINAL="termite" 4 | export QT_QPA_PLATFORMTHEME="gtk3" 5 | export QT_STYLE_OVERRIDE="kvantum" 6 | export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" 7 | -------------------------------------------------------------------------------- /X11/xorg.conf.d/40-libinput.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad" 3 | Driver "libinput" 4 | MatchIsTouchpad "on" 5 | Option "Tapping" "on" 6 | Option "TappingButtonMap" "lmr" 7 | Option "DisableWhileTyping" "off" 8 | EndSection 9 | -------------------------------------------------------------------------------- /gtk/.config/gtk-2.0/gtkfilechooser.ini: -------------------------------------------------------------------------------- 1 | [Filechooser Settings] 2 | LocationMode=filename-entry 3 | ShowHidden=false 4 | ShowSizeColumn=true 5 | GeometryX=0 6 | GeometryY=0 7 | GeometryWidth=1010 8 | GeometryHeight=728 9 | SortColumn=modified 10 | SortOrder=descending 11 | StartupMode=recent 12 | -------------------------------------------------------------------------------- /profile/.xinitrc: -------------------------------------------------------------------------------- 1 | if [ -d /etc/X11/xinit/xinitrc.d ] ; then 2 | for f in /etc/X11/xinit/xinitrc.d/?* ; do 3 | [ -x "$f" ] && . "$f" 4 | done 5 | unset f 6 | fi 7 | 8 | [[ -f ~/.xprofile ]] && . .xprofile 9 | 10 | [[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources 11 | 12 | exec awesome 13 | -------------------------------------------------------------------------------- /X11/xorg.conf.d/00-keyboard.conf: -------------------------------------------------------------------------------- 1 | # Read and parsed by systemd-localed. It's probably wise not to edit this file 2 | # manually too freely. 3 | Section "InputClass" 4 | Identifier "system-keyboard" 5 | MatchIsKeyboard "on" 6 | Option "XkbLayout" "cz,ru" 7 | Option "XkbVariant" "coder," 8 | Option "XkbOptions" "grp:caps_toggle" 9 | EndSection 10 | -------------------------------------------------------------------------------- /firefox/userChrome.css: -------------------------------------------------------------------------------- 1 | 2 | @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); 3 | 4 | /* Hide horizontal tab toolbar */ 5 | #TabsToolbar { 6 | visibility:collapse!important; 7 | } 8 | 9 | /* Hide "Tree Style Tabs" sidebar header */ 10 | #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header { 11 | display:none; 12 | } 13 | -------------------------------------------------------------------------------- /screenlayout/.screenlayout/work.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if ! xrandr | grep -q 1920x1080_60.00; then 3 | MODELINE="$(cvt 1920 1080 60 | tail -n1 | cut -d' ' -f3-)" 4 | xrandr --newmode 1920x1080_60.00 $MODELINE 5 | fi 6 | xrandr --addmode DP1 1920x1080_60.00 7 | xrandr --output eDP1 --off --output DP1 --primary --mode 1920x1080_60.00 --pos 1920x0 --rotate normal --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --output HDMI2 --off --output VIRTUAL1 --off 8 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ubersicht/Library/Application Support/Übersicht/widgets/simple-bar"] 2 | path = ubersicht/Library/Application Support/Übersicht/widgets/simple-bar 3 | url = https://github.com/kvaps/simple-bar 4 | branch = kvaps 5 | [submodule "ubersicht/Library/Application Support/Übersicht/widgets/pretty-weather.widget"] 6 | path = ubersicht/Library/Application Support/Übersicht/widgets/pretty-weather.widget 7 | url = https://github.com/kvaps/pretty-weather 8 | branch = kvaps 9 | -------------------------------------------------------------------------------- /gtk/.config/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-theme-name=Mojave-dark-alt 3 | gtk-icon-theme-name=Tela-orange-dark 4 | gtk-font-name=DejaVu Sans 10 5 | gtk-cursor-theme-name=Adwaita 6 | gtk-cursor-theme-size=0 7 | gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ 8 | gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR 9 | gtk-button-images=0 10 | gtk-menu-images=0 11 | gtk-enable-event-sounds=1 12 | gtk-enable-input-feedback-sounds=1 13 | gtk-xft-antialias=1 14 | gtk-xft-hinting=1 15 | gtk-xft-hintstyle=hintmedium 16 | -------------------------------------------------------------------------------- /vim/.vim/coc-settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "diagnostic.messageTarget": "echo", 3 | "diagnostic.checkCurrentLine": true, 4 | "languageserver": { 5 | "jsonnet": { 6 | "command": "jsonnet-language-server", 7 | "args": ["-t"], 8 | "rootPatterns": [".git/", "jsonnetfile.json"], 9 | "filetypes": ["jsonnet","libsonnet"] 10 | }, 11 | "terraform": { 12 | "command": "terraform-lsp", 13 | "filetypes": [ 14 | "terraform" 15 | ], 16 | "initializationOptions": {} 17 | } 18 | }, 19 | "coc.source.file.triggerCharacters": [ "/" ], 20 | "python.jediEnabled": false 21 | } 22 | -------------------------------------------------------------------------------- /KeyBindings/Library/KeyBindings/DefaultKeyBinding.dict: -------------------------------------------------------------------------------- 1 | { 2 | "\UF729" = moveToBeginningOfParagraph:; // home 3 | "\UF72B" = moveToEndOfParagraph:; // end 4 | "$\UF729" = moveToBeginningOfParagraphAndModifySelection:; // shift-home 5 | "$\UF72B" = moveToEndOfParagraphAndModifySelection:; // shift-end 6 | "^\UF729" = moveToBeginningOfDocument:; // ctrl-home 7 | "^\UF72B" = moveToEndOfDocument:; // ctrl-end 8 | "^$\UF729" = moveToBeginningOfDocumentAndModifySelection:; // ctrl-shift-home 9 | "^$\UF72B" = moveToEndOfDocumentAndModifySelection:; // ctrl-shift-end 10 | "^\UF702" = moveWordLeft:; 11 | "^\UF703" = moveWordRight:; 12 | "^$\UF702" = moveWordLeftAndModifySelection:; 13 | "^$\UF703" = moveWordRightAndModifySelection:; 14 | } 15 | -------------------------------------------------------------------------------- /karabiner/.config/karabiner/assets/complex_modifications/custom-capslock.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Change caps_lock to F19 and right_option", 3 | "rules": [ 4 | { 5 | "description": "Post F19 if Caps is tapped, right_option if held.", 6 | "manipulators": [ 7 | { 8 | "type": "basic", 9 | "from": { 10 | "key_code": "caps_lock", 11 | "modifiers": { 12 | "optional": [ 13 | "any" 14 | ] 15 | } 16 | }, 17 | "to": [ 18 | { 19 | "key_code": "right_option", 20 | "lazy": true 21 | } 22 | ], 23 | "to_if_alone": [ 24 | { 25 | "key_code": "f19" 26 | } 27 | ] 28 | } 29 | ] 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /bash/.config/powerline/themes/shell/default_leftonly.json: -------------------------------------------------------------------------------- 1 | { 2 | "segments": { 3 | "left": [ 4 | { 5 | "function": "powerline.segments.common.net.hostname", 6 | "priority": 10 7 | }, 8 | { 9 | "function": "powerline.segments.common.env.user", 10 | "priority": 30 11 | }, 12 | { 13 | "function": "powerline.segments.common.env.virtualenv", 14 | "priority": 50 15 | }, 16 | { 17 | "function": "powerline_gitstatus.gitstatus", 18 | "priority": 40 19 | }, 20 | { 21 | "function": "powerline.segments.shell.cwd", 22 | "priority": 10, 23 | "args": { 24 | "use_path_separator": true, 25 | "ellipsis": "…" 26 | } 27 | }, 28 | { 29 | "function": "powerline.segments.shell.jobnum", 30 | "priority": 20 31 | }, 32 | { 33 | "function": "powerline.segments.shell.last_status", 34 | "priority": 10 35 | } 36 | ] 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /tmux/.tmux.conf: -------------------------------------------------------------------------------- 1 | # Enable mouse mode 2 | set -g mouse 3 | 4 | # Set xterm-like hotkeys 5 | set -g terminal-overrides 'xterm*:smcup@:rmcup@' 6 | #set-option -g default-terminal "screen-256color" 7 | set-option -g default-terminal "xterm-256color" 8 | set-window-option -g xterm-keys on 9 | bind-key -n Home send Escape "OH" 10 | bind-key -n End send Escape "OF" 11 | 12 | # Vi-like selection mode 13 | set-window-option -g mode-keys vi 14 | bind-key P paste-buffer 15 | bind-key -T copy-mode-vi v send-keys -X begin-selection 16 | bind-key -T copy-mode-vi y send-keys -X copy-selection 17 | bind-key -T copy-mode-vi r send-keys -X rectangle-toggle 18 | bind-key -T copy-mode-vi 'Home' send -X start-of-line 19 | bind-key -T copy-mode-vi 'End' send -X end-of-line 20 | 21 | # Do not scroll after mouse selection 22 | unbind -T copy-mode-vi MouseDragEnd1Pane 23 | 24 | # Start windows and panes at 2, not 0 25 | set -g base-index 2 26 | setw -g pane-base-index 2 27 | 28 | # List of plugins 29 | set -g @plugin 'tmux-plugins/tpm' 30 | set -g @plugin 'tmux-plugins/tmux-sensible' 31 | set -g @plugin 'wfxr/tmux-power' 32 | 33 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 34 | run '~/.tmux/plugins/tpm/tpm' 35 | -------------------------------------------------------------------------------- /bash/.config/powerline/colorschemes/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "groups": { 3 | "gitstatus": { "fg": "gray8", "bg": "gray2", "attrs": [] }, 4 | "gitstatus_branch": { "fg": "gray8", "bg": "gray2", "attrs": [] }, 5 | "gitstatus_branch_clean": { "fg": "green", "bg": "gray2", "attrs": [] }, 6 | "gitstatus_branch_dirty": { "fg": "gray8", "bg": "gray2", "attrs": [] }, 7 | "gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] }, 8 | "gitstatus_tag": { "fg": "darkcyan", "bg": "gray2", "attrs": [] }, 9 | "gitstatus_behind": { "fg": "gray10", "bg": "gray2", "attrs": [] }, 10 | "gitstatus_ahead": { "fg": "gray10", "bg": "gray2", "attrs": [] }, 11 | "gitstatus_staged": { "fg": "green", "bg": "gray2", "attrs": [] }, 12 | "gitstatus_unmerged": { "fg": "brightred", "bg": "gray2", "attrs": [] }, 13 | "gitstatus_changed": { "fg": "mediumorange", "bg": "gray2", "attrs": [] }, 14 | "gitstatus_untracked": { "fg": "brightestorange", "bg": "gray2", "attrs": [] }, 15 | "gitstatus_stashed": { "fg": "darkblue", "bg": "gray2", "attrs": [] }, 16 | "gitstatus:divider": { "fg": "gray8", "bg": "gray2", "attrs": [] } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /awesome/.config/awesome/screenshot.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local naughty = require("naughty") 3 | 4 | timers = { 5,10 } 5 | screenshot = os.getenv("HOME") .. "/Pictures/scrot/$(date +%F_%T).png" 6 | 7 | function scrot_full() 8 | scrot("scrot " .. screenshot .. " -e 'xclip -selection c -t image/png < $f', scrot_callback", scrot_callback, "Take a screenshot of entire screen") 9 | end 10 | 11 | function scrot_selection() 12 | scrot("sleep 0.5 && scrot -s " .. screenshot .. " -e 'xclip -selection c -t image/png < $f'", scrot_callback, "Take a screenshot of selection") 13 | end 14 | 15 | function scrot_window() 16 | scrot("scrot -u " .. screenshot .. " -e 'xclip -selection c -t image/png < $f'", scrot_callback, "Take a screenshot of focused window") 17 | end 18 | 19 | function scrot_delay() 20 | items={} 21 | for key, value in ipairs(timers) do 22 | items[#items+1]={tostring(value) , "scrot -d ".. value.." " .. screenshot .. " -e 'xclip -selection c -t image/png < $f'","Take a screenshot of delay" } 23 | end 24 | awful.menu.new( 25 | { 26 | items = items 27 | } 28 | ):show({keygrabber= true}) 29 | scrot_callback() 30 | end 31 | 32 | function scrot(cmd , callback, args) 33 | awful.util.spawn_with_shell(cmd) 34 | callback(args) 35 | end 36 | function scrot_callback(text) 37 | naughty.notify({ 38 | text = text, 39 | timeout = 0.5 40 | }) 41 | end -------------------------------------------------------------------------------- /git/.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = "Andrei Kvapil" 3 | email = kvapss@gmail.com 4 | signingkey = 6A895C2DB83B4289 5 | [sendemail] 6 | confirm = auto 7 | smtpServer = smtp.gmail.com 8 | smtpServerPort = 587 9 | smtpEncryption = tls 10 | smtpUser = kvapss@gmail.com 11 | [include] 12 | path = .gitconfig.local 13 | [core] 14 | autocrlf = false 15 | safecrlf = true 16 | [alias] 17 | hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short 18 | c = commit -s 19 | [credential] 20 | helper = cache --timeout=3600 21 | #[url "git@gist.github.com:kvaps"] 22 | # insteadOf = https://gist.github.com/kvaps 23 | [url "git@github.com:kvaps"] 24 | insteadOf = https://github.com/kvaps 25 | [url "git@github.com:deckhouse"] 26 | insteadOf = https://github.com/deckhouse 27 | [url "git@github.com:wedos"] 28 | insteadOf = https://github.com/wedos 29 | [url "git@github.com:piraeusdatastore"] 30 | insteadOf = https://github.com/piraeusdatastore 31 | [url "git@github.com:ltsp"] 32 | insteadOf = https://github.com/ltsp 33 | [url "git@github.com:kubefarm"] 34 | insteadOf = https://github.com/kubefarm 35 | [url "git@github.com:opennebula"] 36 | insteadOf = https://github.com/opennebula 37 | [url "ssh://git@gitlab.wedos.org/"] 38 | insteadOf = https://gitlab.wedos.org/ 39 | [filter "lfs"] 40 | clean = git-lfs clean -- %f 41 | smudge = git-lfs smudge -- %f 42 | process = git-lfs filter-process 43 | required = true 44 | [pull] 45 | ff = only 46 | [commit] 47 | gpgSign = true 48 | [init] 49 | defaultBranch = master 50 | [gpg] 51 | program = /usr/local/MacGPG2/bin/gpg2 52 | [alias] 53 | # Usage: git signoff-rebase [base-commit] 54 | signoff-rebase = "!EDITOR='sed -i -re s/^pick/e/' sh -c 'git rebase -i $1 && while test -f .git/rebase-merge/interactive; do git commit --amend --signoff --no-edit && git rebase --continue; done' -" 55 | -------------------------------------------------------------------------------- /spacebar/.config/spacebar/spacebarrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | spacebar -m config position bottom 4 | spacebar -m config display all 5 | spacebar -m config height 26 6 | spacebar -m config title on 7 | spacebar -m config spaces on 8 | spacebar -m config clock on 9 | spacebar -m config power on 10 | spacebar -m config padding_left 20 11 | spacebar -m config padding_right 20 12 | spacebar -m config spacing_left 25 13 | spacebar -m config spacing_right 15 14 | spacebar -m config text_font "Menlo:Regular:12.0" 15 | spacebar -m config icon_font "DejaVuSansMono Nerd Font Mono:Bold:15.0" 16 | spacebar -m config background_color 0xff202020 17 | spacebar -m config foreground_color 0xffa8a8a8 18 | spacebar -m config power_icon_color 0xffcd950c 19 | spacebar -m config battery_icon_color 0xffd75f5f 20 | spacebar -m config dnd_icon_color 0xffa8a8a8 21 | spacebar -m config clock_icon_color 0xffa8a8a8 22 | spacebar -m config power_icon_strip   23 | spacebar -m config space_icon • 24 | spacebar -m config space_icon_color 0xffffab91 25 | spacebar -m config space_icon_color_secondary 0xff78c4d4 26 | spacebar -m config space_icon_color_tertiary 0xfffff9b0 27 | spacebar -m config space_icon_strip 1 2 3 4 5 6 7 8 9 10 28 | spacebar -m config spaces_for_all_displays off 29 | spacebar -m config clock_icon  30 | spacebar -m config dnd_icon  31 | spacebar -m config clock_format "%a %e %h %Y %R" 32 | spacebar -m config right_shell on 33 | spacebar -m config right_shell_icon  34 | spacebar -m config right_shell_command "whoami" 35 | 36 | echo "spacebar configuration loaded.." 37 | -------------------------------------------------------------------------------- /bash/.bashrc: -------------------------------------------------------------------------------- 1 | # 2 | # ~/.bashrc 3 | # 4 | 5 | export PATH=$PATH:${HOME}/.local/bin 6 | export EDITOR="vim" 7 | export BROWSER="firefox" 8 | export QT_QPA_PLATFORMTHEME="qt5ct" 9 | export QT_STYLE_OVERRIDE="kvantum" 10 | export GOPATH=$HOME/go 11 | export GOBIN=$GOPATH/bin 12 | export PATH="$PATH:$GOBIN" 13 | 14 | # OpenNebula 15 | export PATH=$PATH:.gem/ruby/2.6.0/bin 16 | export ONE_XMLRPC=https://api.opennebula.wedos.cloud/RPC2 17 | 18 | # If not running interactively, don't do anything 19 | [[ $- != *i* ]] && return 20 | 21 | # Colorize output 22 | alias ls='ls --color=auto' 23 | alias grep='grep --color=auto' 24 | alias diff='diff --color=auto' 25 | export LESS_TERMCAP_mb=$'\E[1;31m' # begin blink 26 | export LESS_TERMCAP_md=$'\E[1;36m' # begin bold 27 | export LESS_TERMCAP_me=$'\E[0m' # reset bold/blink 28 | export LESS_TERMCAP_so=$'\E[01;44;33m' # begin reverse video 29 | export LESS_TERMCAP_se=$'\E[0m' # reset reverse video 30 | export LESS_TERMCAP_us=$'\E[1;32m' # begin underline 31 | export LESS_TERMCAP_ue=$'\E[0m' # reset underline 32 | 33 | PS1='[\u@\h \W]\$ ' 34 | 35 | # Powerline 36 | if [ "$TERM" != "linux" ] && [ -f $(which powerline-daemon) ]; then 37 | powerline-daemon -q 38 | POWERLINE_BASH_CONTINUATION=1 39 | POWERLINE_BASH_SELECT=1 40 | . /usr/lib/python*/site-packages/powerline/bindings/bash/powerline.sh 41 | fi 42 | 43 | SSH_ENV="$HOME/.ssh/environment" 44 | 45 | function start_agent() { 46 | echo "Initialising new SSH agent..." 47 | /usr/bin/ssh-agent | sed 's/^echo/#echo/' >"${SSH_ENV}" 48 | echo succeeded 49 | chmod 600 "${SSH_ENV}" 50 | . "${SSH_ENV}" >/dev/null 51 | } 52 | 53 | # Source SSH settings, if applicable 54 | 55 | if [ -f "${SSH_ENV}" ]; then 56 | . "${SSH_ENV}" >/dev/null 57 | #ps ${SSH_AGENT_PID} doesn't work under cywgin 58 | ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ >/dev/null || { 59 | start_agent 60 | } 61 | else 62 | start_agent 63 | fi 64 | 65 | # Setup fuck alias 66 | eval "$(thefuck --alias)" 67 | 68 | # Kubectl shell completion 69 | source '/home/kvaps/.kube/completion.bash.inc' 70 | -------------------------------------------------------------------------------- /termite/.config/termite/config: -------------------------------------------------------------------------------- 1 | [options] 2 | #allow_bold = true 3 | #audible_bell = false 4 | #bold_is_bright = true 5 | #cell_height_scale = 1.0 6 | #cell_width_scale = 1.0 7 | clickable_url = false 8 | #dynamic_title = true 9 | font = Monospace 10.25 10 | font = DejaVu Sans Mono 10.25 11 | #fullscreen = true 12 | icon_name = terminal 13 | #mouse_autohide = false 14 | #scroll_on_output = false 15 | #scroll_on_keystroke = true 16 | # Length of the scrollback buffer, 0 disabled the scrollback buffer 17 | # and setting it to a negative value means "infinite scrollback" 18 | scrollback_lines = 10000 19 | #search_wrap = true 20 | #urgent_on_bell = true 21 | #hyperlinks = false 22 | 23 | # $BROWSER is used by default if set, with xdg-open as a fallback 24 | #browser = xdg-open 25 | 26 | # "system", "on" or "off" 27 | cursor_blink = off 28 | 29 | # "block", "underline" or "ibeam" 30 | cursor_shape = block 31 | 32 | # Hide links that are no longer valid in url select overlay mode 33 | #filter_unmatched_urls = true 34 | 35 | # Emit escape sequences for extra modified keys 36 | #modify_other_keys = false 37 | 38 | # set size hints for the window 39 | #size_hints = false 40 | 41 | # "off", "left" or "right" 42 | scrollbar = off 43 | 44 | [colors] 45 | # If both of these are unset, cursor falls back to the foreground color, 46 | # and cursor_foreground falls back to the background color. 47 | cursor = #ebdbb2 48 | cursor_foreground = #000000 49 | 50 | foreground = #ebdbb2 51 | #foreground_bold = #ffffff 52 | background = #17171c 53 | 54 | # 20% background transparency (requires a compositor) 55 | #background = rgba(63, 63, 63, 0.8) 56 | 57 | # If unset, will reverse foreground and background 58 | #highlight = #ebdbb2 59 | 60 | # Colors from color0 to color254 can be set 61 | color0 = #282828 62 | color1 = #cc241d 63 | color2 = #98971a 64 | color3 = #d79921 65 | color4 = #458588 66 | color5 = #b16286 67 | color6 = #689d6a 68 | color7 = #bdae93 69 | color8 = #7c6f64 70 | color9 = #fb4934 71 | color10 = #b8bb26 72 | color11 = #fabd2f 73 | color12 = #83a598 74 | color13 = #d3869b 75 | color14 = #8ec07c 76 | color15 = #ebdbb2 77 | 78 | [hints] 79 | #font = Monospace 12 80 | #foreground = #dcdccc 81 | #background = #3f3f3f 82 | #active_foreground = #e68080 83 | #active_background = #3f3f3f 84 | #padding = 2 85 | #border = #3f3f3f 86 | #border_width = 0.5 87 | #roundness = 2.0 88 | 89 | # vim: ft=dosini cms=#%s 90 | -------------------------------------------------------------------------------- /yabai/.config/yabai/yabairc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # the scripting-addition must be loaded manually if 4 | # you are running yabai on macOS Big Sur. Uncomment 5 | # the following line to have the injection performed 6 | # when the config is executed during startup. 7 | # 8 | # for this to work you must configure sudo such that 9 | # it will be able to run the command without password 10 | # 11 | # see this wiki page for information: 12 | # - https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release) 13 | # 14 | # sudo yabai --load-sa 15 | # yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" 16 | 17 | # global settings 18 | yabai -m config external_bar all:26:0 19 | 20 | yabai -m config mouse_follows_focus on 21 | yabai -m config focus_follows_mouse off 22 | yabai -m config window_placement second_child 23 | yabai -m config window_topmost off 24 | yabai -m config window_shadow on 25 | yabai -m config window_opacity off 26 | yabai -m config window_opacity_duration 0.0 27 | yabai -m config active_window_opacity 1.0 28 | yabai -m config normal_window_opacity 0.90 29 | yabai -m config window_border off 30 | yabai -m config window_border_width 6 31 | yabai -m config active_window_border_color 0xff775759 32 | yabai -m config normal_window_border_color 0xff555555 33 | yabai -m config insert_feedback_color 0xffd75f5f 34 | yabai -m config split_ratio 0.50 35 | yabai -m config auto_balance off 36 | yabai -m config mouse_modifier alt 37 | yabai -m config mouse_action1 move 38 | yabai -m config mouse_action2 resize 39 | yabai -m config mouse_drop_action swap 40 | 41 | # general space settings 42 | yabai -m config layout floating 43 | yabai -m config top_padding 06 44 | yabai -m config bottom_padding 06 45 | yabai -m config left_padding 06 46 | yabai -m config right_padding 06 47 | yabai -m config window_gap 06 48 | 49 | 50 | yabai -m signal --add event=space_changed \ 51 | action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'" 52 | 53 | # Keep focus on space when application terminated 54 | yabai -m signal --add event=window_destroyed action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse" 55 | yabai -m signal --add event=application_terminated action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse" 56 | -------------------------------------------------------------------------------- /deadbeef/.config/deadbeef/config: -------------------------------------------------------------------------------- 1 | artwork.filemask *cover*.jpg;*front*.jpg;*folder*.jpg;*cover*.png;*front*.png;*folder*.png 2 | cli_add_playlist_name Default 3 | deadbeef_version 1.8.2 4 | gtkui.layout.0.6.2 vbox expand="0 1" fill="1 1" homogeneous=0 {hbox expand="0 1 0" fill="1 1 1" homogeneous=0 {playtb {} seekbar {} volumebar {} } tabbed_playlist hideheaders=0 width=1918 {} } 5 | gtkui.override_bar_colors 0 6 | gtkui.statusbar.visible 1 7 | gtkui.tabscroll 0 8 | gtkui.titlebar_playing_tf %artist% - %title% - DeaDBeeF-%_deadbeef_version% 9 | gtkui.titlebar_stopped_tf DeaDBeeF-%_deadbeef_version% 10 | gui_plugin GTK3 11 | hotkey.key01 "Ctrl f" 0 0 find 12 | hotkey.key02 "Ctrl o" 0 0 open_files 13 | hotkey.key03 "Ctrl n" 0 0 new_playlist 14 | hotkey.key04 "Ctrl a" 0 0 select_all 15 | hotkey.key05 "Escape" 0 0 deselect_all 16 | hotkey.key06 "Ctrl m" 0 0 toggle_stop_after_current 17 | hotkey.key07 "Ctrl j" 0 0 jump_to_current_track 18 | hotkey.key08 "F1" 0 0 help 19 | hotkey.key09 "Delete" 1 0 remove_from_playlist 20 | hotkey.key10 "Ctrl w" 0 0 remove_current_playlist 21 | hotkey.key11 "Alt Return" 1 0 track_properties 22 | hotkey.key12 "Return" 0 0 play 23 | hotkey.key13 "Ctrl p" 0 0 toggle_pause 24 | hotkey.key14 "Alt 1" 0 0 playlist1 25 | hotkey.key15 "Alt 2" 0 0 playlist2 26 | hotkey.key16 "Alt 3" 0 0 playlist3 27 | hotkey.key17 "Alt 4" 0 0 playlist4 28 | hotkey.key18 "Alt 5" 0 0 playlist5 29 | hotkey.key19 "Alt 6" 0 0 playlist6 30 | hotkey.key20 "Alt 7" 0 0 playlist7 31 | hotkey.key21 "Alt 8" 0 0 playlist8 32 | hotkey.key22 "Alt 9" 0 0 playlist9 33 | hotkey.key23 "Alt 0" 0 0 playlist10 34 | hotkey.key24 "z" 0 0 prev 35 | hotkey.key25 "x" 0 0 play 36 | hotkey.key26 "c" 0 0 toggle_pause 37 | hotkey.key27 "v" 0 0 stop 38 | hotkey.key28 "b" 0 0 next 39 | hotkey.key29 "n" 0 0 playback_random 40 | hotkey.key30 "Ctrl k" 0 0 toggle_stop_after_album 41 | hotkey.key31 "space" 0 0 play_pause 42 | hotkey.key32 "Ctrl q" 1 0 toggle_in_playback_queue 43 | hotkeys_created 1 44 | logwindow.geometry.h 200 45 | logwindow.geometry.w 400 46 | logwindow.geometry.x 40 47 | logwindow.geometry.y 40 48 | mainwin.geometry.h 1058 49 | mainwin.geometry.w 1918 50 | mainwin.geometry.x 0 51 | mainwin.geometry.y 20 52 | network.proxy.port 8080 53 | output_plugin pulseaudio 54 | playback.loop 0 55 | playback.order 0 56 | playback.volume -9.561244 57 | playlist.current 1 58 | playlist.cursor.0 2 59 | playlist.cursor.1 1 60 | playlist.scroll.0 -2 61 | playlist.scroll.1 0 62 | playlist.scroll.cursorfollowplayback 1 63 | playlist.tab.00000 T.BIRD 64 | playlist.tab.00001 Default 65 | prefwin.geometry.h 528 66 | prefwin.geometry.w 665 67 | prefwin.geometry.x 632 68 | prefwin.geometry.y 284 69 | resume.paused 0 70 | resume.playlist 1 71 | resume.position 187.19039 72 | resume.track 0 73 | streamer.samplerate 44100 74 | streamer.samplerate_mult_44 44100 75 | streamer.samplerate_mult_48 48000 76 | trkproperties.geometry.h 400 77 | trkproperties.geometry.w 400 78 | trkproperties.geometry.x 176 79 | trkproperties.geometry.y 279 80 | -------------------------------------------------------------------------------- /term/.Xresources: -------------------------------------------------------------------------------- 1 | ! Terminal name 2 | *termName: xterm-256color 3 | 4 | ! Use UTF-8 5 | XTerm*locale: true 6 | XTerm*metaSendsEscape: true 7 | 8 | ! Save 4096 lines 9 | Xterm*saveLines: 4096 10 | 11 | ! URxvt appearance 12 | urxvt*transparent: true 13 | urxvt*shading: 30 14 | URxvt.scrollBar: false 15 | 16 | ! Colors 17 | *foreground: rgb:eb/db/b2 18 | *background: rgb:17/17/17 19 | *color0: rgb:28/28/28 20 | *color1: rgb:cc/24/1d 21 | *color2: rgb:98/97/1a 22 | *color3: rgb:d7/99/21 23 | *color4: rgb:45/85/88 24 | *color5: rgb:b1/62/86 25 | *color6: rgb:68/9d/6a 26 | *color7: rgb:bd/ae/93 27 | *color8: rgb:7c/6f/64 28 | *color9: rgb:fb/49/34 29 | *color10: rgb:b8/bb/26 30 | *color11: rgb:fa/bd/2f 31 | *color12: rgb:83/a5/98 32 | *color13: rgb:d3/86/9b 33 | *color14: rgb:8e/c0/7c 34 | *color15: rgb:eb/db/b2 35 | 36 | ! Fonts 37 | !XTerm*faceName: Consolas for Powerline 38 | XTerm*faceName: DejaVu Sans Mono for Powerline 39 | XTerm*faceSize: 10 40 | URxvt*font: xft:DejaVu Sans Mono for Powerline:pixelsize=13:antialias=true:hinting=true,xft:DejaVu Sans Mono for Powerline:pixelsize=13:antialias=true:hinting=true 41 | 42 | ! Clipboard 43 | XTerm*VT100*translations: #override\nShift Ctrl v:insert-selection(CLIPBOARD)\nShift Ctrl c:copy-selection(CLIPBOARD) 44 | URxvt.perl-ext-common: default,clipboard,matcher 45 | URxvt.iso14755: false 46 | URxvt.keysym.Shift-Control-C: perl:clipboard:copy 47 | URxvt.keysym.Shift-Control-V: perl:clipboard:paste 48 | 49 | ! URL matcher 50 | !URxvt.urlLauncher: xdg-open 51 | URxvt.matcher.button: 1 52 | 53 | ! Fix Alt 54 | XTerm*metaSendsEscape: true 55 | ! Fix Home and End 56 | URxvt*keysym.Home: \033[1~ 57 | URxvt*keysym.End: \033[4~ 58 | 59 | 60 | ! Xscreensaver 61 | xscreensaver.splash: false 62 | 63 | !font settings 64 | xscreensaver.Dialog.headingFont: -*-fixed-medium-*-*-*-14-*-*-*-*-*-iso10646-* 65 | xscreensaver.Dialog.bodyFont: -*-fixed-medium-*-*-*-14-*-*-*-*-*-iso10646-* 66 | xscreensaver.Dialog.labelFont: -*-fixed-medium-*-*-*-14-*-*-*-*-*-iso10646-* 67 | xscreensaver.Dialog.unameFont: -*-fixed-medium-*-*-*-12-*-*-*-*-*-iso10646-* 68 | xscreensaver.Dialog.buttonFont: -*-fixed-medium-*-*-*-14-*-*-*-*-*-iso10646-* 69 | xscreensaver.Dialog.dateFont: -*-fixed-medium-*-*-*-14-*-*-*-*-*-iso10646-* 70 | xscreensaver.passwd.passwdFont: -*-fixed-medium-*-*-*-12-*-*-*-*-*-iso10646-* 71 | 72 | !general dialog box (affects main hostname, username, password text) 73 | xscreensaver.Dialog.foreground: #ffffff 74 | xscreensaver.Dialog.background: #111111 75 | xscreensaver.Dialog.topShadowColor: #111111 76 | xscreensaver.Dialog.bottomShadowColor: #111111 77 | xscreensaver.Dialog.Button.foreground: #666666 78 | xscreensaver.Dialog.Button.background: #ffffff 79 | 80 | !username/password input box and date text colour 81 | xscreensaver.Dialog.text.foreground: #666666 82 | xscreensaver.Dialog.text.background: #ffffff 83 | xscreensaver.Dialog.internalBorderWidth:24 84 | xscreensaver.Dialog.borderWidth: 2 85 | xscreensaver.Dialog.shadowThickness: 2 86 | 87 | !timeout bar (background is actually determined by Dialog.text.background) 88 | xscreensaver.passwd.thermometer.foreground: #ff0000 89 | xscreensaver.passwd.thermometer.background: #000000 90 | xscreensaver.passwd.thermometer.width: 8 91 | 92 | !datestamp format--see the strftime(3) manual page for details 93 | xscreensaver.dateFormat: %I:%M%P %a %b %d, %Y 94 | 95 | -------------------------------------------------------------------------------- /vivaldi/treetab_dark.tt_theme: -------------------------------------------------------------------------------- 1 | {"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#cdcdcd","scrollbar_thumb_hover":"#a6a6a6","scrollbar_track":"#e4e4e4","toolbar_background":"#4a4a4a","toolbar_border_bottom":"#2f2f2f","button_border":"#4c4c4c","button_background":"#4a4a4a","button_hover_border":"#383838","button_hover_background":"#383838","button_icons":"#d7d7d7","filter_box_background":"#333333","filter_box_border":"#2d2d2d","filter_box_font":"#e3e3e3","filter_clear_icon":"#808080","pin_list_border_bottom":"#2f2f2f","pin_list_background":"#3f3f3f","tab_list_background":"#3f3f3f","tab_background":"#4a4a4a","tab_border":"#4a4a4a","tab_hover_background":"#383838","tab_hover_border":"#383838","tab_selected_background":"#333333","tab_selected_border":"#3e3e3e","tab_selected_hover_border":"#2d2d2d","tab_selected_hover_background":"#2d2d2d","tab_filtered":"#785400","tab_filtered_highlighted":"#8e5c00","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","active_font_weight":"bold","tab_title":"#e3e3e3","tab_title_active":"#ffffff","tab_title_discarded":"#7e7e7e","drag_indicator":"#e3e3e3","close_x":"#7d7d7d","close_hover_x":"#fbfcfe","close_hover_border":"#757676","close_hover_background":"#939394","expand_open_border":"#8a8a8a","expand_open_background":"#d0e2f0","expand_closed_border":"#969696","expand_closed_background":"#eaeaea","expand_lines":"#cccccc","tabs_menu_font":"#e5e5e5","tabs_menu_background":"#414141","tabs_menu_border":"#252525","tabs_menu_hover_background":"#252525","tabs_menu_hover_border":"#252525","tabs_menu_separator":"#525252"},"TabsSizeSetNumber":4,"TabsSizeSet":{"pin_width":"30px","pin_height":"28px","tab_height":"23px","tab_height_line":"26px","expand_box_size":"5px","expand_box_top":"8px","expand_box_left":"3px","expand_line_h_top":"11px","expand_line_h_width":"12px","expand_line_h_oc_width":"3px","expand_line_v_top":"-11px","expand_line_v_left":"0px","expand_line_v_last_height":"23px","title_padding_with_close":"24px","title_font_size":"12.5px","title_padding_left":"25px","drag_area_top":"9px","drag_area_bottom":"6px","close_top":"4px","close_right":"4px","close_size":"14px","favicon_size":"16px 16px","favicon_pos":"4px center"},"ScrollbarPinList":4,"ScrollbarTabList":16,"theme_name":"kvaps_dark","theme_version":1,"toolbar":"\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\t\t\t\t\n\t\t\t\t"} -------------------------------------------------------------------------------- /vivaldi/treetab_light.tt_theme: -------------------------------------------------------------------------------- 1 | {"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#cdcdcd","scrollbar_thumb_hover":"#a6a6a6","scrollbar_track":"#e4e4e4","toolbar_background":"#f2f2f2","toolbar_border_bottom":"#cccccc","button_border":"#f2f2f2","button_background":"#f2f2f2","button_hover_border":"#bebebe","button_hover_background":"#dcdcdc","button_icons":"#808080","filter_box_background":"#fafafa","filter_box_border":"#cccccc","filter_box_font":"#333333","filter_clear_icon":"#808080","pin_list_border_bottom":"#ffffff","pin_list_background":"#ffffff","tab_list_background":"#ffffff","tab_background":"#e7e7e7","tab_border":"#b9b9b9","tab_hover_background":"#d7d7d7","tab_hover_border":"#878787","tab_selected_background":"#c8ebff","tab_selected_border":"#70c0e7","tab_selected_hover_border":"#78aee5","tab_selected_hover_background":"#a1d2fc","tab_filtered":"#e8e000","tab_filtered_highlighted":"#ffa500","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","active_font_weight":"normal","tab_title":"#000000","tab_title_active":"#000000","tab_title_discarded":"#7e7e7e","drag_indicator":"#339bf3","close_x":"#7d7d7d","close_hover_x":"#fbfcfe","close_hover_border":"#757676","close_hover_background":"#939394","expand_open_border":"#339bf3","expand_open_background":"#d0e2f0","expand_closed_border":"#969696","expand_closed_background":"#eaeaea","expand_lines":"#919191","tabs_menu_font":"#333333","tabs_menu_background":"#fafafa","tabs_menu_border":"#bebebe","tabs_menu_hover_background":"#efefef","tabs_menu_hover_border":"#bebebe","tabs_menu_separator":"#efefef"},"TabsSizeSetNumber":4,"TabsSizeSet":{"pin_width":"30px","pin_height":"28px","tab_height":"23px","tab_height_line":"26px","expand_box_size":"5px","expand_box_top":"8px","expand_box_left":"3px","expand_line_h_top":"11px","expand_line_h_width":"12px","expand_line_h_oc_width":"3px","expand_line_v_top":"-11px","expand_line_v_left":"0px","expand_line_v_last_height":"23px","title_padding_with_close":"24px","title_font_size":"12.5px","title_padding_left":"25px","drag_area_top":"9px","drag_area_bottom":"6px","close_top":"4px","close_right":"4px","close_size":"14px","favicon_size":"16px 16px","favicon_pos":"4px center"},"ScrollbarPinList":4,"ScrollbarTabList":16,"theme_name":"kvaps_light","theme_version":1,"toolbar":"\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\t\t\t\t\n\t\t\t\t"} -------------------------------------------------------------------------------- /alacritty/.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | window: 2 | # Blank space added around the window in pixels 3 | padding: 4 | x: 1 5 | y: 1 6 | 7 | # Spread additional padding evenly around the terminal content 8 | dynamic_padding: true 9 | 10 | # Disable border and title bar 11 | decorations: None 12 | 13 | # Font configuration 14 | font: 15 | # Point size of the font 16 | size: 15 17 | 18 | # Offset is the extra space around each character. offset.y can be thought of 19 | # as modifying the linespacing, and offset.x as modifying the letter spacing. 20 | offset: 21 | x: 0 22 | y: 0 23 | 24 | glyph_offset: 25 | x: 0 26 | y: 0 27 | 28 | #normal: 29 | # family: SauceCodePro Nerd Font Mono 30 | # style: Light 31 | #bold: 32 | # family: SauceCodePro Nerd Font Mono 33 | # style: Medium 34 | #italic: 35 | # family: JetBrainsMono Nerd Font Mono 36 | # style: ExtraLightItalic 37 | 38 | #normal: 39 | # family: DejaVuSansMono Nerd Font Mono 40 | # style: Book 41 | #bold: 42 | # family: DejaVuSansMono Nerd Font Mono 43 | # style: Regular 44 | #italic: 45 | # family: DejaVuSansMono Nerd Font Mono 46 | # style: Italic 47 | #normal: 48 | # family: JetBrainsMono Nerd Font Mono 49 | # style: ExtraLight 50 | #bold: 51 | # family: JetBrainsMono Nerd Font Mono 52 | # style: Regular 53 | #italic: 54 | # family: JetBrainsMono Nerd Font Mono 55 | # style: ExtraLightItalic 56 | #normal: 57 | # family: FiraCode Nerd Font Mono 58 | # style: Light 59 | #bold: 60 | # family: FiraCode Nerd Font Mono 61 | # style: Regular 62 | #italic: 63 | # family: FiraCode Nerd Font Mono 64 | # style: Italic 65 | normal: 66 | family: Hasklug Nerd Font Mono 67 | style: Light 68 | bold: 69 | family: Hasklug Nerd Font Mono 70 | style: Regular 71 | italic: 72 | family: Hasklug Nerd Font Mono 73 | style: Light Italic 74 | 75 | env: 76 | TERM: xterm-256color 77 | WINIT_X11_SCALE_FACTOR: "1" 78 | 79 | # If `true`, bold text is drawn using the bright color variants. 80 | draw_bold_text_with_bright_colors: true 81 | 82 | # Colors (Tomorrow Night) 83 | colors: 84 | # Default colors 85 | primary: 86 | background: '#171717' 87 | foreground: '#ebdbb2' 88 | 89 | # Normal colors 90 | normal: 91 | black: '#282828' 92 | red: '#cc241d' 93 | green: '#98971a' 94 | yellow: '#d79921' 95 | blue: '#458588' 96 | magenta: '#b16286' 97 | cyan: '#689d6a' 98 | white: '#bdae93' 99 | 100 | # Bright colors 101 | bright: 102 | black: '#7c6f64' 103 | red: '#fb4934' 104 | green: '#b8bb26' 105 | yellow: '#fabd2f' 106 | blue: '#83a598' 107 | magenta: '#d3869b' 108 | cyan: '#8ec07c' 109 | white: '#ebdbb2' 110 | 111 | # Dim colors 112 | # 113 | # If the dim colors are not set, they will be calculated automatically based 114 | # on the `normal` colors. 115 | dim: 116 | black: '#1b1b1b' 117 | red: '#881813' 118 | green: '#656511' 119 | yellow: '#8f6616' 120 | blue: '#2e595b' 121 | magenta: '#764159' 122 | cyan: '#5f8053' 123 | white: '#7e7462' 124 | 125 | cursor: 126 | text: '#000000' 127 | cursor: '#ebdbb2' 128 | 129 | # Vi mode cursor colors 130 | # 131 | # Colors for the cursor when the vi mode is active. 132 | # 133 | # Allowed values are CellForeground and CellBackground, which reference the 134 | # affected cell, or hexadecimal colors like #ff00ff. 135 | vi_mode_cursor: 136 | text: '#000000' 137 | cursor: '#ebdbb2' 138 | 139 | # Selection colors 140 | # 141 | # Colors which should be used to draw the selection area. 142 | # 143 | # Allowed values are CellForeground and CellBackground, which reference the 144 | # affected cell, or hexadecimal colors like #ff00ff. 145 | selection: 146 | text: '#000000' 147 | cursor: '#ebdbb2' 148 | 149 | key_bindings: 150 | - { key: Up, mods: Alt, chars: "\x1b[1;5A" } 151 | - { key: Down, mods: Alt, chars: "\x1b[1;5B" } 152 | - { key: Left, mods: Alt, chars: "\x1bb" } 153 | - { key: Right, mods: Alt, chars: "\x1bf" } 154 | - { key: D, mods: Alt, chars: "\x1bd" } 155 | 156 | shell: 157 | program: /opt/homebrew/bin/tmux 158 | args: 159 | - new-session 160 | - -A 161 | - -D 162 | - -s 163 | - main 164 | -------------------------------------------------------------------------------- /skhd/.config/skhd/skhdrc: -------------------------------------------------------------------------------- 1 | # delete key 2 | f12: skhd -k 'delete' 3 | 4 | cmd - return : open -a "/Applications/Alacritty.app" 5 | alt - return : open -a "/Applications/Alacritty.app" 6 | 7 | alt - m : yabai -m window --toggle zoom-fullscreen; yabai -m window --focus "$(yabai -m query --windows --window | jq -er .id)" 8 | 9 | 10 | 11 | # Map Czech symbols (ralt is mapped to caps_lock) 12 | ralt - a : skhd -t 'á' 13 | ralt + shift - a : skhd -t 'Á' 14 | ralt - c : skhd -t 'č' 15 | ralt + shift - c : skhd -t 'Č' 16 | ralt - d : skhd -t 'ď' 17 | ralt + shift - d : skhd -t 'Ď' 18 | ralt - e : skhd -t 'ě' 19 | ralt + shift - e : skhd -t 'Ě' 20 | ralt - w : skhd -t 'é' 21 | ralt + shift - w : skhd -t 'É' 22 | ralt - i : skhd -t 'í' 23 | ralt + shift - i : skhd -t 'Í' 24 | ralt - n : skhd -t 'ň' 25 | ralt + shift - n : skhd -t 'Ň' 26 | ralt - o : skhd -t 'ó' 27 | ralt + shift - o : skhd -t 'Ó' 28 | ralt - r : skhd -t 'ř' 29 | ralt + shift - r : skhd -t 'Ř' 30 | ralt - s : skhd -t 'š' 31 | ralt + shift - s : skhd -t 'Š' 32 | ralt - t : skhd -t 'ť' 33 | ralt + shift - t : skhd -t 'Ť' 34 | ralt - u : skhd -t 'ů' 35 | ralt + shift - u : skhd -t 'Ů' 36 | ralt - j : skhd -t 'ú' 37 | ralt + shift - j : skhd -t 'Ú' 38 | ralt - y : skhd -t 'ý' 39 | ralt + shift - y : skhd -t 'Ý' 40 | ralt - z : skhd -t 'ž' 41 | ralt + shift - z : skhd -t 'Ž' 42 | 43 | 44 | 45 | # Move focus between unsticky windows 46 | cmd - 0x32 : yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Telegram", "Discord"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Telegram" 47 | cmd - 1 : yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Firefox", "Google Chrome"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Firefox" 48 | cmd - 2 : (yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Alacritty"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Alacritty") && (tmux select-window -t 2 || tmux new-window -t 2 -c ~) 49 | cmd - 3 : (yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Alacritty"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Alacritty") && (tmux select-window -t 3 || tmux new-window -t 3 -c ~) 50 | cmd - 4 : (yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Alacritty"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Alacritty") && (tmux select-window -t 4 || tmux new-window -t 4 -c ~) 51 | cmd - 5 : (yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Alacritty"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Alacritty") && (tmux select-window -t 5 || tmux new-window -t 5 -c ~) 52 | #cmd - 6 : TODO 53 | cmd - 7 : yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Finder"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "Finder" 54 | cmd - 8 : yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["KeePassXC"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "KeePassXC" 55 | cmd - 9 : yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["VLC"] | contains([$app]) )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') || open -a "VLC" 56 | 57 | # Navigation 58 | cmd - tab : yabai -m window --focus $(yabai -m query --windows | jq -r 'map(.app as $app | select(["Firefox", "Google Chrome", "Alacritty", "KeePassXC", "Telegram", "Discord"] | contains([$app]) | not )) | sort_by(.id) | unique_by(.id) | to_entries | ((.[]|select(.value."has-focus"==true)).key as $cur | map(select(.key==$cur+1)))[] // first | .value.id') 59 | #alt - left : yabai -m window --focus west 60 | #alt - down : yabai -m window --focus south 61 | #alt - up : yabai -m window --focus north 62 | #alt - right : yabai -m window --focus east 63 | 64 | # Restart Yabai 65 | cmd + lctrl - r : \ 66 | /usr/bin/env osascript <<< \ 67 | "display notification \"Restarting Yabai\" with title \"Yabai\""; \ 68 | launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai" 69 | -------------------------------------------------------------------------------- /neovim/.config/nvim/init.vim: -------------------------------------------------------------------------------- 1 | set nocompatible 2 | filetype off 3 | 4 | " auotmatic install plug 5 | if empty(glob('~/.vim/autoload/plug.vim')) 6 | silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs 7 | \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 8 | autocmd VimEnter * PlugInstall | source $MYVIMRC 9 | endif 10 | 11 | " automatic install plugins 12 | let autoload_plug_path = stdpath('data') . '/site/autoload/plug.vim' 13 | if !filereadable(autoload_plug_path) 14 | silent execute '!curl -fLo ' . autoload_plug_path . ' --create-dirs 15 | \ "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"' 16 | autocmd VimEnter * PlugInstall --sync | source $MYVIMRC 17 | endif 18 | unlet autoload_plug_path 19 | 20 | call plug#begin('~/.vim/plugged') 21 | Plug 'tomasr/molokai' 22 | Plug 'vim-airline/vim-airline' 23 | Plug 'dhruvasagar/vim-table-mode' 24 | Plug 'ConradIrwin/vim-bracketed-paste' 25 | Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } 26 | Plug 'Shougo/neocomplete.vim', { 'do': 'go get -u github.com/mdempsky/gocode' } 27 | Plug 'google/vim-jsonnet' 28 | Plug '907th/vim-auto-save' 29 | Plug 'kamykn/spelunker.vim' 30 | Plug 'hashivim/vim-terraform' 31 | Plug 'vim-syntastic/syntastic' 32 | Plug 'juliosueiras/vim-terraform-completion' 33 | Plug 'neoclide/coc.nvim', {'branch': 'release'} 34 | call plug#end() 35 | 36 | let g:terraform_fmt_on_save=1 37 | let g:go_fmt_command = "goimports" 38 | 39 | if ! empty(glob('~/.vim/plugged/molokai/colors/molokai.vim')) 40 | colorscheme molokai 41 | let g:molokai_original = 1 42 | let g:rehash256 = 1 43 | endif 44 | 45 | set background=dark 46 | set guifont=DejaVu\ Sans\ Mono\ for\ Powerline\ 10 47 | set go=c 48 | let g:airline_powerline_fonts = 1 49 | 50 | set number 51 | syntax on 52 | set laststatus=2 53 | 54 | "Настройки табов 55 | set tabstop=2 56 | set shiftwidth=2 57 | set smarttab 58 | set expandtab 59 | set autoindent 60 | set smartindent 61 | 62 | "Настройки для поиска 63 | set showmatch 64 | set hlsearch 65 | set incsearch 66 | set ignorecase 67 | set smartcase 68 | 69 | " Включаем bash-подобное дополнение командной строки 70 | set wildmode=longest:list,full 71 | 72 | " Включаем поддержку мыши 73 | set mouse=a 74 | 75 | " backspace in Visual mode deletes selection 76 | vnoremap d 77 | 78 | " CTRL-X and SHIFT-Del are Cut 79 | vnoremap "+x 80 | vnoremap "+x 81 | 82 | " CTRL-C and CTRL-Insert are Copy 83 | vnoremap "+y 84 | vnoremap "+y 85 | 86 | " CTRL-V and SHIFT-Insert are Paste 87 | "map "+gP 88 | map "+gP 89 | 90 | "cmap + 91 | cmap + 92 | 93 | " Quick save 94 | noremap s :update 95 | 96 | " Включаем поддержку системного буфера 97 | set clipboard=unnamedplus 98 | 99 | " Запоминать расположение курсора 100 | if has("autocmd") 101 | au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 102 | endif 103 | 104 | " Spellchecking setting 105 | let g:enable_spelunker_vim = 0 106 | 107 | " Enable autosave feature for marp (https://marp.app/) 108 | augroup ft_markdown 109 | au! 110 | au FileType markdown let b:auto_save = 1 111 | au FileType markdown let b:enable_spelunker_vim = 1 112 | au FileType markdown silent TableModeEnable 113 | augroup END 114 | 115 | " neocomplete settings 116 | 117 | " Disable AutoComplPop. 118 | let g:acp_enableAtStartup = 0 119 | " Use neocomplete. 120 | let g:neocomplete#enable_at_startup = 1 121 | " Use smartcase. 122 | let g:neocomplete#enable_smart_case = 1 123 | " Set minimum syntax keyword length. 124 | let g:neocomplete#sources#syntax#min_keyword_length = 3 125 | 126 | " Define dictionary. 127 | let g:neocomplete#sources#dictionary#dictionaries = { 128 | \ 'default' : '', 129 | \ 'vimshell' : $HOME.'/.vimshell_hist', 130 | \ 'scheme' : $HOME.'/.gosh_completions' 131 | \ } 132 | 133 | " Define keyword. 134 | if !exists('g:neocomplete#keyword_patterns') 135 | let g:neocomplete#keyword_patterns = {} 136 | endif 137 | let g:neocomplete#keyword_patterns['default'] = '\h\w*' 138 | 139 | " Plugin key-mappings. 140 | inoremap neocomplete#undo_completion() 141 | inoremap neocomplete#complete_common_string() 142 | 143 | " Recommended key-mappings. 144 | " : close popup and save indent. 145 | inoremap =my_cr_function() 146 | function! s:my_cr_function() 147 | return (pumvisible() ? "\" : "" ) . "\" 148 | " For no inserting key. 149 | "return pumvisible() ? "\" : "\" 150 | endfunction 151 | " : completion. 152 | inoremap pumvisible() ? "\" : "\" 153 | " , : close popup and delete backword char. 154 | inoremap neocomplete#smart_close_popup()."\" 155 | inoremap neocomplete#smart_close_popup()."\" 156 | " Close popup by . 157 | "inoremap pumvisible() ? "\" : "\" 158 | 159 | " AutoComplPop like behavior. 160 | "let g:neocomplete#enable_auto_select = 1 161 | 162 | " Shell like behavior(not recommended). 163 | "set completeopt+=longest 164 | "let g:neocomplete#enable_auto_select = 1 165 | "let g:neocomplete#disable_auto_complete = 1 166 | "inoremap pumvisible() ? "\" : "\\" 167 | 168 | " Enable omni completion. 169 | autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS 170 | autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags 171 | autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS 172 | autocmd FileType python setlocal omnifunc=pythoncomplete#Complete 173 | autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags 174 | 175 | " Enable heavy omni completion. 176 | if !exists('g:neocomplete#sources#omni#input_patterns') 177 | let g:neocomplete#sources#omni#input_patterns = {} 178 | endif 179 | "let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' 180 | "let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' 181 | "let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' 182 | 183 | " For perlomni.vim setting. 184 | " https://github.com/c9s/perlomni.vim 185 | let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::' 186 | -------------------------------------------------------------------------------- /awesome/.config/awesome/theme.lua: -------------------------------------------------------------------------------- 1 | --------------------------- 2 | -- Default awesome theme -- 3 | --------------------------- 4 | 5 | local theme_assets = require("beautiful.theme_assets") 6 | local xresources = require("beautiful.xresources") 7 | local dpi = xresources.apply_dpi 8 | 9 | local gfs = require("gears.filesystem") 10 | local themes_path = gfs.get_themes_dir() 11 | 12 | local theme = {} 13 | 14 | theme.font = "sans 8" 15 | 16 | theme.bg_normal = "#1c1c1c" 17 | theme.bg_focus = "#4f3e36" 18 | theme.bg_urgent = "#ac3c12" 19 | theme.bg_minimize = "#444444" 20 | theme.bg_systray = theme.fg_normal 21 | 22 | theme.fg_normal = "#ffd787" 23 | theme.fg_focus = "#ffbc29" 24 | theme.fg_urgent = "#ffffff" 25 | theme.fg_minimize = "#ffffff" 26 | 27 | theme.useless_gap = dpi(0) 28 | theme.border_width = dpi(1) 29 | theme.border_normal = "#000000" 30 | theme.border_focus = "#535d6c" 31 | theme.border_marked = "#91231c" 32 | 33 | -- There are other variable sets 34 | -- overriding the default one when 35 | -- defined, the sets are: 36 | -- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile] 37 | -- tasklist_[bg|fg]_[focus|urgent] 38 | -- titlebar_[bg|fg]_[normal|focus] 39 | -- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color] 40 | -- mouse_finder_[color|timeout|animate_timeout|radius|factor] 41 | -- prompt_[fg|bg|fg_cursor|bg_cursor|font] 42 | -- hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|description_font] 43 | -- Example: 44 | --theme.taglist_bg_focus = "#ff0000" 45 | 46 | -- Generate taglist squares: 47 | local taglist_square_size = dpi(4) 48 | theme.taglist_squares_sel = theme_assets.taglist_squares_sel( 49 | taglist_square_size, theme.fg_normal 50 | ) 51 | theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel( 52 | taglist_square_size, theme.fg_normal 53 | ) 54 | 55 | -- Variables set for theming notifications: 56 | -- notification_font 57 | -- notification_[bg|fg] 58 | -- notification_[width|height|margin] 59 | -- notification_[border_color|border_width|shape|opacity] 60 | 61 | -- Variables set for theming the menu: 62 | -- menu_[bg|fg]_[normal|focus] 63 | -- menu_[border_color|border_width] 64 | theme.menu_submenu_icon = themes_path.."default/submenu.png" 65 | theme.menu_height = dpi(15) 66 | theme.menu_width = dpi(100) 67 | 68 | -- You can add as many variables as 69 | -- you wish and access them by using 70 | -- beautiful.variable in your rc.lua 71 | --theme.bg_widget = "#cc0000" 72 | 73 | -- Define the image to load 74 | theme.titlebar_close_button_normal = themes_path.."default/titlebar/close_normal.png" 75 | theme.titlebar_close_button_focus = themes_path.."default/titlebar/close_focus.png" 76 | 77 | theme.titlebar_minimize_button_normal = themes_path.."default/titlebar/minimize_normal.png" 78 | theme.titlebar_minimize_button_focus = themes_path.."default/titlebar/minimize_focus.png" 79 | 80 | theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png" 81 | theme.titlebar_ontop_button_focus_inactive = themes_path.."default/titlebar/ontop_focus_inactive.png" 82 | theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png" 83 | theme.titlebar_ontop_button_focus_active = themes_path.."default/titlebar/ontop_focus_active.png" 84 | 85 | theme.titlebar_sticky_button_normal_inactive = themes_path.."default/titlebar/sticky_normal_inactive.png" 86 | theme.titlebar_sticky_button_focus_inactive = themes_path.."default/titlebar/sticky_focus_inactive.png" 87 | theme.titlebar_sticky_button_normal_active = themes_path.."default/titlebar/sticky_normal_active.png" 88 | theme.titlebar_sticky_button_focus_active = themes_path.."default/titlebar/sticky_focus_active.png" 89 | 90 | theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png" 91 | theme.titlebar_floating_button_focus_inactive = themes_path.."default/titlebar/floating_focus_inactive.png" 92 | theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png" 93 | theme.titlebar_floating_button_focus_active = themes_path.."default/titlebar/floating_focus_active.png" 94 | 95 | theme.titlebar_maximized_button_normal_inactive = themes_path.."default/titlebar/maximized_normal_inactive.png" 96 | theme.titlebar_maximized_button_focus_inactive = themes_path.."default/titlebar/maximized_focus_inactive.png" 97 | theme.titlebar_maximized_button_normal_active = themes_path.."default/titlebar/maximized_normal_active.png" 98 | theme.titlebar_maximized_button_focus_active = themes_path.."default/titlebar/maximized_focus_active.png" 99 | 100 | theme.wallpaper = "~/Pictures/wallpaper.png" 101 | 102 | -- You can use your own layout icons like this: 103 | theme.layout_fairh = themes_path.."default/layouts/fairhw.png" 104 | theme.layout_fairv = themes_path.."default/layouts/fairvw.png" 105 | theme.layout_floating = themes_path.."default/layouts/floatingw.png" 106 | theme.layout_magnifier = themes_path.."default/layouts/magnifierw.png" 107 | theme.layout_max = themes_path.."default/layouts/maxw.png" 108 | theme.layout_fullscreen = themes_path.."default/layouts/fullscreenw.png" 109 | theme.layout_tilebottom = themes_path.."default/layouts/tilebottomw.png" 110 | theme.layout_tileleft = themes_path.."default/layouts/tileleftw.png" 111 | theme.layout_tile = themes_path.."default/layouts/tilew.png" 112 | theme.layout_tiletop = themes_path.."default/layouts/tiletopw.png" 113 | theme.layout_spiral = themes_path.."default/layouts/spiralw.png" 114 | theme.layout_dwindle = themes_path.."default/layouts/dwindlew.png" 115 | theme.layout_cornernw = themes_path.."default/layouts/cornernww.png" 116 | theme.layout_cornerne = themes_path.."default/layouts/cornernew.png" 117 | theme.layout_cornersw = themes_path.."default/layouts/cornersww.png" 118 | theme.layout_cornerse = themes_path.."default/layouts/cornersew.png" 119 | 120 | -- Generate Awesome icon: 121 | theme.awesome_icon = theme_assets.awesome_icon( 122 | theme.menu_height, theme.bg_focus, theme.fg_focus 123 | ) 124 | 125 | -- Define the icon theme for application icons. If not set then the icons 126 | -- from /usr/share/icons and /usr/share/icons/hicolor will be used. 127 | theme.icon_theme = nil 128 | 129 | return theme 130 | 131 | -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 132 | -------------------------------------------------------------------------------- /sway/.config/sway/config: -------------------------------------------------------------------------------- 1 | # Default config for sway 2 | # 3 | # Copy this to ~/.config/sway/config and edit it to your liking. 4 | # 5 | # Read `man 5 sway` for a complete reference. 6 | 7 | ### Variables 8 | # 9 | # Logo key. Use Mod1 for Alt. 10 | set $mod Mod4 11 | # Home row direction keys, like vim 12 | set $left h 13 | set $down j 14 | set $up k 15 | set $right l 16 | # Your preferred terminal emulator 17 | set $term termite 18 | # Your preferred application launcher 19 | # Note: it's recommended that you pass the final command to sway 20 | set $menu dmenu_path | dmenu | xargs swaymsg exec -- 21 | 22 | ### Output configuration 23 | # 24 | # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) 25 | output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill 26 | # 27 | # Example configuration: 28 | # 29 | # output HDMI-A-1 resolution 1920x1080 position 1920,0 30 | # 31 | # You can get the names of your outputs by running: swaymsg -t get_outputs 32 | 33 | input * xkb_layout "us,ru" 34 | input * xkb_options "grp:caps_toggle" 35 | 36 | ### Idle configuration 37 | # 38 | # Example configuration: 39 | # 40 | # exec swayidle -w \ 41 | # timeout 300 'swaylock -f -c 000000' \ 42 | # timeout 600 'swaymsg "output * dpms off"' \ 43 | # resume 'swaymsg "output * dpms on"' \ 44 | # before-sleep 'swaylock -f -c 000000' 45 | # 46 | # This will lock your screen after 300 seconds of inactivity, then turn off 47 | # your displays after another 300 seconds, and turn your screens back on when 48 | # resumed. It will also lock your screen before your computer goes to sleep. 49 | 50 | ### Input configuration 51 | 52 | input "1739:32656:MSFT0001:00_06CB:7F90_Touchpad" { 53 | dwt enabled 54 | tap enabled 55 | natural_scroll disabled 56 | middle_emulation enabled 57 | } 58 | 59 | # You can get the names of your inputs by running: swaymsg -t get_inputs 60 | # Read `man 5 sway-input` for more information about this section. 61 | 62 | ### Key bindings 63 | # 64 | # Basics: 65 | # 66 | # Start a terminal 67 | bindsym $mod+Return exec $term 68 | 69 | # Kill focused window 70 | bindsym $mod+Shift+c kill 71 | 72 | # Start your launcher 73 | bindsym $mod+r exec $menu 74 | 75 | bindsym $mod+q exec "rofi -modi window,drun,run -show drun -sidebar-mode -terminal termite -color-window '#000000, #000000, #000000' -color-normal '#000000, #b3e774, #000000, #b3e774, #000000' -color-active '#000000, #b3e774, #000000, #b3e774, #000000' -color-urgent '#000000, #b3e774, #000000, #b3e774, #000000'" 76 | 77 | 78 | # Drag floating windows by holding down $mod and left mouse button. 79 | # Resize them with right mouse button + $mod. 80 | # Despite the name, also works for non-floating windows. 81 | # Change normal to inverse to use left mouse button for resizing and right 82 | # mouse button for dragging. 83 | floating_modifier $mod normal 84 | 85 | # Reload the configuration file 86 | bindsym $mod+Ctrl+r reload 87 | 88 | # Exit sway (logs you out of your Wayland session) 89 | bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' 90 | # 91 | # Moving around: 92 | # 93 | # Move your focus around 94 | bindsym $mod+$left focus left 95 | bindsym $mod+$down focus down 96 | bindsym $mod+$up focus up 97 | bindsym $mod+$right focus right 98 | # Or use $mod+[up|down|left|right] 99 | bindsym $mod+Left focus left 100 | bindsym $mod+Down focus down 101 | bindsym $mod+Up focus up 102 | bindsym $mod+Right focus right 103 | 104 | # Move the focused window with the same, but add Shift 105 | bindsym $mod+Shift+$left move left 106 | bindsym $mod+Shift+$down move down 107 | bindsym $mod+Shift+$up move up 108 | bindsym $mod+Shift+$right move right 109 | # Ditto, with arrow keys 110 | bindsym $mod+Shift+Left move left 111 | bindsym $mod+Shift+Down move down 112 | bindsym $mod+Shift+Up move up 113 | bindsym $mod+Shift+Right move right 114 | # 115 | # Workspaces: 116 | # 117 | # Switch to workspace 118 | bindsym $mod+1 workspace 1 119 | bindsym $mod+2 workspace 2 120 | bindsym $mod+3 workspace 3 121 | bindsym $mod+4 workspace 4 122 | bindsym $mod+5 workspace 5 123 | bindsym $mod+6 workspace 6 124 | bindsym $mod+7 workspace 7 125 | bindsym $mod+8 workspace 8 126 | bindsym $mod+9 workspace 9 127 | bindsym $mod+0 workspace 10 128 | # Move focused container to workspace 129 | bindsym $mod+Shift+1 move container to workspace 1 130 | bindsym $mod+Shift+2 move container to workspace 2 131 | bindsym $mod+Shift+3 move container to workspace 3 132 | bindsym $mod+Shift+4 move container to workspace 4 133 | bindsym $mod+Shift+5 move container to workspace 5 134 | bindsym $mod+Shift+6 move container to workspace 6 135 | bindsym $mod+Shift+7 move container to workspace 7 136 | bindsym $mod+Shift+8 move container to workspace 8 137 | bindsym $mod+Shift+9 move container to workspace 9 138 | bindsym $mod+Shift+0 move container to workspace 10 139 | # Note: workspaces can have any name you want, not just numbers. 140 | # We just use 1-10 as the default. 141 | # 142 | # Layout stuff: 143 | # 144 | # You can "split" the current object of your focus with 145 | # $mod+b or $mod+v, for horizontal and vertical splits 146 | # respectively. 147 | bindsym $mod+b splith 148 | bindsym $mod+v splitv 149 | 150 | # Switch the current container between different layout styles 151 | bindsym $mod+s layout stacking 152 | bindsym $mod+w layout tabbed 153 | bindsym $mod+e layout toggle split 154 | 155 | # Make the current focus fullscreen 156 | bindsym $mod+f fullscreen 157 | 158 | # Toggle the current focus between tiling and floating mode 159 | bindsym $mod+Shift+space floating toggle 160 | 161 | # Swap focus between the tiling area and the floating area 162 | bindsym $mod+space focus mode_toggle 163 | 164 | # Move focus to the parent container 165 | bindsym $mod+a focus parent 166 | # 167 | # Scratchpad: 168 | # 169 | # Sway has a "scratchpad", which is a bag of holding for windows. 170 | # You can send windows there and get them back later. 171 | 172 | # Move the currently focused window to the scratchpad 173 | bindsym $mod+Shift+minus move scratchpad 174 | 175 | # Show the next scratchpad window or hide the focused scratchpad window. 176 | # If there are multiple scratchpad windows, this command cycles through them. 177 | bindsym $mod+minus scratchpad show 178 | # 179 | # Resizing containers: 180 | # 181 | mode "resize" { 182 | # left will shrink the containers width 183 | # right will grow the containers width 184 | # up will shrink the containers height 185 | # down will grow the containers height 186 | bindsym $left resize shrink width 10px 187 | bindsym $down resize grow height 10px 188 | bindsym $up resize shrink height 10px 189 | bindsym $right resize grow width 10px 190 | 191 | # Ditto, with arrow keys 192 | bindsym Left resize shrink width 10px 193 | bindsym Down resize grow height 10px 194 | bindsym Up resize shrink height 10px 195 | bindsym Right resize grow width 10px 196 | 197 | # Return to default mode 198 | bindsym Return mode "default" 199 | bindsym Escape mode "default" 200 | } 201 | bindsym $mod+Shift+r mode "resize" 202 | 203 | # 204 | # Status Bar: 205 | # 206 | # Read `man 5 sway-bar` for more information about this section. 207 | bar { 208 | position top 209 | 210 | # When the status_command prints a new line to stdout, swaybar updates. 211 | # The default just shows the current date and time. 212 | status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done 213 | 214 | colors { 215 | statusline #ffffff 216 | background #323232 217 | inactive_workspace #32323200 #32323200 #5c5c5c 218 | } 219 | } 220 | 221 | include /etc/sway/config.d/* 222 | -------------------------------------------------------------------------------- /install.txt: -------------------------------------------------------------------------------- 1 | https://ctlos.github.io/wiki/btrfs/btrfs-part1/ 2 | https://wiki.archlinux.org/index.php/Lenovo_IdeaPad_720s_(Ryzen) 3 | 4 | # enable networking 5 | rfkill unblock all 6 | wifi-menu 7 | 8 | # prepare partitioning 9 | cfdisk /dev/nvme0n1 10 | mkfs.vfat /dev/nvme0n1p1 11 | mkfs.btrfs /dev/nvme0n1p2 12 | 13 | mount /dev/nvme0n1p2 /mnt 14 | btrfs subvolume create /mnt/@ 15 | btrfs subvolume create /mnt/@snapshots 16 | btrfs subvolume create /mnt/@home 17 | umount /mnt 18 | mount -o subvol=@,relatime,compress=lzo,space_cache,autodefrag /dev/nvme0n1p2 /mnt/ 19 | mkdir -p /mnt/boot/efi /mnt/home 20 | mount /dev/nvme0n1p1 /mnt/boot/efi 21 | mount -o subvol=@snapshots,relatime,compress=lzo,space_cache,autodefrag /dev/nvme0n1p2 /mnt/snapshots 22 | mount -o subvol=@home,relatime,compress=lzo,space_cache,autodefrag /dev/nvme0n1p2 /mnt/home 23 | 24 | # install base system 25 | pacstrap /mnt base base-devel linux linux-firmware 26 | 27 | # generate fstab 28 | genfstab -U /mnt >> /mnt/etc/fstab 29 | 30 | # chroot 31 | arch-chroot /mnt 32 | 33 | # install base packages (npm is needed for coc) 34 | pacman -S git sudo gvim zsh npm gopls 35 | 36 | # install zsh plugins 37 | pacman -S zsh-syntax-highlighting, autosuggestions 38 | git clone https://github.com/ohmyzsh/ohmyzsh ~/.oh-my-zsh 39 | git clone https://github.com/romkatv/powerlevel10k/ ~/.oh-my-zsh/themes/powerlevel10k/ 40 | 41 | # Add user 42 | useradd -m -G wheel,audio,video,storage,lp,power -s /bin/zsh kvaps 43 | 44 | # Set passwords 45 | passwd 46 | passwd kvaps 47 | 48 | # Configure sudo 49 | EDITOR=vim visudo 50 | #%wheel ALL=(ALL) ALL 51 | 52 | # setup hostname 53 | cat /etc/hostname 54 | kvaps-laptop 55 | 56 | # setup locale 57 | cat /etc/locale.gen 58 | en_US.UTF-8 59 | en_DK.UTF-8 60 | ru_RU.UTF-8 61 | 62 | locale-gen 63 | 64 | cat /etc/locale.conf 65 | LANG=en_US.UTF-8 66 | LC_TIME=en_DK.UTF-8 67 | LC_CTYPE=en_US.UTF-8 68 | 69 | # setup font 70 | cat /etc/vconsole.conf 71 | KEYMAP=ruwin_cplk-UTF-8 72 | FONT=cyr-sun16 73 | 74 | # setup timezone 75 | ln -sf /usr/share/zoneinfo/Europe/Prague /etc/localtime 76 | 77 | # install NetworkManager 78 | pacman -S networkmanager network-manager-applet networkmanager-openvpn 79 | systemctl enable NetworkManager 80 | 81 | # install YaY 82 | su kvaps 83 | cd /tmp 84 | git clone https://aur.archlinux.org/yay.git 85 | cd yay 86 | makepkg -si 87 | 88 | # create initcpio image 89 | pacman -S btrfs-progs 90 | mkinitcpio -p linux 91 | 92 | # install grub and microcode 93 | pacman -S grub efibootmgr amd-ucode 94 | grub-install 95 | grub-install --removable 96 | vim /etc/default/grub 97 | #GRUB_TIMEOUT=1 98 | #GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.noretry=0" 99 | grub-mkconfig -o /boot/grub/grub.cfg 100 | 101 | # Fix touchpad (https://github.com/Syniurge/i2c-amd-mp2/issues/3) 102 | echo "softdep i2c_hid pre: pinctrl_amd" > /etc/modprobe.d/i2c-touchpad.conf 103 | 104 | # umount and reboot 105 | umount -R /mnt 106 | reboot 107 | 108 | # ------------------------------------------- 109 | 110 | # start network 111 | rfkill unblock all 112 | nmcli d wifi list 113 | nmcli d wifi connect password 114 | 115 | # install xorg 116 | pacman -S xorg-server xf86-input-libinput libinput xterm xorg-xinit xorg-xclipboard xclip xf86-video-amdgpu scrot xsel xdotool mesa-demos 117 | yay -S xcwd-git 118 | 119 | # install lightdm and enable autologin 120 | yay -S lightdm lightdm-autologin-greeter-git accountsservice 121 | groupadd -r autologin 122 | usermod -a -G autologin kvaps 123 | vim /etc/lightdm/lightdm.conf 124 | #[SeatDefaults] 125 | #autologin-user=kvaps 126 | #autologin-user-timeout=0 127 | #session-wrapper=/etc/lightdm/Xsession 128 | #pam-service=lightdm-autologin 129 | #user-session=awesome 130 | 131 | # install alacritty 132 | pacman -S alacritty 133 | 134 | # install backlight 135 | pacman -S acpilight 136 | cat /etc/udev/rules.d/backlight.rules 137 | ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness" 138 | ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness" 139 | 140 | # install pipewire and bluetooth 141 | pacman -S pipewire pipewire-alsa pipewire-pulse pavucontrol blueman 142 | systemctl start bluetooth 143 | 144 | # install fonts 145 | pacman -S ttf-dejavu noto-fonts noto-fonts-cjk noto-fonts-emoji 146 | yay -S nerd-fonts-dejavu-complete 147 | 148 | # install proprietary amd driver 149 | vim /etc/pacman.conf # uncoment multilib 150 | git clone https://aur.archlinux.org/amdgpu-pro-installer.git 151 | cd amdgpu-pro-installer 152 | makepkg -si 153 | 154 | # install earlyoom 155 | pacman -Sy earlyoom 156 | systemctl enable --now earlyoom 157 | 158 | # install displaylink driver 159 | yay -S displaylink evdi-amd-vmap-texture 160 | echo "options evdi vmap_texture=1" | sudo tee /etc/modprobe.d/evdi.conf 161 | dkms status 162 | systemctl enable displaylink 163 | systemctl start displaylink 164 | 165 | # Enable Early KMS start 166 | vim /etc/mkinitcpio.conf 167 | #MODULES=(amdgpu) 168 | mkinitcpio -p linux 169 | 170 | # setup xorg configs 171 | git clone https://github.com/kvaps/dotfiles 172 | cp dotfiles/X11/xorg.conf.g/* /etc/X11/xorg.conf.d/ 173 | 174 | # Ignore powerbutton 175 | echo 'HandlePowerKey=ignore' | sudo tee -a /etc/systemd/logind.conf 176 | 177 | # install window manager and useful tools/widgets 178 | pacman -S awesome arandr autorandr volumeicon cbatticon kmix solid lxappearance-gtk3 faenza-icon-theme translate-shell sysstat ntfs-3g 179 | #pacman -S sway wdisplays 180 | 181 | # Install themes and icons 182 | yay -S mojave-gtk-theme kvantum-qt5 tela-icon-theme 183 | 184 | # Install i3lock 185 | yay -S i3lock-cac03-git 186 | 187 | # install firefox 188 | pacman -S firefox 189 | 190 | # Firefox theme 191 | https://addons.mozilla.org/ru/firefox/addon/contrast-gray/ 192 | https://addons.mozilla.org/en-US/firefox/addon/gray-theme-for-firefox/ 193 | https://addons.mozilla.org/ru/firefox/addon/google-chrome-dark/ 194 | 195 | # about:config 196 | # browser.link.open_newwindow.restriction=0 197 | 198 | # install filemanagers and the rest 199 | pacman -S dolphin konsole thunar filezilla gvfs-mtp android-udev xdg-user-dirs keepassxc ark 200 | yay -S dropbox 201 | xdg-mime default org.kde.dolphin.desktop inode/directory 202 | xdg-user-dirs-update 203 | 204 | # install ssh-agent 205 | https://stackoverflow.com/a/38980986/2931267 206 | 207 | # install office things 208 | pacman -S libreoffice okular pdfarranger 209 | 210 | # install useful tools 211 | pacman -S bash-completion man openssh jq git-crypt bind-tools thefuck code cowsay dmidecode lsof screen gpg zip unzip p7zip neofetch rsync pv pwgen whois usbutils dhcpcd traceroute tftp-hpa inotify-tools qbittorrent wget 212 | 213 | # install and configure automatic btrfs snapshots 214 | pacman -S snapper 215 | systemctl start snapper-timeline.timer 216 | systemctl enable snapper-timeline.timer 217 | systemctl start snapper-cleanup.timer 218 | systemctl enable snapper-cleanup.timer 219 | 220 | umount /.snapshots 221 | rmdir /.snapshots 222 | snapper -c root create-config / 223 | btrfs subvolume delete /.snapshots 224 | mkdir /.snapshots 225 | mount /.snapshots 226 | 227 | snapper -c root create --description clean_install 228 | 229 | yay -S snap-pac snap-pac-grub grub-btrfs 230 | 231 | 232 | # ------------------------------------------- 233 | 234 | # install mikrotik winbox 235 | yay -S winbox 236 | 237 | # install ansible and modules 238 | pacman -S ansible python-jmespath python-netaddr 239 | yay -S python-openshift 240 | 241 | # install opennebula tools 242 | yay -S opennebula-tools 243 | 244 | # install docker and kubernetes tools 245 | pacman -S docker kubectl skopeo 246 | systemctl enable docker 247 | systemctl start docker 248 | usermod -a -G docker kvaps 249 | 250 | yay -S kubernetes-helm-bin qbec kubectl-krew 251 | 252 | kubectl krew index add kvaps https://github.com/kvaps/krew-index 253 | kubectl krew install kvaps/build 254 | kubectl krew install kvaps/node-shell 255 | kubectl krew install kvaps/use 256 | 257 | # install graphic packets 258 | pacman -S eog gimp darktable imagemagick kdenlive audacity hugin 259 | 260 | # install video packets 261 | pacman -S mpv vlc 262 | 263 | # install audacious and audioplugins 264 | sudo pacman -S audacious faad2 ffmpeg flac imlib2 libcddb libmad libsamplerate libsndfile libvorbis libx11 libzip mpg123 wavpack nmap easytag python-mutagen 265 | 266 | # install simplescreenrecorder 267 | pacman -S simplescreenrecorder 268 | 269 | # install time tracker 270 | yay -S toggldesktop 271 | 272 | # install cups and printer drivers 273 | pacman -S cups 274 | echo 'xdg-open http://localhost:631/' > /usr/local/bin/cups 275 | chmod +x /usr/local/bin/cups 276 | systemctl start org.cups.cupsd.service 277 | systemctl enable org.cups.cupsd.service 278 | 279 | echo a4 > /etc/papersize 280 | 281 | yay -S cnrdrvcups-lb-bin 282 | -------------------------------------------------------------------------------- /vim/.vimrc: -------------------------------------------------------------------------------- 1 | set nocompatible 2 | filetype off 3 | 4 | " auotmatic install plug 5 | if empty(glob('~/.vim/autoload/plug.vim')) 6 | silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs 7 | \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 8 | autocmd VimEnter * PlugInstall | source $MYVIMRC 9 | endif 10 | 11 | " automatic install plugins 12 | autocmd VimEnter * 13 | \ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) 14 | \| PlugInstall --sync | q 15 | \| endif 16 | 17 | " fix swap files 18 | if empty(glob('~/.vim/tmp')) 19 | silent !mkdir -p ~/.vim/tmp 20 | endif 21 | set directory=$HOME/.vim/tmp 22 | 23 | call plug#begin('~/.vim/plugged') 24 | Plug 'tomasr/molokai' 25 | Plug 'vim-airline/vim-airline' 26 | Plug 'dhruvasagar/vim-table-mode' 27 | Plug 'ConradIrwin/vim-bracketed-paste' 28 | 29 | Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } 30 | 31 | "Plug 'dense-analysis/ale' 32 | 33 | "Plug 'kana/vim-textobj-indent' 34 | "Plug 'kana/vim-textobj-user' 35 | Plug 'michaeljsmith/vim-indent-object' 36 | Plug 'wakatime/vim-wakatime' 37 | 38 | Plug 'neoclide/coc.nvim', {'branch': 'release'} 39 | " CocInstall coc-go coc-vimlsp coc-python coc-sh coc-yaml coc-json coc-markdownlint coc-docker 40 | " yay -S terraform-lsp-bin 41 | 42 | Plug 'google/vim-jsonnet' 43 | Plug '907th/vim-auto-save' 44 | Plug 'kamykn/spelunker.vim' 45 | Plug 'hashivim/vim-terraform' 46 | Plug 'vim-syntastic/syntastic' 47 | "Plug 'jiangmiao/auto-pairs' 48 | Plug 'mg979/vim-visual-multi', {'branch': 'master'} 49 | Plug 'tpope/vim-commentary' 50 | Plug 'sbdchd/neoformat' 51 | Plug 'stephpy/vim-yaml' 52 | Plug 'pearofducks/ansible-vim' 53 | Plug 'towolf/vim-helm' 54 | Plug 'zivyangll/git-blame.vim' 55 | "Plug 'github/copilot.vim' 56 | call plug#end() 57 | 58 | " Format shell on save 59 | "augroup fmt 60 | " autocmd! 61 | " autocmd BufWritePre * undojoin | Neoformat 62 | "augroup END 63 | "let g:shfmt_opt="-i 2" 64 | 65 | if ! empty(glob('~/.vim/plugged/molokai/colors/molokai.vim')) 66 | colorscheme molokai 67 | let g:molokai_original = 1 68 | let g:rehash256 = 1 69 | endif 70 | 71 | set cursorcolumn 72 | set cursorline 73 | set background=dark 74 | set guifont=DejaVu\ Sans\ Mono\ for\ Powerline\ 10 75 | set go=c 76 | let g:airline_powerline_fonts = 1 77 | 78 | set mmp=5000 79 | 80 | set number 81 | syntax on 82 | set laststatus=2 83 | hi Search cterm=NONE ctermfg=NONE ctermbg=236 84 | 85 | "Настройки табов 86 | set tabstop=2 87 | set shiftwidth=2 88 | set smarttab 89 | set expandtab 90 | set autoindent 91 | set smartindent 92 | 93 | "Настройки для поиска 94 | set showmatch 95 | set hlsearch 96 | set incsearch 97 | set ignorecase 98 | set smartcase 99 | 100 | " Включаем bash-подобное дополнение командной строки 101 | set wildmode=longest:list,full 102 | 103 | " Включаем поддержку мыши 104 | set mouse=a 105 | 106 | " backspace in Visual mode deletes selection 107 | vnoremap d 108 | 109 | " CTRL-X and SHIFT-Del are Cut 110 | vnoremap "+x 111 | vnoremap "+x 112 | 113 | " CTRL-C and CTRL-Insert are Copy 114 | vnoremap "+y 115 | vnoremap "+y 116 | 117 | " CTRL-V and SHIFT-Insert are Paste 118 | "map "+gP 119 | map "+gP 120 | 121 | "cmap + 122 | cmap + 123 | 124 | " Quick save 125 | noremap s :update 126 | 127 | " Force saving files that require root permission 128 | cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' edit! 129 | 130 | " Включаем поддержку системного буфера 131 | if system('uname -s') == "Darwin\n" 132 | set clipboard=unnamed "OSX 133 | else 134 | set clipboard=unnamedplus "Linux 135 | endif 136 | 137 | " Запоминать расположение курсора 138 | if has("autocmd") 139 | au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 140 | endif 141 | 142 | " Spellchecking setting 143 | let g:enable_spelunker_vim = 0 144 | 145 | " Enable autosave feature for marp (https://marp.app/) 146 | augroup ft_markdown 147 | au! 148 | au FileType markdown let b:auto_save = 1 149 | au FileType markdown let b:enable_spelunker_vim = 1 150 | au FileType markdown silent TableModeEnable 151 | augroup END 152 | 153 | 154 | " configure cursor shape 155 | let &t_SI = "\[6 q" 156 | let &t_SR = "\[4 q" 157 | let &t_EI = "\[2 q" 158 | 159 | " =========== vim-go settings ============= 160 | 161 | " Show type in statusline 162 | let g:go_fmt_command = "goimports" 163 | 164 | " =========== vim-coc settings ============= 165 | 166 | " TextEdit might fail if hidden is not set. 167 | set hidden 168 | 169 | " Some servers have issues with backup files, see #649. 170 | set nobackup 171 | set nowritebackup 172 | 173 | " Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable 174 | " delays and poor user experience. 175 | set updatetime=300 176 | 177 | " Always show the signcolumn, otherwise it would shift the text each time 178 | " diagnostics appear/become resolved. 179 | set signcolumn=yes 180 | 181 | " Use tab for trigger completion with characters ahead and navigate. 182 | " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by 183 | " NOTE: There's always complete item selected by default, you may want to enable 184 | " no select by `"suggest.noselect": true` in your configuration file. 185 | " other plugin before putting this into your config. 186 | inoremap 187 | \ coc#pum#visible() ? coc#pum#next(1): 188 | \ CheckBackspace() ? "\" : 189 | \ coc#refresh() 190 | inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" 191 | 192 | " Make to accept selected completion item or notify coc.nvim to format 193 | " u breaks current undo, please make your own choice. 194 | inoremap coc#pum#visible() ? coc#pum#confirm() 195 | \: "\u\\=coc#on_enter()\" 196 | 197 | function! CheckBackspace() abort 198 | let col = col('.') - 1 199 | return !col || getline('.')[col - 1] =~# '\s' 200 | endfunction 201 | 202 | " Use to trigger completion. 203 | if has('nvim') 204 | inoremap coc#refresh() 205 | else 206 | inoremap coc#refresh() 207 | endif 208 | 209 | " Use `[g` and `]g` to navigate diagnostics 210 | " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. 211 | nmap [g (coc-diagnostic-prev) 212 | nmap ]g (coc-diagnostic-next) 213 | 214 | " GoTo code navigation. 215 | nmap gd (coc-definition) 216 | nmap gy (coc-type-definition) 217 | nmap gi (coc-implementation) 218 | nmap gr (coc-references) 219 | 220 | " Use K to show documentation in preview window. 221 | nnoremap K :call ShowDocumentation() 222 | 223 | function! ShowDocumentation() 224 | if CocAction('hasProvider', 'hover') 225 | call CocActionAsync('doHover') 226 | else 227 | call feedkeys('K', 'in') 228 | endif 229 | endfunction 230 | 231 | " Highlight the symbol and its references when holding the cursor. 232 | autocmd CursorHold * silent call CocActionAsync('highlight') 233 | 234 | " Symbol renaming. 235 | nmap rn (coc-rename) 236 | 237 | " Formatting selected code. 238 | xmap f (coc-format-selected) 239 | nmap f (coc-format-selected) 240 | 241 | augroup mygroup 242 | autocmd! 243 | " Setup formatexpr specified filetype(s). 244 | autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') 245 | " Update signature help on jump placeholder. 246 | autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') 247 | augroup end 248 | 249 | " Applying codeAction to the selected region. 250 | " Example: `aap` for current paragraph 251 | xmap a (coc-codeaction-selected) 252 | nmap a (coc-codeaction-selected) 253 | 254 | " Remap keys for applying codeAction to the current buffer. 255 | nmap ac (coc-codeaction) 256 | " Apply AutoFix to problem on the current line. 257 | nmap qf (coc-fix-current) 258 | 259 | " Run the Code Lens action on the current line. 260 | nmap cl (coc-codelens-action) 261 | 262 | " Map function and class text objects 263 | " NOTE: Requires 'textDocument.documentSymbol' support from the language server. 264 | xmap if (coc-funcobj-i) 265 | omap if (coc-funcobj-i) 266 | xmap af (coc-funcobj-a) 267 | omap af (coc-funcobj-a) 268 | xmap ic (coc-classobj-i) 269 | omap ic (coc-classobj-i) 270 | xmap ac (coc-classobj-a) 271 | omap ac (coc-classobj-a) 272 | 273 | " Remap and for scroll float windows/popups. 274 | if has('nvim-0.4.0') || has('patch-8.2.0750') 275 | nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" 276 | nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" 277 | inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" 278 | inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" 279 | vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" 280 | vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" 281 | endif 282 | 283 | " Use CTRL-S for selections ranges. 284 | " Requires 'textDocument/selectionRange' support of language server. 285 | nmap (coc-range-select) 286 | xmap (coc-range-select) 287 | 288 | " Add `:Format` command to format current buffer. 289 | command! -nargs=0 Format :call CocActionAsync('format') 290 | 291 | " Add `:Fold` command to fold current buffer. 292 | command! -nargs=? Fold :call CocAction('fold', ) 293 | 294 | " Add `:OR` command for organize imports of the current buffer. 295 | command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport') 296 | 297 | " Add (Neo)Vim's native statusline support. 298 | " NOTE: Please see `:h coc-status` for integrations with external plugins that 299 | " provide custom statusline: lightline.vim, vim-airline. 300 | set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} 301 | 302 | " Mappings for CoCList 303 | " Show all diagnostics. 304 | nnoremap a :CocList diagnostics 305 | " Manage extensions. 306 | nnoremap e :CocList extensions 307 | " Show commands. 308 | nnoremap c :CocList commands 309 | " Find symbol of current document. 310 | nnoremap o :CocList outline 311 | " Search workspace symbols. 312 | nnoremap s :CocList -I symbols 313 | " Do default action for next item. 314 | nnoremap j :CocNext 315 | " Do default action for previous item. 316 | nnoremap k :CocPrev 317 | " Resume latest coc list. 318 | nnoremap p :CocListResume 319 | " =========== vim-coc settings end ============= 320 | -------------------------------------------------------------------------------- /karabiner/.config/karabiner/karabiner.json: -------------------------------------------------------------------------------- 1 | { 2 | "global": { 3 | "check_for_updates_on_startup": true, 4 | "show_in_menu_bar": true, 5 | "show_profile_name_in_menu_bar": false 6 | }, 7 | "profiles": [ 8 | { 9 | "complex_modifications": { 10 | "parameters": { 11 | "basic.simultaneous_threshold_milliseconds": 50, 12 | "basic.to_delayed_action_delay_milliseconds": 500, 13 | "basic.to_if_alone_timeout_milliseconds": 1000, 14 | "basic.to_if_held_down_threshold_milliseconds": 500, 15 | "mouse_motion_to_scroll.speed": 100 16 | }, 17 | "rules": [ 18 | { 19 | "description": "Post F19 if Caps is tapped, right_option if held.", 20 | "manipulators": [ 21 | { 22 | "from": { 23 | "key_code": "caps_lock", 24 | "modifiers": { 25 | "optional": [ 26 | "any" 27 | ] 28 | } 29 | }, 30 | "to": [ 31 | { 32 | "key_code": "right_option", 33 | "lazy": true 34 | } 35 | ], 36 | "to_if_alone": [ 37 | { 38 | "key_code": "f19" 39 | } 40 | ], 41 | "type": "basic" 42 | } 43 | ] 44 | } 45 | ] 46 | }, 47 | "devices": [ 48 | { 49 | "disable_built_in_keyboard_if_exists": false, 50 | "fn_function_keys": [], 51 | "identifiers": { 52 | "is_keyboard": true, 53 | "is_pointing_device": false, 54 | "product_id": 641, 55 | "vendor_id": 1452 56 | }, 57 | "ignore": false, 58 | "manipulate_caps_lock_led": true, 59 | "simple_modifications": [ 60 | { 61 | "from": { 62 | "apple_vendor_top_case_key_code": "keyboard_fn" 63 | }, 64 | "to": [ 65 | { 66 | "key_code": "left_control" 67 | } 68 | ] 69 | }, 70 | { 71 | "from": { 72 | "key_code": "left_control" 73 | }, 74 | "to": [ 75 | { 76 | "apple_vendor_top_case_key_code": "keyboard_fn" 77 | } 78 | ] 79 | } 80 | ] 81 | }, 82 | { 83 | "disable_built_in_keyboard_if_exists": false, 84 | "fn_function_keys": [], 85 | "identifiers": { 86 | "is_keyboard": true, 87 | "is_pointing_device": false, 88 | "product_id": 4142, 89 | "vendor_id": 3064 90 | }, 91 | "ignore": false, 92 | "manipulate_caps_lock_led": true, 93 | "simple_modifications": [ 94 | { 95 | "from": { 96 | "key_code": "left_command" 97 | }, 98 | "to": [ 99 | { 100 | "key_code": "left_option" 101 | } 102 | ] 103 | }, 104 | { 105 | "from": { 106 | "key_code": "left_option" 107 | }, 108 | "to": [ 109 | { 110 | "key_code": "left_command" 111 | } 112 | ] 113 | }, 114 | { 115 | "from": { 116 | "key_code": "right_command" 117 | }, 118 | "to": [ 119 | { 120 | "key_code": "right_option" 121 | } 122 | ] 123 | }, 124 | { 125 | "from": { 126 | "key_code": "right_option" 127 | }, 128 | "to": [ 129 | { 130 | "key_code": "right_command" 131 | } 132 | ] 133 | } 134 | ] 135 | } 136 | ], 137 | "fn_function_keys": [ 138 | { 139 | "from": { 140 | "key_code": "f1" 141 | }, 142 | "to": [ 143 | { 144 | "consumer_key_code": "display_brightness_decrement" 145 | } 146 | ] 147 | }, 148 | { 149 | "from": { 150 | "key_code": "f2" 151 | }, 152 | "to": [ 153 | { 154 | "consumer_key_code": "display_brightness_increment" 155 | } 156 | ] 157 | }, 158 | { 159 | "from": { 160 | "key_code": "f3" 161 | }, 162 | "to": [ 163 | { 164 | "apple_vendor_keyboard_key_code": "mission_control" 165 | } 166 | ] 167 | }, 168 | { 169 | "from": { 170 | "key_code": "f4" 171 | }, 172 | "to": [ 173 | { 174 | "apple_vendor_keyboard_key_code": "spotlight" 175 | } 176 | ] 177 | }, 178 | { 179 | "from": { 180 | "key_code": "f5" 181 | }, 182 | "to": [ 183 | { 184 | "consumer_key_code": "dictation" 185 | } 186 | ] 187 | }, 188 | { 189 | "from": { 190 | "key_code": "f6" 191 | }, 192 | "to": [ 193 | { 194 | "key_code": "f6" 195 | } 196 | ] 197 | }, 198 | { 199 | "from": { 200 | "key_code": "f7" 201 | }, 202 | "to": [ 203 | { 204 | "consumer_key_code": "rewind" 205 | } 206 | ] 207 | }, 208 | { 209 | "from": { 210 | "key_code": "f8" 211 | }, 212 | "to": [ 213 | { 214 | "consumer_key_code": "play_or_pause" 215 | } 216 | ] 217 | }, 218 | { 219 | "from": { 220 | "key_code": "f9" 221 | }, 222 | "to": [ 223 | { 224 | "consumer_key_code": "fast_forward" 225 | } 226 | ] 227 | }, 228 | { 229 | "from": { 230 | "key_code": "f10" 231 | }, 232 | "to": [ 233 | { 234 | "consumer_key_code": "mute" 235 | } 236 | ] 237 | }, 238 | { 239 | "from": { 240 | "key_code": "f11" 241 | }, 242 | "to": [ 243 | { 244 | "consumer_key_code": "volume_decrement" 245 | } 246 | ] 247 | }, 248 | { 249 | "from": { 250 | "key_code": "f12" 251 | }, 252 | "to": [ 253 | { 254 | "consumer_key_code": "volume_increment" 255 | } 256 | ] 257 | } 258 | ], 259 | "name": "Default profile", 260 | "parameters": { 261 | "delay_milliseconds_before_open_device": 1000 262 | }, 263 | "selected": true, 264 | "simple_modifications": [ 265 | { 266 | "from": { 267 | "key_code": "grave_accent_and_tilde" 268 | }, 269 | "to": [ 270 | { 271 | "key_code": "grave_accent_and_tilde" 272 | } 273 | ] 274 | }, 275 | { 276 | "from": { 277 | "key_code": "non_us_backslash" 278 | }, 279 | "to": [ 280 | { 281 | "key_code": "grave_accent_and_tilde" 282 | } 283 | ] 284 | } 285 | ], 286 | "virtual_hid_keyboard": { 287 | "country_code": 0, 288 | "indicate_sticky_modifier_keys_state": true, 289 | "mouse_key_xy_scale": 100 290 | } 291 | } 292 | ] 293 | } -------------------------------------------------------------------------------- /kvantum/.config/Kvantum/Mojave-dark/Mojave-dark.kvconfig: -------------------------------------------------------------------------------- 1 | [%General] 2 | author=LuwX 3 | comment=A dark theme based on macOS Mojave 4 | x11drag=all 5 | alt_mnemonic=true 6 | left_tabs=false 7 | attach_active_tab=false 8 | embedded_tabs=true 9 | mirror_doc_tabs=false 10 | active_tab_overlap=10 11 | group_toolbar_buttons=true 12 | spread_progressbar=true 13 | spread_menuitems=true 14 | composite=true 15 | menu_shadow_depth=14 16 | tooltip_shadow_depth=10 17 | scroll_width=12 18 | scroll_arrows=true 19 | scroll_min_extent=50 20 | scrollbar_in_view=false 21 | transient_scrollbar=true 22 | slider_width=4 23 | slider_handle_width=20 24 | slider_handle_length=20 25 | tickless_slider_handle_size=16 26 | center_toolbar_handle=true 27 | check_size=18 28 | textless_progressbar=false 29 | progressbar_thickness=4 30 | menubar_mouse_tracking=true 31 | toolbutton_style=0 32 | double_click=false 33 | translucent_windows=true 34 | blurring=true 35 | reduce_window_opacity=0 36 | popup_blurring=true 37 | opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam 38 | vertical_spin_indicators=false 39 | fill_rubberband=false 40 | merge_menubar_with_toolbar=true 41 | small_icon_size=16 42 | large_icon_size=32 43 | button_icon_size=16 44 | toolbar_icon_size=19 45 | combo_as_lineedit=true 46 | combo_menu=true 47 | combo_focus_rect=false 48 | square_combo_button=true 49 | hide_combo_checkboxes=false 50 | animate_states=true 51 | button_contents_shift=true 52 | groupbox_top_label=false 53 | inline_spin_indicators=true 54 | joined_inactive_tabs=true 55 | layout_margin=6 56 | layout_spacing=8 57 | no_window_pattern=false 58 | respect_DE=true 59 | scrollable_menu=true 60 | scrollbar_in_view=false 61 | spin_button_width=20 62 | submenu_delay=250 63 | submenu_overlap=0 64 | tooltip_delay=-1 65 | transient_groove=true 66 | tree_branch_line=false 67 | saturation=1.50 68 | contrast=0.90 69 | click_behavior=0 70 | dialog_button_layout=0 71 | intensity=1.00 72 | no_inactiveness=true 73 | reduce_menu_opacity=0 74 | shadowless_popup=false 75 | 76 | [Focus] 77 | inherits=PanelButtonCommand 78 | interior=false 79 | frame=false 80 | frame.element=focus 81 | frame.top=1 82 | frame.bottom=1 83 | frame.left=1 84 | frame.right=1 85 | frame.patternsize=20 86 | 87 | 88 | [GeneralColors] 89 | window.color=#1e1e1e 90 | base.color=#211f1d 91 | alt.base.color=#292624 92 | button.color=#f6f6f6 93 | light.color=#5a5a5a 94 | mid.light.color=#555555 95 | dark.color=#c8c8c8 96 | mid.color=#3c3c3c 97 | highlight.color=#5294e2 98 | inactive.highlight.color=#5294e2 99 | inactive.alt.base.color=#282828 100 | text.color=#e5e5e5 101 | window.text.color=#f1f1f1 102 | inactive.window.text.color=#e5e5e5 103 | button.text.color=#ffffff 104 | disabled.text.color=#999999 105 | tooltip.text.color=#efefef 106 | highlight.text.color=#ffffff 107 | link.color=#4AAFF7 108 | link.visited.color=#452886 109 | progress.indicator.text.color=#f6f6f6 110 | min_height=35 111 | 112 | [Hacks] 113 | transparent_ktitle_label=true 114 | transparent_dolphin_view=false 115 | transparent_pcmanfm_sidepane=true 116 | blur_translucent=true 117 | transparent_menutitle=true 118 | respect_darkness=false 119 | kcapacitybar_as_progressbar=true 120 | force_size_grip=true 121 | iconless_pushbutton=true 122 | iconless_menu=false 123 | disabled_icon_opacity=100 124 | lxqtmainmenu_iconsize=0 125 | middle_click_scroll=false 126 | no_selection_tint=true 127 | normal_default_pushbutton=true 128 | single_top_toolbar=true 129 | tint_on_mouseover=0 130 | transparent_pcmanfm_view=false 131 | centered_forms=false 132 | kinetic_scrolling=false 133 | noninteger_translucency=false 134 | scroll_jump_workaround=false 135 | 136 | [PanelButtonCommand] 137 | frame=true 138 | frame.element=button 139 | frame.top=2 140 | frame.bottom=2 141 | frame.left=3 142 | frame.right=3 143 | interor=true 144 | interior.element=button 145 | indicator.size=8 146 | text.normal.color=#f6f6f6 147 | text.focus.color=#f6f6f6 148 | text.press.color=#f6f6f6 149 | text.toggle.color=#303030 150 | text.shadow=true 151 | text.shadow.color=black 152 | text.shadow.xshift=1 153 | text.shadow.yshift=1 154 | text.shadow.depth=1 155 | text.shadow.alpha=80 156 | text.margin=1 157 | text.iconspacing=8 158 | indicator.element=arrow 159 | text.margin.top=0 160 | text.margin.bottom=0 161 | text.margin.left=4 162 | text.margin.right=4 163 | frame.expansion=12 164 | min_width=26 165 | min_height=24 166 | 167 | 168 | [PanelButtonTool] 169 | inherits=PanelButtonCommand 170 | 171 | [ToolbarButton] 172 | inherits=PanelButtonCommand 173 | frame=true 174 | frame.element=tbutton 175 | frame.top=10 176 | frame.bottom=10 177 | frame.left=10 178 | frame.right=10 179 | interior=true 180 | interior.element=tbutton 181 | text.press.color=black 182 | text.toggle.color=black 183 | text.normal.color=#f0f0f0 184 | text.normal.inactive.color=#8d8d8d 185 | text.toggle.inactive.color=#d1d1d1 186 | indicator.element=arrow 187 | frame.expansion=12 188 | 189 | [ToolbarLineEdit] 190 | frame.element=tlineedit 191 | interior.element=tlineedit 192 | frame.expansion=20 193 | 194 | [Dock] 195 | inherits=PanelButtonCommand 196 | interior.element=dock 197 | frame.element=dock 198 | frame.top=1 199 | frame.bottom=1 200 | frame.left=1 201 | frame.right=1 202 | text.normal.color=404040 203 | 204 | [DockTitle] 205 | inherits=PanelButtonCommand 206 | frame=false 207 | interior=false 208 | text.normal.color=404040 209 | text.focus.color=#4AAFF7 210 | text.bold=false 211 | 212 | [IndicatorSpinBox] 213 | inherits=PanelButtonCommand 214 | indicator.element=spin 215 | frame.element=spinbox 216 | interior.element=spinbox 217 | frame.top=5 218 | frame.bottom=5 219 | frame.left=5 220 | frame.right=5 221 | indicator.size=11 222 | text.normal.color=#ffffff 223 | 224 | [RadioButton] 225 | inherits=PanelButtonCommand 226 | frame=false 227 | interior.element=radio 228 | text.normal.color=404040 229 | text.focus.color=#4AAFF7 230 | 231 | [CheckBox] 232 | inherits=PanelButtonCommand 233 | frame=false 234 | interior.element=checkbox 235 | text.normal.color=404040 236 | text.focus.color=#4AAFF7 237 | 238 | [GenericFrame] 239 | inherits=PanelButtonCommand 240 | frame=true 241 | interior=false 242 | frame.element=common 243 | interior.element=common 244 | frame.top=2 245 | frame.bottom=2 246 | frame.left=2 247 | frame.right=2 248 | 249 | [LineEdit] 250 | inherits=PanelButtonCommand 251 | frame.element=lineedit 252 | interior.element=lineedit 253 | frame.top=5 254 | frame.bottom=5 255 | frame.left=5 256 | frame.right=5 257 | text.margin=0 258 | text.margin.left=0 259 | text.margin.right=0 260 | text.margin.top=0 261 | text.margin.bottom=0 262 | frame.expansion=10 263 | 264 | [DropDownButton] 265 | inherits=PanelButtonCommand 266 | indicator.element=arrow-down 267 | 268 | [IndicatorArrow] 269 | indicator.element=arrow 270 | indicator.size=10 271 | 272 | [ToolboxTab] 273 | inherits=PanelButtonCommand 274 | text.normal.color=#f6f6f6 275 | text.press.color=#f14b4b 276 | text.focus.color=#4AAFF7 277 | 278 | [Tab] 279 | inherits=PanelButtonCommand 280 | interior.element=tab 281 | text.margin.left=4 282 | text.margin.right=4 283 | text.margin.top=0 284 | text.margin.bottom=0 285 | text.normal.color=#f6f6f6 286 | frame.element=tab 287 | indicator.element=tab 288 | frame.top=3 289 | frame.bottom=3 290 | frame.left=3 291 | frame.right=3 292 | frame.expanded.top=0 293 | frame.expanded.bottom=0 294 | frame.expanded.left=0 295 | frame.expanded.right=0 296 | text.focus.color=ffffff 297 | text.press.color=#f6f6f6 298 | text.toggle.color=#ffffff 299 | text.toggle.inactive.color=#252525 300 | frame.expansion=12 301 | indicator.size=8 302 | text.shadow=false 303 | 304 | [TabFrame] 305 | inherits=GenericFrame 306 | frame.element=tabcommon 307 | interior=true 308 | interior.element=tframe 309 | frame.top=4 310 | frame.bottom=4 311 | frame.left=4 312 | frame.right=4 313 | interior.x.patternsize=20 314 | interior.y.patternsize=15 315 | 316 | [TreeExpander] 317 | inherits=PanelButtonCommand 318 | frame=false 319 | interior=false 320 | indicator.size=10 321 | indicator.element=tree 322 | 323 | [HeaderSection] 324 | inherits=PanelButtonCommand 325 | interior=true 326 | interior.element=header 327 | frame.element=header 328 | frame.top=0 329 | frame.bottom=1 330 | frame.left=1 331 | frame.right=1 332 | 333 | [SizeGrip] 334 | indicator.element=resize-grip 335 | 336 | [Toolbar] 337 | inherits=PanelButtonCommand 338 | indicator.element=toolbar 339 | indicator.size=10 340 | text.margin=0 341 | interior.element=toolbar 342 | frame.element=toolbar 343 | text.normal.color=#f1f1f1 344 | text.focus.color=#f1f1f1 345 | text.normal.inactive.color=#e0e0e0 346 | inactive.text.normal.color=#e0e0e0 347 | frame.left=4 348 | frame.right=0 349 | frame.top=0 350 | frame.bottom=7 351 | frame.expansion=0 352 | 353 | [Slider] 354 | inherits=PanelButtonCommand 355 | frame.element=slider 356 | interior.element=slider 357 | frame.top=2 358 | frame.bottom=2 359 | frame.left=3 360 | frame.right=3 361 | 362 | [SliderCursor] 363 | inherits=PanelButtonCommand 364 | frame=false 365 | interior.element=slidercursor 366 | 367 | [Progressbar] 368 | inherits=PanelButtonCommand 369 | frame.element=progress 370 | interior.element=progress 371 | text.margin=0 372 | text.normal.color=404040 373 | text.focus.color=404040 374 | text.press.color=404040 375 | text.toggle.color=404040 376 | text.bold=false 377 | frame.expansion=10 378 | 379 | [ProgressbarContents] 380 | inherits=PanelButtonCommand 381 | frame=true 382 | frame.element=progress-pattern 383 | frame.left=5 384 | frame.right=5 385 | interior.element=progress-pattern 386 | 387 | 388 | [ItemView] 389 | inherits=PanelButtonCommand 390 | text.margin=0 391 | frame.element=itemview 392 | interior.element=itemview 393 | frame.top=4 394 | frame.bottom=4 395 | frame.left=4 396 | frame.right=4 397 | text.margin.top=2 398 | text.margin.bottom=2 399 | text.margin.left=4 400 | text.margin.right=4 401 | text.normal.color=404040 402 | text.focus.color=#4AAFF7 403 | text.press.color=#f6f6f6 404 | text.toggle.color=#f6f6f6 405 | frame.expansion=6 406 | 407 | [Splitter] 408 | indicator.size=32 409 | 410 | [Scrollbar] 411 | inherits=PanelButtonCommand 412 | indicator.element=arrow 413 | indicator.size=10 414 | 415 | [ScrollbarSlider] 416 | inherits=PanelButtonCommand 417 | frame.element=scrollbarslider 418 | interior=false 419 | frame.left=6 420 | frame.right=6 421 | frame.top=6 422 | frame.bottom=6 423 | indicator.element=grip 424 | indicator.size=13 425 | frame.expansion=0 426 | 427 | [ScrollbarGroove] 428 | inherits=PanelButtonCommand 429 | interior=false 430 | frame=false 431 | 432 | [MenuItem] 433 | inherits=PanelButtonCommand 434 | frame=true 435 | frame.element=menuitem 436 | interior.element=menuitem 437 | indicator.element=menuitem 438 | text.normal.color=#ffffff 439 | text.focus.color=#f6f6f6 440 | text.margin.top=0 441 | text.margin.bottom=0 442 | text.margin.left=6 443 | text.margin.right=4 444 | frame.top=0 445 | frame.bottom=0 446 | frame.left=3 447 | frame.right=3 448 | frame.expansion=0 449 | 450 | [MenuBar] 451 | inherits=PanelButtonCommand 452 | frame.element=none 453 | interior.element=none 454 | frame.expansion=0 455 | 456 | [MenuBarItem] 457 | inherits=PanelButtonCommand 458 | interior=true 459 | interior.element=menubaritem 460 | frame.element=menubaritem 461 | frame.top=2 462 | frame.bottom=2 463 | frame.left=2 464 | frame.right=2 465 | text.margin.left=4 466 | text.margin.right=4 467 | text.margin.top=0 468 | text.margin.bottom=0 469 | text.normal.color=#f1f1f1 470 | text.focus.color=#f6f6f6 471 | text.shadow.alpha=80 472 | frame.expansion=0 473 | 474 | [TitleBar] 475 | inherits=PanelButtonCommand 476 | frame=false 477 | interior.element=titlebar 478 | indicator.size=12 479 | indicator.element=mdi 480 | text.normal.color=#787878 481 | text.focus.color=404040 482 | text.bold=true 483 | text.italic=true 484 | frame.expansion=0 485 | 486 | [ComboBox] 487 | inherits=PanelButtonCommand 488 | indicator.element=comboarrow 489 | indicator.size=12 490 | 491 | [Menu] 492 | inherits=PanelButtonCommand 493 | frame.top=1 494 | frame.bottom=1 495 | frame.left=0 496 | frame.right=0 497 | frame.element=menu 498 | interior.element=menu 499 | text.normal.color=404040 500 | frame.expansion=0 501 | 502 | [GroupBox] 503 | inherits=GenericFrame 504 | frame=true 505 | frame.element=group 506 | text.shadow=0 507 | text.margin=0 508 | interior=true 509 | interior.element=common 510 | frame.top=5 511 | frame.bottom=5 512 | frame.left=5 513 | frame.right=5 514 | text.normal.color=404040 515 | text.press.color=404040 516 | text.focus.color=#4AAFF7 517 | text.normal.inactive.color=#e1e1e1 518 | text.toggle.inactive.color=#e1e1e1 519 | text.bold=true 520 | text.boldness=2 521 | text.shadow=true 522 | text.shadow.color=black 523 | text.shadow.xshift=1 524 | text.shadow.yshift=1 525 | text.shadow.depth=1 526 | text.shadow.alpha=80 527 | 528 | frame.expansion=0 529 | interior.x.patternsize=20 530 | interior.y.patternsize=15 531 | 532 | [TabBarFrame] 533 | inherits=GenericFrame 534 | frame=false 535 | interior=false 536 | text.shadow=0 537 | 538 | [ToolTip] 539 | inherits=GenericFrame 540 | frame=true 541 | frame.top=0 542 | frame.bottom=0 543 | frame.left=0 544 | frame.right=0 545 | interior=true 546 | text.shadow=1 547 | text.margin=1 548 | text.margin.top=10 549 | text.margin.bottom=10 550 | text.margin.left=10 551 | text.margin.right=10 552 | interior.element=tooltip 553 | frame.element=tooltip 554 | frame.expansion=0 555 | 556 | [StatusBar] 557 | inherits=GenericFrame 558 | frame=false 559 | interior=false 560 | 561 | [Window] 562 | interior=true 563 | interior.element=window 564 | frame=true 565 | frame.element=window 566 | frame.bottom=10 567 | frame.top=10 568 | -------------------------------------------------------------------------------- /zsh/.zshrc: -------------------------------------------------------------------------------- 1 | # If you come from bash you might have to change your $PATH. 2 | # export PATH=$HOME/bin:/usr/local/bin:$PATH 3 | 4 | # Path to your oh-my-zsh installation. 5 | export ZSH="$HOME/.oh-my-zsh" 6 | 7 | # Workaround: https://unix.stackexchange.com/a/608921/175694 8 | export GPG_TTY=$(tty) 9 | 10 | # Set name of the theme to load --- if set to "random", it will 11 | # load a random theme each time oh-my-zsh is loaded, in which case, 12 | # to know which specific one was loaded, run: echo $RANDOM_THEME 13 | # See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes 14 | if [ "$TERM" != "linux" ]; then 15 | ZSH_THEME="powerlevel10k/powerlevel10k" 16 | else 17 | #ZSH_THEME="jnrowe" 18 | ZSH_THEME="gentoo" 19 | fi 20 | # Set list of themes to pick from when loading at random 21 | # Setting this variable when ZSH_THEME=random will cause zsh to load 22 | # a theme from this variable instead of looking in ~/.oh-my-zsh/themes/ 23 | # If set to an empty array, this variable will have no effect. 24 | # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) 25 | 26 | # Uncomment the following line to use case-sensitive completion. 27 | # CASE_SENSITIVE="true" 28 | 29 | # Uncomment the following line to use hyphen-insensitive completion. 30 | # Case-sensitive completion must be off. _ and - will be interchangeable. 31 | # HYPHEN_INSENSITIVE="true" 32 | 33 | # Uncomment the following line to disable bi-weekly auto-update checks. 34 | # DISABLE_AUTO_UPDATE="true" 35 | 36 | # Uncomment the following line to automatically update without prompting. 37 | # DISABLE_UPDATE_PROMPT="true" 38 | 39 | # Uncomment the following line to change how often to auto-update (in days). 40 | # export UPDATE_ZSH_DAYS=13 41 | 42 | # Uncomment the following line if pasting URLs and other text is messed up. 43 | # DISABLE_MAGIC_FUNCTIONS=true 44 | 45 | # Uncomment the following line to disable colors in ls. 46 | # DISABLE_LS_COLORS="true" 47 | 48 | # Uncomment the following line to disable auto-setting terminal title. 49 | # DISABLE_AUTO_TITLE="true" 50 | 51 | # Uncomment the following line to enable command auto-correction. 52 | # ENABLE_CORRECTION="true" 53 | 54 | # Uncomment the following line to display red dots whilst waiting for completion. 55 | # COMPLETION_WAITING_DOTS="true" 56 | 57 | # Uncomment the following line if you want to disable marking untracked files 58 | # under VCS as dirty. This makes repository status check for large repositories 59 | # much, much faster. 60 | # DISABLE_UNTRACKED_FILES_DIRTY="true" 61 | 62 | # Uncomment the following line if you want to change the command execution time 63 | # stamp shown in the history command output. 64 | # You can set one of the optional three formats: 65 | # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 66 | # or set a custom format using the strftime function format specifications, 67 | # see 'man strftime' for details. 68 | # HIST_STAMPS="mm/dd/yyyy" 69 | 70 | # Would you like to use another custom folder than $ZSH/custom? 71 | # ZSH_CUSTOM=/path/to/new-custom-folder 72 | 73 | # Which plugins would you like to load? 74 | # Standard plugins can be found in ~/.oh-my-zsh/plugins/* 75 | # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ 76 | # Example format: plugins=(rails git textmate ruby lighthouse) 77 | # Add wisely, as too many plugins slow down shell startup. 78 | plugins=( 79 | git 80 | history-substring-search 81 | thefuck 82 | colorize 83 | colored-man-pages 84 | archlinux 85 | kubectl 86 | helm 87 | ansible 88 | docker 89 | zsh-autosuggestions 90 | zsh-syntax-highlighting 91 | ) 92 | autoload -U compinit && compinit 93 | 94 | source $ZSH/oh-my-zsh.sh 95 | 96 | zstyle ':bracketed-paste-magic' active-widgets '.self-*'. 97 | 98 | # fish like completion 99 | ZSH_AUTOSUGGEST_STRATEGY=(completion) 100 | ZSH_AUTOSUGGEST_USE_ASYNC=1 101 | #source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 102 | #source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 103 | 104 | # list colors: 105 | # for code ({000..255}) print -P -- "%F{$code}Foreground%f $code %K{$code}%F{255}Back%f%F{232}ground%f%k" 106 | 107 | # PowerLevel9K configuration 108 | KUBE_PS1_PREFIX="" 109 | KUBE_PS1_SUFFIX="" 110 | KUBE_PS1_SEPARATOR="" 111 | KUBE_PS1_SYMBOL_ENABLE="false" 112 | KUBE_PS1_DIVIDER=" " 113 | 114 | typeset -g POWERLEVEL9K_MODE=nerdfont-complete 115 | typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%233F\uE0B1' 116 | typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%233F\uE0B3' 117 | typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' 118 | typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' 119 | typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' 120 | typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' 121 | typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' 122 | typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='' 123 | typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= 124 | typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND= 125 | typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=76 126 | typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=196 127 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' 128 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' 129 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='Ⅴ' 130 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' 131 | typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true 132 | typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= 133 | typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= 134 | typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE= 135 | 136 | typeset -g POWERLEVEL9K_DIR_FOREGROUND=015 137 | typeset -g POWERLEVEL9K_DIR_BACKGROUND=239 138 | typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique 139 | typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= 140 | typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=015 141 | typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=015 142 | typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true 143 | local anchor_files=( 144 | .bzr 145 | .citc 146 | .git 147 | .hg 148 | .node-version 149 | .python-version 150 | .ruby-version 151 | .shorten_folder_marker 152 | .svn 153 | .terraform 154 | CVS 155 | Cargo.toml 156 | composer.json 157 | go.mod 158 | package.json 159 | ) 160 | typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" 161 | typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 162 | typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 163 | typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 164 | typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 165 | typeset -g POWERLEVEL9K_DIR_HYPERLINK=false 166 | typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true 167 | typeset -g POWERLEVEL9K_DIR_CLASSES=() 168 | 169 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=3 170 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=234 171 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=234 172 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=3 173 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' 174 | 175 | #typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true 176 | typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%B%n%b' 177 | 178 | ZLE_RPROMPT_INDENT=0 179 | POWERLEVEL9K_CUSTOM_KUBE_PS1='kube_ps1' 180 | 181 | # one line 182 | POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir virtualenv background_jobs) 183 | #POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status custom_kube_ps1 vcs) 184 | POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status command_execution_time kubecontext vcs) 185 | 186 | # two lines 187 | #POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir virtualenv newline prompt_char) 188 | #POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs custom_kube_ps1 vcs newline) 189 | 190 | POWERLEVEL9K_CONTEXT_FOREGROUND='232' 191 | POWERLEVEL9K_CONTEXT_BACKGROUND='184' 192 | #POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='236' 193 | #POWERLEVEL9K_DIR_DEFAULT_FOREGROUND='250' 194 | #POWERLEVEL9K_DIR_HOME_BACKGROUND='236' 195 | #POWERLEVEL9K_DIR_HOME_FOREGROUND='250' 196 | #POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND='236' 197 | #POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND='250' 198 | #POWERLEVEL9K_DIR_ETC_BACKGROUND='052' 199 | #POWERLEVEL9K_DIR_ETC_FOREGROUND='214' 200 | POWERLEVEL9K_CUSTOM_KUBE_PS1_FOREGROUND='233' 201 | POWERLEVEL9K_CUSTOM_KUBE_PS1_BACKGROUND='235' 202 | POWERLEVEL9K_KUBECONTEXT_CLASSES=( 203 | '*prod*' PROD 204 | '*' DEFAULT) 205 | POWERLEVEL9K_KUBECONTEXT_PROD_BACKGROUND='235' 206 | POWERLEVEL9K_KUBECONTEXT_PROD_FOREGROUND=001 207 | POWERLEVEL9K_KUBECONTEXT_PROD_VISUAL_IDENTIFIER_EXPANSION='' 208 | POWERLEVEL9K_KUBECONTEXT_PROD_CONTENT_EXPANSION+='$P9K_KUBECONTEXT_NAME%6F${${:- $P9K_KUBECONTEXT_NAMESPACE}:# default}' 209 | POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND='235' 210 | POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134 211 | POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='' 212 | POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='$P9K_KUBECONTEXT_NAME%6F${${:- $P9K_KUBECONTEXT_NAMESPACE}:# default}' 213 | #POWERLEVEL9K_KUBECONTEXT_PREFIX='⎈ ' 214 | 215 | 216 | ## for recordings only 217 | #POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION='$P9K_KUBECONTEXT_NAMESPACE ⎈' 218 | #POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status command_execution_time kubecontext) 219 | 220 | #POWERLEVEL9K_VCS_BACKGROUND='112' 221 | #POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='214' 222 | POWERLEVEL9K_VCS_FOREGROUND='148' 223 | POWERLEVEL9K_VCS_BACKGROUND='236' 224 | POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='214' 225 | POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='236' 226 | POWERLEVEL9K_STATUS_BACKGROUND='234' 227 | POWERLEVEL9K_STATUS_OK=false 228 | POWERLEVEL9K_STATUS_OK_FOREGROUND=70 229 | POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' 230 | POWERLEVEL9K_STATUS_OK_PIPE=true 231 | POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70 232 | POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' 233 | POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160 234 | POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='↵' 235 | POWERLEVEL9K_STATUS_ERROR_SIGNAL=true 236 | POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160 237 | POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false 238 | POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='↵' 239 | POWERLEVEL9K_STATUS_ERROR_PIPE=true 240 | POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160 241 | POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='↵' 242 | POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND='236' 243 | 244 | 245 | # User configuration 246 | export PATH=$PATH:${HOME}/.local/bin 247 | export EDITOR="vim" 248 | export BROWSER="firefox" 249 | export QT_QPA_PLATFORMTHEME="gtk3" 250 | export QT_STYLE_OVERRIDE="kvantum" 251 | export GOPATH=$HOME/go 252 | export GOBIN=$GOPATH/bin 253 | export PATH="$PATH:$GOBIN" 254 | export LESS="-F -X $LESS" 255 | 256 | 257 | # colima 258 | export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock" 259 | 260 | # docker platform 261 | export DOCKER_DEFAULT_PLATFORM=linux/amd64 262 | 263 | # kubectl-krew 264 | export PATH="$PATH:${HOME}/.krew/bin" 265 | 266 | # Colorize output 267 | #alias ls='ls --color=auto' 268 | alias grep='grep --color=auto' 269 | alias diff='diff --color=auto' 270 | 271 | alias ke='kubectl exec -ti' 272 | alias ku='kubectl use' 273 | alias q='qbec' 274 | alias qs='qbec show' 275 | alias qa='qbec apply' 276 | alias qd='qbec diff' 277 | alias gs='git status' 278 | 279 | 280 | alias oneexec='kubectl exec -n opennebula -ti `kubectl get pod -n opennebula -l role=leader -o name` -c oned -- bash' 281 | alias onehost='kubectl exec -n opennebula `kubectl get pod -n opennebula -l role=leader -o name` -c oned -- onehost' 282 | alias onevm='kubectl exec -n opennebula `kubectl get pod -n opennebula -l role=leader -o name` -c oned -- onevm' 283 | alias onezone='kubectl exec -n opennebula `kubectl get pod -n opennebula -l role=leader -o name` -c oned -- onezone' 284 | alias oneimage='kubectl exec -n opennebula `kubectl get pod -n opennebula -l role=leader -o name` -c oned -- oneimage' 285 | alias onedatastore='kubectl exec -n opennebula `kubectl get pod -n opennebula -l role=leader -o name` -c oned -- onedatastore' 286 | 287 | #alias linstor='kubectl exec -n linstor deploy/linstor-controller -ti -- linstor' 288 | alias linstor='kubectl linstor' 289 | alias neat='kubectl neat' 290 | alias krew='kubectl krew' 291 | 292 | alias skopeo='skopeo --override-os linux --override-arch amd64' 293 | # OpenNebula 294 | export PATH=$PATH:${HOME}/.gem/ruby/2.6.0/bin:${HOME}/.gem/ruby/2.7.0/bin 295 | export ONE_XMLRPC=https://opennebula.wedos.cloud/RPC2 296 | # OpenStack 297 | . ~/.a-kvapil-openrc 298 | 299 | # Homebrew binaries 300 | export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH" 301 | export PATH="/opt/homebrew/Cellar/grep/3.7/libexec/gnubin:$PATH" 302 | export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH" 303 | export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH" 304 | export PATH="/opt/homebrew/opt/diffutils/bin:$PATH" 305 | export PATH="/opt/homebrew/opt/util-linux/bin:$PATH" 306 | 307 | alias cal="LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 /opt/homebrew/opt/util-linux/bin/cal -m" 308 | 309 | # Kubebuilder 310 | export PATH=$PATH:/usr/local/kubebuilder/bin 311 | 312 | # NVM 313 | export NVM_DIR="$HOME/.nvm" 314 | [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" 315 | [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" 316 | 317 | # ibus-typing-booster 318 | export GTK_IM_MODULE=ibus 319 | export XMODIFIERS=@im=ibus 320 | export QT_IM_MODULE=ibus 321 | 322 | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. 323 | #[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh 324 | 325 | # Red stderr 326 | if [ -f /usr/lib/libstderred.so ] && [ -z "$LD_PRELOAD" ]; then 327 | export LD_PRELOAD="/usr/lib/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}" 328 | fi 329 | 330 | if [ "$TERM" = xterm-termite ]; then 331 | export TERM=xterm-256color 332 | fi 333 | 334 | autoload -U +X bashcompinit && bashcompinit 335 | complete -o nospace -C /usr/local/bin/tk tk 336 | 337 | # Disable dock icon bouncing 338 | printf "\e[?1042l" 339 | 340 | 341 | # Flant integration 342 | export SSH_ASKPASS=/usr/local/bin/ssh-askpass 343 | launchctl setenv SSH_ASKPASS $SSH_ASKPASS 344 | SSH_ENV="/tmp/.ssh_environment_added" 345 | env_display="`/bin/launchctl getenv DISPLAY`" 346 | if [[ "x${env_display}" == "x" ]]; then 347 | /bin/launchctl setenv DISPLAY :0 348 | fi 349 | export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH" 350 | -------------------------------------------------------------------------------- /awesome/.config/awesome/rc.lua: -------------------------------------------------------------------------------- 1 | -- Standard awesome library 2 | local gears = require("gears") 3 | local awful = require("awful") 4 | require("awful.autofocus") 5 | -- Widget and layout library 6 | local wibox = require("wibox") 7 | -- Theme handling library 8 | local beautiful = require("beautiful") 9 | -- Notification library 10 | local naughty = require("naughty") 11 | local menubar = require("menubar") 12 | local hotkeys_popup = require("awful.hotkeys_popup").widget 13 | local screenshot = require("screenshot") 14 | 15 | -- {{{ Error handling 16 | -- Check if awesome encountered an error during startup and fell back to 17 | -- another config (This code will only ever execute for the fallback config) 18 | if awesome.startup_errors then 19 | naughty.notify({ preset = naughty.config.presets.critical, 20 | title = "Oops, there were errors during startup!", 21 | text = awesome.startup_errors }) 22 | end 23 | 24 | -- Handle runtime errors after startup 25 | do 26 | local in_error = false 27 | awesome.connect_signal("debug::error", function (err) 28 | -- Make sure we don't go into an endless error loop 29 | if in_error then return end 30 | in_error = true 31 | 32 | naughty.notify({ preset = naughty.config.presets.critical, 33 | title = "Oops, an error happened!", 34 | text = tostring(err) }) 35 | in_error = false 36 | end) 37 | end 38 | -- }}} 39 | 40 | -- {{{ Variable definitions 41 | -- Themes define colours, icons, font and wallpapers. 42 | -- beautiful.init(awful.util.get_themes_dir() .. "default/theme.lua") 43 | beautiful.init("~/.config/awesome/theme.lua") 44 | 45 | -- This is used later as the default terminal and editor to run. 46 | terminal = "alacritty" 47 | browser = "firefox" 48 | editor = os.getenv("EDITOR") or "vim" 49 | editor_cmd = terminal .. " -e " .. editor 50 | 51 | -- Default modkey. 52 | -- Usually, Mod4 is the key with a logo between Control and Alt. 53 | -- If you do not like this or do not have such a key, 54 | -- I suggest you to remap Mod4 to another key using xmodmap or other tools. 55 | -- However, you can use another modifier like Mod1, but it may interact with others. 56 | modkey = "Mod4" 57 | 58 | -- Table of layouts to cover with awful.layout.inc, order matters. 59 | awful.layout.layouts = { 60 | awful.layout.suit.tile, 61 | awful.layout.suit.tile.left, 62 | awful.layout.suit.tile.bottom, 63 | awful.layout.suit.tile.top, 64 | -- awful.layout.suit.fair, 65 | -- awful.layout.suit.fair.horizontal, 66 | -- awful.layout.suit.spiral, 67 | -- awful.layout.suit.spiral.dwindle, 68 | -- awful.layout.suit.max, 69 | -- awful.layout.suit.max.fullscreen, 70 | -- awful.layout.suit.magnifier, 71 | -- awful.layout.suit.corner.nw, 72 | -- awful.layout.suit.corner.ne, 73 | -- awful.layout.suit.corner.sw, 74 | -- awful.layout.suit.corner.se, 75 | awful.layout.suit.floating, 76 | } 77 | -- }}} 78 | 79 | -- {{{ Helper functions 80 | local function client_menu_toggle_fn() 81 | local instance = nil 82 | 83 | return function () 84 | if instance and instance.wibox.visible then 85 | instance:hide() 86 | instance = nil 87 | else 88 | instance = awful.menu.clients({ theme = { width = 250 } }) 89 | end 90 | end 91 | end 92 | -- }}} 93 | 94 | -- {{{ Menu 95 | -- Create a launcher widget and a main menu 96 | myawesomemenu = { 97 | { "hotkeys", function() return false, hotkeys_popup.show_help end}, 98 | { "manual", terminal .. " -e man awesome" }, 99 | { "edit config", editor_cmd .. " " .. awesome.conffile }, 100 | { "restart", awesome.restart }, 101 | { "quit", function() awesome.quit() end} 102 | } 103 | 104 | mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, 105 | { "open terminal", terminal } 106 | } 107 | }) 108 | 109 | mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, 110 | menu = mymainmenu }) 111 | 112 | -- Menubar configuration 113 | menubar.utils.terminal = terminal -- Set the terminal for applications that require it 114 | -- }}} 115 | 116 | -- Keyboard map indicator and switcher 117 | mykeyboardlayout = awful.widget.keyboardlayout() 118 | 119 | -- {{{ Wibar 120 | -- Create a textclock widget 121 | mytextclock = wibox.widget.textclock() 122 | 123 | -- Create a wibox for each screen and add it 124 | local taglist_buttons = awful.util.table.join( 125 | awful.button({ }, 1, function(t) t:view_only() end), 126 | awful.button({ modkey }, 1, function(t) 127 | if client.focus then 128 | client.focus:move_to_tag(t) 129 | end 130 | end), 131 | awful.button({ }, 3, awful.tag.viewtoggle), 132 | awful.button({ modkey }, 3, function(t) 133 | if client.focus then 134 | client.focus:toggle_tag(t) 135 | end 136 | end), 137 | awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end), 138 | awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end) 139 | ) 140 | 141 | local tasklist_buttons = awful.util.table.join( 142 | awful.button({ }, 1, function (c) 143 | if c == client.focus then 144 | c.minimized = true 145 | else 146 | -- Without this, the following 147 | -- :isvisible() makes no sense 148 | c.minimized = false 149 | if not c:isvisible() and c.first_tag then 150 | c.first_tag:view_only() 151 | end 152 | -- This will also un-minimize 153 | -- the client, if needed 154 | client.focus = c 155 | c:raise() 156 | end 157 | end), 158 | awful.button({ }, 3, client_menu_toggle_fn()), 159 | awful.button({ }, 4, function () 160 | awful.client.focus.byidx(1) 161 | end), 162 | awful.button({ }, 5, function () 163 | awful.client.focus.byidx(-1) 164 | end)) 165 | 166 | local function set_wallpaper(s) 167 | -- Wallpaper 168 | if beautiful.wallpaper then 169 | local wallpaper = beautiful.wallpaper 170 | -- If wallpaper is a function, call it with the screen 171 | if type(wallpaper) == "function" then 172 | wallpaper = wallpaper(s) 173 | end 174 | gears.wallpaper.maximized(wallpaper, s, true) 175 | end 176 | end 177 | 178 | -- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) 179 | screen.connect_signal("property::geometry", set_wallpaper) 180 | 181 | awful.screen.connect_for_each_screen(function(s) 182 | -- Wallpaper 183 | set_wallpaper(s) 184 | 185 | -- Each screen has its own tag table. 186 | awful.tag({ " www ", " ⟙2 ", " ⟙3 ", " ⟙4 ", " ✕5 ", " ★6 ", " ★7 ", " ★8 ", " ♫ " }, s, awful.layout.layouts[1]) 187 | 188 | -- Create a promptbox for each screen 189 | s.mypromptbox = awful.widget.prompt() 190 | -- Create an imagebox widget which will contains an icon indicating which layout we're using. 191 | -- We need one layoutbox per screen. 192 | s.mylayoutbox = awful.widget.layoutbox(s) 193 | s.mylayoutbox:buttons(awful.util.table.join( 194 | awful.button({ }, 1, function () awful.layout.inc( 1) end), 195 | awful.button({ }, 3, function () awful.layout.inc(-1) end), 196 | awful.button({ }, 4, function () awful.layout.inc( 1) end), 197 | awful.button({ }, 5, function () awful.layout.inc(-1) end))) 198 | -- Create a taglist widget 199 | s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.all, taglist_buttons) 200 | 201 | -- Create a tasklist widget 202 | s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, tasklist_buttons) 203 | 204 | -- Create the wibox 205 | s.mywibox = awful.wibar({ position = "top", screen = s }) 206 | 207 | -- Add widgets to the wibox 208 | s.mywibox:setup { 209 | layout = wibox.layout.align.horizontal, 210 | { -- Left widgets 211 | layout = wibox.layout.fixed.horizontal, 212 | mylauncher, 213 | s.mytaglist, 214 | s.mypromptbox, 215 | }, 216 | s.mytasklist, -- Middle widget 217 | { -- Right widgets 218 | layout = wibox.layout.fixed.horizontal, 219 | mykeyboardlayout, 220 | wibox.widget.systray(), 221 | mytextclock, 222 | s.mylayoutbox, 223 | }, 224 | } 225 | end) 226 | -- }}} 227 | 228 | -- {{{ Mouse bindings 229 | root.buttons(awful.util.table.join( 230 | awful.button({ }, 3, function () mymainmenu:toggle() end), 231 | awful.button({ }, 4, awful.tag.viewnext), 232 | awful.button({ }, 5, awful.tag.viewprev) 233 | )) 234 | -- }}} 235 | 236 | -- {{{ Key bindings 237 | globalkeys = awful.util.table.join( 238 | awful.key({ modkey, }, "s", hotkeys_popup.show_help, 239 | {description="show help", group="awesome"}), 240 | awful.key({ modkey, }, "Left", awful.tag.viewprev, 241 | {description = "view previous", group = "tag"}), 242 | awful.key({ modkey, }, "Right", awful.tag.viewnext, 243 | {description = "view next", group = "tag"}), 244 | awful.key({ modkey, }, "Escape", awful.tag.history.restore, 245 | {description = "go back", group = "tag"}), 246 | 247 | awful.key({ modkey, }, "j", 248 | function () 249 | awful.client.focus.byidx( 1) 250 | end, 251 | {description = "focus next by index", group = "client"} 252 | ), 253 | awful.key({ modkey, }, "k", 254 | function () 255 | awful.client.focus.byidx(-1) 256 | end, 257 | {description = "focus previous by index", group = "client"} 258 | ), 259 | awful.key({ modkey, }, "w", function () mymainmenu:show() end, 260 | {description = "show main menu", group = "awesome"}), 261 | 262 | -- Layout manipulation 263 | awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, 264 | {description = "swap with next client by index", group = "client"}), 265 | awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end, 266 | {description = "swap with previous client by index", group = "client"}), 267 | awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end, 268 | {description = "focus the next screen", group = "screen"}), 269 | awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end, 270 | {description = "focus the previous screen", group = "screen"}), 271 | awful.key({ modkey, }, "u", awful.client.urgent.jumpto, 272 | {description = "jump to urgent client", group = "client"}), 273 | awful.key({ modkey, }, "Tab", 274 | function () 275 | awful.client.focus.history.previous() 276 | if client.focus then 277 | client.focus:raise() 278 | end 279 | end, 280 | {description = "go back", group = "client"}), 281 | 282 | -- Volume control 283 | awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer set Master 9%+") end), 284 | awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer set Master 9%-") end), 285 | awful.key({ }, "XF86AudioMute", function () awful.util.spawn("bash -c 'amixer sset Master toggle; amixer sset Speaker unmute'") end), 286 | awful.key({ }, "XF86MonBrightnessUp", function () awful.util.spawn("xbacklight +20") end), 287 | awful.key({ }, "XF86MonBrightnessDown", function () awful.util.spawn("xbacklight -20") end), 288 | awful.key({ }, "XF86WLAN", function () awful.util.spawn("if [ $(cat /sys/class/rfkill/rfkill1/soft) -eq 1 ]; then rfkill unblock 1; else rfkill block 1; fi") end), 289 | awful.key({ }, "XF86PowerOff", function () awful.util.spawn("i3lock --24 -t -i /home/kvaps/Pictures/lockscreen.png") end), 290 | awful.key({ modkey, "Control" }, "l", function () awful.util.spawn("i3lock --24 -t -i /home/kvaps/Pictures/lockscreen.png") end), 291 | awful.key({ "Shift" }, "XF86PowerOff", function () awful.util.spawn("sh -c 'i3lock --24 -t -i /home/kvaps/Pictures/lockscreen.png & systemctl suspend'") end), 292 | 293 | -- Translate 294 | awful.key({ modkey, }, "`", function () awful.util.spawn("sh -c 'notify-send -u low \"$(xsel -o | trans -b :ru)\" '") end), 295 | awful.key({ modkey, "Shift" }, "`", function () awful.util.spawn("sh -c 'notify-send -u low \"$(xsel -o | trans -b :en)\" '") end), 296 | 297 | -- Screenshot 298 | awful.key({ }, "Print", scrot_full, 299 | {description = "Take a screenshot of entire screen", group = "screenshot"}), 300 | awful.key({ modkey, }, "Print", scrot_selection, 301 | {description = "Take a screenshot of selection", group = "screenshot"}), 302 | awful.key({ "Shift" }, "Print", scrot_window, 303 | {description = "Take a screenshot of focused window", group = "screenshot"}), 304 | awful.key({ "Ctrl" }, "Print", scrot_delay, 305 | {description = "Take a screenshot of delay", group = "screenshot"}), 306 | 307 | -- Standard program 308 | awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, 309 | {description = "open a terminal", group = "launcher"}), 310 | awful.key({ modkey, "Control" }, "Return", function () awful.util.spawn("sh -c 'alacritty --working-directory \"$(xcwd)\"'") end, 311 | {description = "open a terminal on current path", group = "launcher"}), 312 | awful.key({ modkey, "Control" }, "r", awesome.restart, 313 | {description = "reload awesome", group = "awesome"}), 314 | awful.key({ modkey, "Shift" }, "q", awesome.quit, 315 | {description = "quit awesome", group = "awesome"}), 316 | 317 | awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end, 318 | {description = "increase master width factor", group = "layout"}), 319 | awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end, 320 | {description = "decrease master width factor", group = "layout"}), 321 | awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end, 322 | {description = "increase the number of master clients", group = "layout"}), 323 | awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end, 324 | {description = "decrease the number of master clients", group = "layout"}), 325 | awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end, 326 | {description = "increase the number of columns", group = "layout"}), 327 | awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end, 328 | {description = "decrease the number of columns", group = "layout"}), 329 | awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end, 330 | {description = "select next", group = "layout"}), 331 | awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end, 332 | {description = "select previous", group = "layout"}), 333 | 334 | awful.key({ modkey, "Control" }, "n", 335 | function () 336 | local c = awful.client.restore() 337 | -- Focus restored client 338 | if c then 339 | client.focus = c 340 | c:raise() 341 | end 342 | end, 343 | {description = "restore minimized", group = "client"}), 344 | 345 | -- Prompt 346 | awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, 347 | {description = "run prompt", group = "launcher"}), 348 | 349 | awful.key({ modkey }, "x", 350 | function () 351 | awful.prompt.run { 352 | prompt = "Run Lua code: ", 353 | textbox = awful.screen.focused().mypromptbox.widget, 354 | exe_callback = awful.util.eval, 355 | history_path = awful.util.get_cache_dir() .. "/history_eval" 356 | } 357 | end, 358 | {description = "lua execute prompt", group = "awesome"}), 359 | -- Menubar 360 | awful.key({ modkey }, "p", function() menubar.show() end, 361 | {description = "show the menubar", group = "launcher"}) 362 | ) 363 | 364 | clientkeys = awful.util.table.join( 365 | awful.key({ modkey, }, "f", 366 | function (c) 367 | c.fullscreen = not c.fullscreen 368 | c:raise() 369 | end, 370 | {description = "toggle fullscreen", group = "client"}), 371 | awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end, 372 | {description = "close", group = "client"}), 373 | awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle , 374 | {description = "toggle floating", group = "client"}), 375 | awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end, 376 | {description = "move to master", group = "client"}), 377 | awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, 378 | {description = "move to screen", group = "client"}), 379 | awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end, 380 | {description = "toggle keep on top", group = "client"}), 381 | awful.key({ modkey, }, "n", 382 | function (c) 383 | -- The client currently has the input focus, so it cannot be 384 | -- minimized, since minimized clients can't have the focus. 385 | c.minimized = true 386 | end , 387 | {description = "minimize", group = "client"}), 388 | awful.key({ modkey, }, "m", 389 | function (c) 390 | c.maximized = not c.maximized 391 | c:raise() 392 | end , 393 | {description = "maximize", group = "client"}) 394 | ) 395 | 396 | -- Bind all key numbers to tags. 397 | -- Be careful: we use keycodes to make it works on any keyboard layout. 398 | -- This should map on the top row of your keyboard, usually 1 to 9. 399 | for i = 1, 9 do 400 | globalkeys = awful.util.table.join(globalkeys, 401 | -- View tag only. 402 | awful.key({ modkey }, "#" .. i + 9, 403 | function () 404 | local screen = awful.screen.focused() 405 | local tag = screen.tags[i] 406 | if tag then 407 | tag:view_only() 408 | end 409 | end, 410 | {description = "view tag #"..i, group = "tag"}), 411 | -- Toggle tag display. 412 | awful.key({ modkey, "Control" }, "#" .. i + 9, 413 | function () 414 | local screen = awful.screen.focused() 415 | local tag = screen.tags[i] 416 | if tag then 417 | awful.tag.viewtoggle(tag) 418 | end 419 | end, 420 | {description = "toggle tag #" .. i, group = "tag"}), 421 | -- Move client to tag. 422 | awful.key({ modkey, "Shift" }, "#" .. i + 9, 423 | function () 424 | if client.focus then 425 | local tag = client.focus.screen.tags[i] 426 | if tag then 427 | client.focus:move_to_tag(tag) 428 | end 429 | end 430 | end, 431 | {description = "move focused client to tag #"..i, group = "tag"}), 432 | -- Toggle tag on focused client. 433 | awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, 434 | function () 435 | if client.focus then 436 | local tag = client.focus.screen.tags[i] 437 | if tag then 438 | client.focus:toggle_tag(tag) 439 | end 440 | end 441 | end, 442 | {description = "toggle focused client on tag #" .. i, group = "tag"}) 443 | ) 444 | end 445 | 446 | clientbuttons = awful.util.table.join( 447 | awful.button({ }, 1, function (c) client.focus = c; c:raise() end), 448 | awful.button({ modkey }, 1, awful.mouse.client.move), 449 | awful.button({ modkey }, 3, awful.mouse.client.resize)) 450 | 451 | -- Set keys 452 | root.keys(globalkeys) 453 | -- }}} 454 | 455 | -- {{{ Rules 456 | -- Rules to apply to new clients (through the "manage" signal). 457 | awful.rules.rules = { 458 | -- All clients will match this rule. 459 | { rule = { }, 460 | properties = { border_width = beautiful.border_width, 461 | border_color = beautiful.border_normal, 462 | focus = awful.client.focus.filter, 463 | raise = true, 464 | keys = clientkeys, 465 | buttons = clientbuttons, 466 | screen = awful.screen.preferred, 467 | placement = awful.placement.no_overlap+awful.placement.no_offscreen 468 | } 469 | }, 470 | 471 | -- Floating clients. 472 | { rule_any = { 473 | instance = { 474 | "DTA", -- Firefox addon DownThemAll. 475 | "copyq", -- Includes session name in class. 476 | }, 477 | class = { 478 | "kmix", 479 | "Arandr", 480 | "Gpick", 481 | "Kruler", 482 | "MessageWin", -- kalarm. 483 | "Sxiv", 484 | "Wpa_gui", 485 | "pinentry", 486 | "veromix", 487 | "xtightvncviewer"}, 488 | 489 | name = { 490 | "Event Tester", -- xev. 491 | }, 492 | role = { 493 | "AlarmWindow", -- Thunderbird's calendar. 494 | "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. 495 | } 496 | }, properties = { floating = true }}, 497 | 498 | -- -- Add titlebars to normal clients and dialogs 499 | -- { rule_any = {type = { "normal", "dialog" } 500 | -- }, properties = { titlebars_enabled = true } 501 | -- }, 502 | 503 | -- Set Firefox to always map on the tag named "2" on screen 1. 504 | -- { rule = { class = "Firefox" }, 505 | -- properties = { screen = 1, tag = "2" } }, 506 | 507 | { rule = { class = "firefox" }, 508 | properties = { tag = " www " } }, 509 | { rule = { class = "Deadbeef" }, 510 | properties = { tag = " ♫ " } }, 511 | { rule = { class = "Audacious" }, 512 | properties = { tag = " ♫ " } }, 513 | { rule = { class = "KeePass" }, 514 | properties = { tag = " ✕5 ", screen = 1, switchtotag = true } }, 515 | } 516 | -- }}} 517 | 518 | -- {{{ Signals 519 | -- Signal function to execute when a new client appears. 520 | client.connect_signal("manage", function (c) 521 | -- Set the windows at the slave, 522 | -- i.e. put it at the end of others instead of setting it master. 523 | -- if not awesome.startup then awful.client.setslave(c) end 524 | 525 | if awesome.startup and 526 | not c.size_hints.user_position 527 | and not c.size_hints.program_position then 528 | -- Prevent clients from being unreachable after screen count changes. 529 | awful.placement.no_offscreen(c) 530 | end 531 | end) 532 | 533 | -- on screen remove: 534 | -- move all clients to next screen 535 | -- use the same tag names 536 | tag.connect_signal("request::screen", function(t) 537 | clients = t:clients() 538 | for s in screen do 539 | if s ~= t.screen then 540 | local new_t = awful.tag.find_by_name(s, t.name) 541 | for foo, c in ipairs(clients) do 542 | c:move_to_tag(new_t) 543 | end 544 | return 545 | end 546 | end 547 | end); 548 | 549 | -- Add a titlebar if titlebars_enabled is set to true in the rules. 550 | client.connect_signal("request::titlebars", function(c) 551 | -- buttons for the titlebar 552 | local buttons = awful.util.table.join( 553 | awful.button({ }, 1, function() 554 | client.focus = c 555 | c:raise() 556 | awful.mouse.client.move(c) 557 | end), 558 | awful.button({ }, 3, function() 559 | client.focus = c 560 | c:raise() 561 | awful.mouse.client.resize(c) 562 | end) 563 | ) 564 | 565 | awful.titlebar(c) : setup { 566 | { -- Left 567 | awful.titlebar.widget.iconwidget(c), 568 | buttons = buttons, 569 | layout = wibox.layout.fixed.horizontal 570 | }, 571 | { -- Middle 572 | { -- Title 573 | align = "center", 574 | widget = awful.titlebar.widget.titlewidget(c) 575 | }, 576 | buttons = buttons, 577 | layout = wibox.layout.flex.horizontal 578 | }, 579 | { -- Right 580 | awful.titlebar.widget.floatingbutton (c), 581 | awful.titlebar.widget.maximizedbutton(c), 582 | awful.titlebar.widget.stickybutton (c), 583 | awful.titlebar.widget.ontopbutton (c), 584 | awful.titlebar.widget.closebutton (c), 585 | layout = wibox.layout.fixed.horizontal() 586 | }, 587 | layout = wibox.layout.align.horizontal 588 | } 589 | end) 590 | 591 | -- Enable sloppy focus, so that focus follows mouse. 592 | client.connect_signal("mouse::enter", function(c) 593 | if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier 594 | and awful.client.focus.filter(c) then 595 | client.focus = c 596 | end 597 | end) 598 | 599 | client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) 600 | client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) 601 | -- }}} 602 | 603 | 604 | do 605 | local cmds = 606 | { 607 | "nm-applet", 608 | "sh -c 'pgrep cbatticon || exec cbatticon -i symbolic'", 609 | "kmix --keepvisibility", 610 | "sh -c 'pgrep gatotray || exec gatotray'", 611 | "blueman-applet", 612 | "sh -c 'while dolphin --daemon; do :; done'", 613 | "dropbox", 614 | "keepassxc" 615 | } 616 | 617 | for _,i in pairs(cmds) do 618 | awful.util.spawn(i) 619 | end 620 | end 621 | --------------------------------------------------------------------------------