├── .chezmoiignore ├── README.md ├── private_dot_config ├── editorconfig │ └── config.ini ├── espanso │ ├── config │ │ └── default.yml │ └── match │ │ └── base.yml ├── fish │ ├── config.fish │ ├── fish_plugins │ └── functions │ │ └── lfcd.fish ├── flashspace │ ├── profiles.json │ └── settings.json ├── foot │ ├── foot.ini │ └── saturn.ini ├── gh │ └── config.yml ├── git │ ├── config │ └── ignore ├── helix │ └── config.toml ├── kak │ ├── commands.kak │ ├── hooks.kak │ ├── kak-lsp.toml │ ├── kakrc │ ├── lsp.kak │ ├── mappings.kak │ ├── misc │ │ ├── kitty-overlay.kak │ │ ├── snippets.kak │ │ └── wezterm.kak │ └── modeline.kak ├── karabiner.edn ├── kmonad │ └── x19.kbd ├── lazygit │ └── config.yml ├── lf │ ├── executable_pv.sh │ └── lfrc ├── pacman │ └── hooks │ │ └── bash-to-dash.hook ├── paru │ └── paru.conf ├── sway │ ├── config │ ├── mappings.conf │ ├── void.conf │ └── x19.conf ├── topgrade │ └── topgrade.toml ├── wezterm │ ├── colors │ │ └── saturn.toml │ └── wezterm.lua ├── yabai │ └── executable_yabairc └── zk │ └── config.toml ├── private_dot_local └── private_share │ ├── 34keys.png │ ├── backgrounds │ └── office-night.png │ └── desktop.png └── private_dot_ssh └── private_config /.chezmoiignore: -------------------------------------------------------------------------------- 1 | README.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Relatively simple macOS/Linux config, managed with 2 | [chezmoi](https://www.chezmoi.io/). 3 | -------------------------------------------------------------------------------- /private_dot_config/editorconfig/config.ini: -------------------------------------------------------------------------------- 1 | # Top-most EditorConfig file. 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | charset = utf-8 10 | indent_style = tab 11 | indent_size = 4 12 | 13 | [*.md] 14 | indent_style = space 15 | indent_size = 2 16 | 17 | [sh] 18 | indent_style = tab 19 | indent_size = 4 20 | 21 | [*.yml] 22 | indent_style = space 23 | indent_size = 2 24 | 25 | [kakrc] 26 | indent_style = space 27 | indent_size = 2 28 | 29 | [*.kak] 30 | indent_style = space 31 | indent_size = 2 32 | 33 | [TODO] 34 | indent_style = space 35 | indent_size = 2 36 | 37 | [*.gd] 38 | indent_style = tab 39 | indent_size = 4 40 | 41 | [*.{js,ts,jsx,tsx,json}] 42 | indent_style = space 43 | indent_size = 2 44 | -------------------------------------------------------------------------------- /private_dot_config/espanso/config/default.yml: -------------------------------------------------------------------------------- 1 | # espanso configuration file 2 | 3 | # For a complete introduction, visit the official docs at: https://espanso.org/docs/ 4 | 5 | # You can use this file to define the global configuration options for espanso. 6 | # These are the parameters that will be used by default on every application, 7 | # but you can also override them on a per-application basis. 8 | 9 | # To make customization easier, this file contains some of the commonly used 10 | # parameters. Feel free to uncomment and tune them to fit your needs! 11 | 12 | # --- Toggle key 13 | 14 | # Customize the key used to disable and enable espanso (when double tapped) 15 | # Available options: CTRL, SHIFT, ALT, CMD, OFF 16 | # You can also specify the key variant, such as LEFT_CTRL, RIGHT_SHIFT, etc... 17 | # toggle_key: ALT 18 | # You can also disable the toggle key completely with 19 | # toggle_key: OFF 20 | 21 | 22 | # --- Injection Backend 23 | 24 | # Espanso supports multiple ways of injecting text into applications. Each of 25 | # them has its quirks, therefore you may want to change it if you are having problems. 26 | # By default, espanso uses the "Auto" backend which should work well in most cases, 27 | # but you may want to try the "Clipboard" or "Inject" backend in case of issues. 28 | # backend: Clipboard 29 | 30 | # --- Auto-restart 31 | 32 | # Enable/disable the config auto-reload after a file change is detected. 33 | # auto_restart: false 34 | 35 | # --- Clipboard threshold 36 | 37 | # Because injecting long texts char-by-char is a slow operation, espanso automatically 38 | # uses the clipboard if the text is longer than 'clipboard_threshold' characters. 39 | # clipboard_threshold: 100 40 | 41 | # For a list of all the available options, visit the official docs at: https://espanso.org/docs/ 42 | 43 | show_icon: false -------------------------------------------------------------------------------- /private_dot_config/espanso/match/base.yml: -------------------------------------------------------------------------------- 1 | matches: 2 | - trigger: "@@" 3 | replace: "me@kkga.me" 4 | 5 | - trigger: "@!" 6 | replace: "gadzhi.kha@gmail.com" 7 | 8 | - trigger: ":date" 9 | replace: "{{mydate}}" 10 | vars: 11 | - name: mydate 12 | type: date 13 | params: 14 | format: "%Y/%m/%d" 15 | 16 | - trigger: ":ddate" 17 | replace: "{{mydate}}" 18 | vars: 19 | - name: mydate 20 | type: date 21 | params: 22 | format: "%YYYY/%mm/%d" 23 | 24 | 25 | - trigger: ":shell" 26 | replace: "{{output}}" 27 | vars: 28 | - name: output 29 | type: shell 30 | params: 31 | cmd: "echo 'Hello from your shell'" 32 | 33 | -------------------------------------------------------------------------------- /private_dot_config/fish/config.fish: -------------------------------------------------------------------------------- 1 | # VARIABLES 2 | 3 | set -gx OS (uname -s) 4 | set -gx DENO_INSTALL $HOME/.deno 5 | set -gx BUN_INSTALL $HOME/.bun 6 | set -gx PNPM_HOME /Users/kkga/Library/pnpm 7 | set -gx FZF_DEFAULT_COMMAND 'fd --type=file' 8 | set -gx FZF_DEFAULT_OPTS '--layout=reverse --height=50% --preview-window=bottom:50%,border-top --inline-info --color=prompt:3,header:7,info:7,pointer:14:bold,marker:4,hl:4,hl+:12:,fg+:15,bg+:235' 9 | set -gx EDITOR hx 10 | set -gx VISUAL code 11 | set -gx ZK_NOTEBOOK_DIR $HOME/notes 12 | set -gx BAT_THEME ansi 13 | set -gx BAT_STYLE plain 14 | if [ $OS = Linux ] 15 | set -gx SSH_AUTH_SOCK "/run/user/$(id -u)/gcr/ssh" 16 | else if [ $OS = Darwin ] 17 | set -gx LDFLAGS -L/opt/homebrew/opt/unixodbc/lib 18 | set -gx CPPFLAGS -I/opt/homebrew/opt/unixodbc/include 19 | # set -gx CPPFLAGS -I/opt/homebrew/opt/openjdk/include 20 | set -gx KAKOUNE_POSIX_SHELL /opt/homebrew/bin/dash 21 | set -gx JAVA_HOME (/usr/libexec/java_home) 22 | # set -gx NODE_GYP_FORCE_PYTHON /opt/homebrew/bin/python3.10 23 | end 24 | 25 | # PATH 26 | 27 | if [ $OS = Darwin ] 28 | fish_add_path /opt/homebrew/bin 29 | fish_add_path /opt/homebrew/sbin 30 | fish_add_path /opt/homebrew/opt/icu4c/bin 31 | fish_add_path /opt/homebrew/opt/icu4c/sbin 32 | fish_add_path /usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home/bin 33 | fish_add_path /usr/local/opt/openssl@1.1/bin 34 | fish_add_path /opt/homebrew/opt/tcl-tk/bin 35 | fish_add_path /opt/homebrew/opt/openjdk/bin 36 | end 37 | fish_add_path \ 38 | "$HOME/.yarn/bin" \ 39 | "$DENO_INSTALL/bin" \ 40 | "$BUN_INSTALL/bin" \ 41 | "$HOME/.cargo/bin" \ 42 | "$PNPM_HOME" 43 | fish_add_path -m "$HOME/.local/bin" 44 | 45 | # ABBREVIATIONS 46 | 47 | abbr g git 48 | abbr pn pnpm 49 | abbr pnx pnpx 50 | abbr cm chezmoi 51 | abbr notes "zk -W ~/notes e" 52 | abbr notes-retool "zk -W ~/retool-notes e" 53 | abbr e hx 54 | alias ls='lsd' 55 | alias l='ls -l' 56 | alias la='ls -a' 57 | alias lla='ls -la' 58 | alias lt='ls --tree' 59 | alias cat="bat" 60 | alias lg="lazygit" 61 | alias cp="cp -iv" 62 | alias mv="mv -iv" 63 | alias rm="rm -i" 64 | # alias npm="pnpm" 65 | # alias npx="pnpx" 66 | 67 | # COLORS 68 | 69 | set fish_color_autosuggestion normal --dim 70 | set fish_color_cancel -r 71 | set fish_color_command --bold 72 | set fish_color_comment brmagenta 73 | set fish_color_cwd green 74 | set fish_color_cwd_root red 75 | set fish_color_end brmagenta 76 | set fish_color_error brred 77 | set fish_color_escape brcyan 78 | set fish_color_history_current --bold 79 | set fish_color_host normal 80 | set fish_color_match --background=brblue 81 | set fish_color_normal normal 82 | set fish_color_operator cyan 83 | set fish_color_param brblue 84 | set fish_color_quote yellow 85 | set fish_color_redirection bryellow 86 | set fish_color_search_match bryellow '--background=brblack' 87 | set fish_color_selection white --bold '--background=brblack' 88 | set fish_color_status red 89 | set fish_color_user brgreen 90 | set fish_color_valid_path --underline 91 | set fish_pager_color_prefix normal 92 | set fish_pager_color_completion normal 93 | set fish_pager_color_description white 94 | set fish_pager_color_selected_background -r 95 | 96 | # INTERACTIVE 97 | 98 | if status --is-interactive 99 | set fish_greeting 100 | set -g hydro_symbol_prompt '>' 101 | bind \co 'set old_tty (stty -g); stty sane; lfcd; stty $old_tty; commandline -f repaint' 102 | bind \ej 'cd $(zoxide query -i); commandline -f repaint' 103 | zoxide init fish --cmd j | source 104 | direnv hook fish | source 105 | fnm env --resolve-engines --corepack-enabled --use-on-cd --version-file-strategy recursive | source 106 | end 107 | -------------------------------------------------------------------------------- /private_dot_config/fish/fish_plugins: -------------------------------------------------------------------------------- 1 | jorgebucaran/fisher 2 | jorgebucaran/hydro 3 | g-plane/pnpm-shell-completion 4 | -------------------------------------------------------------------------------- /private_dot_config/fish/functions/lfcd.fish: -------------------------------------------------------------------------------- 1 | # Change working dir in fish to last dir in lf on exit (adapted from ranger). 2 | # 3 | # You may put this file to a directory in $fish_function_path variable: 4 | # 5 | # mkdir -p ~/.config/fish/functions 6 | # ln -s "/path/to/lfcd.fish" ~/.config/fish/functions 7 | # 8 | # You may also like to assign a key (Ctrl-O) to this command: 9 | # 10 | # bind \co 'set old_tty (stty -g); stty sane; lfcd; stty $old_tty; commandline -f repaint' 11 | # 12 | # You may put this in a function called fish_user_key_bindings. 13 | 14 | function lfcd 15 | set tmp (mktemp) 16 | # `command` is needed in case `lfcd` is aliased to `lf` 17 | command lf -last-dir-path=$tmp $argv 18 | if test -f "$tmp" 19 | set dir (cat $tmp) 20 | rm -f $tmp 21 | if test -d "$dir" 22 | if test "$dir" != (pwd) 23 | cd $dir 24 | end 25 | end 26 | end 27 | end -------------------------------------------------------------------------------- /private_dot_config/flashspace/profiles.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles" : [ 3 | { 4 | "id" : "F9556E21-44DD-4DE0-B04C-4FAB3D8C0DD8", 5 | "name" : "Default", 6 | "workspaces" : [ 7 | { 8 | "apps" : [ 9 | { 10 | "bundleIdentifier" : "com.google.Chrome", 11 | "iconPath" : "/Applications/Google Chrome.app/Contents/Resources/app.icns", 12 | "name" : "Google Chrome" 13 | }, 14 | { 15 | "bundleIdentifier" : "us.zoom.xos", 16 | "iconPath" : "/Applications/zoom.us.app/Contents/Resources/ZPLogo.icns", 17 | "name" : "zoom.us" 18 | } 19 | ], 20 | "assignAppShortcut" : "opt+shift+1", 21 | "display" : "Built-in Retina Display", 22 | "id" : "4C468472-6861-4B43-B2F0-AEFB9DA15F94", 23 | "name" : "Work", 24 | "shortcut" : "opt+1", 25 | "symbolIconName" : "person.3.fill" 26 | }, 27 | { 28 | "apps" : [ 29 | { 30 | "bundleIdentifier" : "com.figma.Desktop", 31 | "iconPath" : "/Applications/Figma.app/Contents/Resources/electron.icns", 32 | "name" : "Figma" 33 | } 34 | ], 35 | "assignAppShortcut" : "opt+shift+2", 36 | "display" : "Built-in Retina Display", 37 | "id" : "C60A2820-B2BC-49BE-9AF0-D3B8211283DD", 38 | "name" : "Design", 39 | "shortcut" : "opt+2", 40 | "symbolIconName" : "pencil.tip.crop.circle.fill" 41 | }, 42 | { 43 | "apps" : [ 44 | { 45 | "bundleIdentifier" : "com.apple.Safari", 46 | "iconPath" : "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/Resources/AppIcon.icns", 47 | "name" : "Safari" 48 | } 49 | ], 50 | "assignAppShortcut" : "opt+shift+3", 51 | "display" : "Built-in Retina Display", 52 | "id" : "D945E931-841A-4857-B865-98B3AC8A57C9", 53 | "name" : "Personal", 54 | "shortcut" : "opt+3", 55 | "symbolIconName" : "person.fill" 56 | }, 57 | { 58 | "apps" : [ 59 | { 60 | "bundleIdentifier" : "com.apple.Notes", 61 | "iconPath" : "/System/Applications/Notes.app/Contents/Resources/AppIcon.icns", 62 | "name" : "Notes" 63 | }, 64 | { 65 | "bundleIdentifier" : "com.mitchellh.ghostty", 66 | "iconPath" : "/Applications/Ghostty.app/Contents/Resources/AppIcon.icns", 67 | "name" : "Ghostty" 68 | }, 69 | { 70 | "bundleIdentifier" : "com.culturedcode.ThingsMac", 71 | "iconPath" : "/Applications/Things3.app/Contents/Resources/App-Release.icns", 72 | "name" : "Things" 73 | }, 74 | { 75 | "bundleIdentifier" : "com.google.Chrome.beta", 76 | "iconPath" : "/Applications/Google Chrome Beta.app/Contents/Resources/app.icns", 77 | "name" : "Google Chrome Beta" 78 | }, 79 | { 80 | "bundleIdentifier" : "com.microsoft.VSCode", 81 | "iconPath" : "/Applications/Visual Studio Code.app/Contents/Resources/Code.icns", 82 | "name" : "Code" 83 | } 84 | ], 85 | "assignAppShortcut" : "opt+shift+4", 86 | "display" : "Built-in Retina Display", 87 | "id" : "8AF2CAE5-F950-4ADD-9072-DDC341A23583", 88 | "name" : "Utils", 89 | "shortcut" : "opt+4", 90 | "symbolIconName" : "apple.terminal.fill" 91 | }, 92 | { 93 | "apps" : [ 94 | { 95 | "bundleIdentifier" : "net.whatsapp.WhatsApp", 96 | "iconPath" : "/Applications/WhatsApp.app/Contents/Resources/AppIconCatalystRelease.icns", 97 | "name" : "‎WhatsApp" 98 | }, 99 | { 100 | "bundleIdentifier" : "ru.keepcoder.Telegram", 101 | "iconPath" : "/Applications/Telegram.app/Contents/Resources/AppIcon.icns", 102 | "name" : "Telegram" 103 | }, 104 | { 105 | "bundleIdentifier" : "com.openai.chat", 106 | "iconPath" : "/Applications/ChatGPT.app/Contents/Resources/AppIcon.icns", 107 | "name" : "ChatGPT" 108 | } 109 | ], 110 | "assignAppShortcut" : "opt+shift+5", 111 | "display" : "Built-in Retina Display", 112 | "id" : "1584CBDD-F4C2-4EC0-8892-F66DF2427B99", 113 | "name" : "Chats", 114 | "shortcut" : "opt+5", 115 | "symbolIconName" : "bubble.left.and.bubble.right.fill" 116 | }, 117 | { 118 | "apps" : [ 119 | { 120 | "bundleIdentifier" : "org.m0k.transmission", 121 | "iconPath" : "/Applications/Transmission.app/Contents/Resources/AppIcon.icns", 122 | "name" : "Transmission" 123 | }, 124 | { 125 | "bundleIdentifier" : "org.mozilla.firefox", 126 | "iconPath" : "/Applications/Firefox.app/Contents/Resources/firefox.icns", 127 | "name" : "Firefox" 128 | }, 129 | { 130 | "bundleIdentifier" : "com.colliderli.iina", 131 | "iconPath" : "/Applications/IINA.app/Contents/Resources/AppIcon.icns", 132 | "name" : "IINA" 133 | }, 134 | { 135 | "bundleIdentifier" : "com.apple.reminders", 136 | "iconPath" : "/System/Applications/Reminders.app/Contents/Resources/AppIcon.icns", 137 | "name" : "Reminders" 138 | } 139 | ], 140 | "assignAppShortcut" : "opt+shift+0", 141 | "display" : "Built-in Retina Display", 142 | "id" : "02EF8117-E9D4-48C8-9EEC-62C7F5264202", 143 | "name" : "Scratch", 144 | "shortcut" : "opt+0", 145 | "symbolIconName" : "square.dashed" 146 | } 147 | ] 148 | } 149 | ] 150 | } -------------------------------------------------------------------------------- /private_dot_config/flashspace/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "alternativeDisplays" : "", 3 | "centerCursorOnFocusChange" : false, 4 | "centerCursorOnWorkspaceChange" : false, 5 | "changeWorkspaceOnAppAssign" : true, 6 | "checkForUpdatesAutomatically" : true, 7 | "enableFocusManagement" : false, 8 | "enableIntegrations" : false, 9 | "enablePictureInPictureSupport" : true, 10 | "enableSpaceControl" : true, 11 | "enableSpaceControlAnimations" : false, 12 | "enableSwipeGestures" : false, 13 | "enableWorkspaceTransitions" : false, 14 | "floatingApps" : [ 15 | { 16 | "bundleIdentifier" : "com.apple.systempreferences", 17 | "iconPath" : "/System/Applications/System Settings.app/Contents/Resources/PrefApp.icns", 18 | "name" : "System Settings" 19 | }, 20 | { 21 | "bundleIdentifier" : "com.algoritmico.ios.Passepartout", 22 | "iconPath" : "/Applications/Passepartout.app/Contents/Resources/AppIcon.icns", 23 | "name" : "Passepartout" 24 | } 25 | ], 26 | "focusFrontmostWindow" : false, 27 | "focusNextWorkspaceApp" : "ctrl+opt+n", 28 | "focusPreviousWorkspaceApp" : "ctrl+opt+p", 29 | "keepUnassignedAppsOnSwitch" : false, 30 | "menuBarDisplayAliases" : "", 31 | "menuBarTitleTemplate" : "$WORKSPACE", 32 | "pipApps" : [ 33 | 34 | ], 35 | "pipScreenCornerOffset" : 15, 36 | "restoreHiddenAppsOnSwitch" : true, 37 | "runScriptOnLaunch" : "", 38 | "runScriptOnProfileChange" : "sketchybar --reload", 39 | "runScriptOnWorkspaceChange" : "sketchybar --trigger flashspace_workspace_change WORKSPACE=\"$WORKSPACE\" DISPLAY=\"$DISPLAY\"", 40 | "showFlashSpace" : "ctrl+opt+shift+delete", 41 | "showFloatingNotifications" : true, 42 | "showMenuBarIcon" : true, 43 | "showMenuBarTitle" : false, 44 | "showSpaceControl" : "cmd+`", 45 | "skipEmptyWorkspacesOnSwitch" : false, 46 | "spaceControlCurrentDisplayWorkspaces" : true, 47 | "spaceControlMaxColumns" : 3, 48 | "swipeDown3FingerAction" : "none", 49 | "swipeDown4FingerAction" : "none", 50 | "swipeLeft3FingerAction" : "none", 51 | "swipeLeft4FingerAction" : "none", 52 | "swipeRight3FingerAction" : "none", 53 | "swipeRight4FingerAction" : "none", 54 | "swipeThreshold" : 0.2, 55 | "swipeUp3FingerAction" : "none", 56 | "swipeUp4FingerAction" : "none", 57 | "switchToRecentWorkspace" : "opt+tab", 58 | "toggleFocusedAppAssignment" : "opt+shift+enter", 59 | "toggleTheFocusedAppFloating" : "opt+shift+space", 60 | "workspaceTransitionDimming" : 0.15000000000000002, 61 | "workspaceTransitionDuration" : 0.1 62 | } -------------------------------------------------------------------------------- /private_dot_config/foot/foot.ini: -------------------------------------------------------------------------------- 1 | include = /home/kkga/.config/foot/saturn.ini 2 | 3 | # shell=/bin/fish # (if set, otherwise user's default shell from /etc/passwd) 4 | # term=foot (or xterm-256color if built with -Dterminfo=disabled) 5 | # login-shell=no 6 | 7 | # font=monospace:size=9 8 | # font-bold=monospace:size=9 9 | # font-italic= 10 | # font-bold-italic= 11 | # line-height=10 12 | # vertical-letter-offset=-1 13 | # letter-spacing=0 14 | # horizontal-letter-offset=0 15 | # box-drawings-uses-font-glyphs=yes 16 | # underline-offset=2 17 | # dpi-aware=yes 18 | 19 | # initial-window-size-pixels=700x500 # Or, 20 | initial-window-size-chars=100x32 21 | # initial-window-mode=windowed 22 | pad=0x0 # optionally append 'center' 23 | # resize-delay-ms=100 24 | 25 | # notify=notify-send -a foot -i foot ${title} ${body} 26 | 27 | # bold-text-in-bright=no 28 | # bell=none 29 | # word-delimiters=,│`|:"'()[]{}<> 30 | # selection-target=primary 31 | # workers= 32 | 33 | #[tweak] 34 | #grapheme-shaping=yes 35 | # box-drawing-base-thickness=0.04 36 | 37 | # [bell] 38 | # urgent=no 39 | # notify=no 40 | # command= 41 | # command_focused=no 42 | 43 | [scrollback] 44 | # lines=1000 45 | # multiplier=3.0 46 | # indicator-position=relative 47 | # indicator-format= 48 | 49 | [url] 50 | # launch=xdg-open ${url} 51 | # label-letters=sadfjklewcmpgh 52 | # osc8-underline=url-mode 53 | # protocols = http, https, ftp, ftps, file, gemini, gopher 54 | 55 | [cursor] 56 | # style=block 57 | # color=111111 dcdccc 58 | blink=yes 59 | # beam-thickness=1.5 60 | # underline-thickness= 61 | 62 | [mouse] 63 | hide-when-typing=yes 64 | #alternate-scroll-mode=yes 65 | 66 | [csd] 67 | # preferred=server 68 | # size=26 69 | # color= 70 | # button-width=26 71 | # button-minimize-color=ff0000ff 72 | # button-maximize-color=ff00ff00 73 | # button-close-color=ffff0000 74 | 75 | [key-bindings] 76 | scrollback-up-half-page=Control+Shift+k 77 | scrollback-down-half-page=Control+Shift+j 78 | pipe-visible=[sh -c "xurls -r | $DMENU_PROGRAM | xargs -r firefox"] Control+Shift+p 79 | show-urls-launch=Control+Shift+u 80 | # scrollback-up-page=Shift+Page_Up 81 | # scrollback-up-line=none 82 | # scrollback-down-page=Shift+Page_Down 83 | # scrollback-down-line=none 84 | # clipboard-copy=Control+Shift+C 85 | # clipboard-paste=Control+Shift+V 86 | # primary-paste=Shift+Insert 87 | # search-start=Control+Shift+R 88 | # font-increase=Control+plus Control+equal Control+KP_Add 89 | # font-decrease=Control+minus Control+KP_Subtract 90 | # font-reset=Control+0 Control+KP_0 91 | # spawn-terminal=Control+Shift+N 92 | # minimize=none 93 | # maximize=none 94 | # fullscreen=none 95 | # pipe-scrollback=[sh -c "xurls | bemenu | xargs -r firefox"] none 96 | # pipe-selected=[xargs -r firefox] none 97 | 98 | [search-bindings] 99 | # cancel=Control+g Escape 100 | # commit=Return 101 | # find-prev=Control+r 102 | # find-next=Control+s 103 | # cursor-left=Left Control+b 104 | # cursor-left-word=Control+Left Mod1+b 105 | # cursor-right=Right Control+f 106 | # cursor-right-word=Control+Right Mod1+f 107 | # cursor-home=Home Control+a 108 | # cursor-end=End Control+e 109 | # delete-prev=BackSpace 110 | # delete-prev-word=Mod1+BackSpace Control+BackSpace 111 | # delete-next=Delete 112 | # delete-next-word=Mod1+d Control+Delete 113 | # extend-to-word-boundary=Control+w 114 | # extend-to-next-whitespace=Control+Shift+W 115 | # clipboard-paste=Control+v Control+y 116 | # primary-paste=Shift+Insert 117 | 118 | [url-bindings] 119 | # cancel=Control+g Control+d Escape 120 | # toggle-url-visible=t 121 | 122 | [mouse-bindings] 123 | # primary-paste=BTN_MIDDLE 124 | # select-begin=BTN_LEFT 125 | # select-begin-block=Control+BTN_LEFT 126 | # select-extend=BTN_RIGHT 127 | # select-word=BTN_LEFT-2 128 | # select-word-whitespace=Control+BTN_LEFT-2 129 | # select-row=BTN_LEFT-3 130 | -------------------------------------------------------------------------------- /private_dot_config/foot/saturn.ini: -------------------------------------------------------------------------------- 1 | [cursor] 2 | color = 121212 5FAFAF 3 | 4 | [colors] 5 | foreground = bcbcbc 6 | background = 121212 7 | regular0 = 121212 8 | regular1 = AF5F5F 9 | regular2 = 5F875F 10 | regular3 = AF875F 11 | regular4 = 5f87af 12 | regular5 = 875F87 13 | regular6 = 5f8787 14 | regular7 = 8a8a8a 15 | bright0 = 6c6c6c 16 | bright1 = d7875f 17 | bright2 = 87af87 18 | bright3 = d7af5f 19 | bright4 = 87afd7 20 | bright5 = 8787af 21 | bright6 = 5fafaf 22 | bright7 = ffffff 23 | selection-foreground = 1c1c1c 24 | selection-background = 87afd7 25 | -------------------------------------------------------------------------------- /private_dot_config/gh/config.yml: -------------------------------------------------------------------------------- 1 | # What protocol to use when performing git operations. Supported values: ssh, https 2 | git_protocol: ssh 3 | # What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment. 4 | editor: 5 | # When to interactively prompt. This is a global config that cannot be overriden by hostname. Supported values: enabled, disabled 6 | prompt: enabled 7 | # A pager program to send command output to. Example value: less 8 | pager: 9 | # Aliases allow you to create nicknames for gh commands 10 | aliases: 11 | co: pr checkout 12 | version: "1" 13 | -------------------------------------------------------------------------------- /private_dot_config/git/config: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Gadzhi Kharkharov 3 | email = me@kkga.me 4 | [core] 5 | editor = hx 6 | pager = diff-so-fancy | less --tabs=4 -RFX 7 | [alias] 8 | a = add 9 | c = commit 10 | co = checkout 11 | cl = clone 12 | b = branch 13 | s = status 14 | sl = status --long 15 | l = log --oneline 16 | d = diff 17 | p = push 18 | pl = pull 19 | amend = commit --amend 20 | [merge] 21 | conflictstyle = diff3 22 | tool = vscode 23 | [diff] 24 | colorMoved = default 25 | external = difft --tab-width 4 26 | [status] 27 | short = true 28 | [push] 29 | default = current 30 | [pull] 31 | rebase = false 32 | [log] 33 | date = short 34 | [init] 35 | defaultBranch = master 36 | [format] 37 | pretty = '%C(yellow)%h%Creset %C(magenta)%cd%Creset %d %s' 38 | # [credential] 39 | # helper = /usr/libexec/git-core/git-credential-libsecret 40 | [fetch] 41 | prune = true 42 | [filter "lfs"] 43 | required = true 44 | clean = git-lfs clean -- %f 45 | smudge = git-lfs smudge -- %f 46 | process = git-lfs filter-process 47 | [bulkworkspaces] 48 | autopull = "$HOME/repos/" 49 | kakplugins = "$HOME/.config/kak/plugins" 50 | [color] 51 | ui = true 52 | [color "diff-highlight"] 53 | oldNormal = red bold 54 | oldHighlight = red bold 52 55 | newNormal = green bold 56 | newHighlight = green bold 22 57 | [color "diff"] 58 | meta = yellow 59 | frag = magenta bold 60 | commit = yellow bold 61 | old = red bold 62 | new = green bold 63 | whitespace = red reverse 64 | [mergetool "vscode"] 65 | cmd = code --wait $MERGED 66 | -------------------------------------------------------------------------------- /private_dot_config/git/ignore: -------------------------------------------------------------------------------- 1 | # Folder view configuration files 2 | .DS_Store 3 | Desktop.ini 4 | 5 | # Thumbnail cache files 6 | ._* 7 | Thumbs.db 8 | 9 | # Files that might appear on external disks 10 | .Spotlight-V100 11 | .Trashes 12 | 13 | # Compiled Python files 14 | *.pyc 15 | 16 | # Compiled C++ files 17 | *.out 18 | 19 | venv 20 | node_modules 21 | .sass-cache 22 | elm-stuff 23 | .npm 24 | -------------------------------------------------------------------------------- /private_dot_config/helix/config.toml: -------------------------------------------------------------------------------- 1 | theme = "dark_plus" 2 | 3 | [editor] 4 | cursorline = true 5 | gutters = ["diff", "diagnostics", "spacer"] 6 | bufferline = "always" 7 | auto-format = true 8 | completion-trigger-len = 0 9 | idle-timeout = 0 10 | # completion-replace = true 11 | # color-modes = true 12 | 13 | # [editor.file-picker] 14 | # hidden = false 15 | # parents = true 16 | # git-ignore = true 17 | # git-global = true 18 | 19 | [editor.soft-wrap] 20 | enable = true 21 | 22 | [editor.indent-guides] 23 | render = true 24 | character = "╎" # Some characters that work well: "▏", "┆", "┊", "⸽" 25 | skip-levels = 1 26 | 27 | [editor.statusline] 28 | left = ["mode", "separator", "file-name", "spinner"] 29 | center = ["version-control"] 30 | right = [ 31 | "diagnostics", 32 | "separator", 33 | "selections", 34 | "separator", 35 | "file-type", 36 | "separator", 37 | "position", 38 | "position-percentage", 39 | ] 40 | separator = "│" 41 | mode.normal = "N" 42 | mode.insert = "I" 43 | mode.select = "S" 44 | 45 | [editor.lsp] 46 | display-messages = true 47 | 48 | [editor.cursor-shape] 49 | insert = "bar" 50 | normal = "block" 51 | select = "underline" 52 | 53 | [editor.auto-pairs] 54 | '<' = '>' 55 | 56 | [keys.normal] 57 | ret = 'command_mode' 58 | q = 'move_prev_word_start' 59 | "#" = "toggle_comments" 60 | "*" = ["move_prev_word_start", "move_next_word_end", "search_selection"] 61 | 62 | a = ['move_char_right', 'insert_mode'] 63 | C-r = ":reload" 64 | 65 | # Paragraph motions 66 | C-k = ["goto_prev_paragraph", "collapse_selection"] 67 | C-j = ["goto_next_paragraph", "collapse_selection", "move_line_down"] 68 | 69 | # Kakoune-like selections/motions 70 | H = 'extend_char_left' 71 | J = 'extend_line_down' 72 | K = 'extend_line_up' 73 | L = 'extend_char_right' 74 | W = 'extend_next_word_start' 75 | E = 'extend_next_word_end' 76 | Q = 'extend_prev_word_start' 77 | A-W = 'extend_next_long_word_start' 78 | A-E = 'extend_next_long_word_end' 79 | A-Q = 'extend_prev_long_word_start' 80 | X = 'extend_line_below' 81 | x = ['extend_to_line_bounds', 'ensure_selections_forward'] 82 | A-w = 'move_next_long_word_start' 83 | A-e = 'move_next_long_word_end' 84 | A-b = 'move_prev_long_word_start' 85 | A-h = ['ensure_selections_forward', 'flip_selections', 'extend_to_line_start'] 86 | A-l = ['ensure_selections_forward', 'extend_to_line_end'] 87 | '{' = [ 88 | 'ensure_selections_forward', 89 | 'flip_selections', 90 | 'select_mode', 91 | 'goto_prev_paragraph', 92 | 'exit_select_mode', 93 | ] 94 | '}' = [ 95 | 'ensure_selections_forward', 96 | 'select_mode', 97 | 'goto_next_paragraph', 98 | 'exit_select_mode', 99 | ] 100 | G.e = [ 101 | 'select_mode', 102 | 'ensure_selections_forward', 103 | 'goto_file_end', 104 | 'exit_select_mode', 105 | ] 106 | G.g = [ 107 | 'select_mode', 108 | 'ensure_selections_forward', 109 | 'goto_file_start', 110 | 'exit_select_mode', 111 | ] 112 | 113 | A-j = 'join_selections' 114 | A-k = 'keep_selections' 115 | 116 | # Left-right motions 117 | # f = ['ensure_selections_forward', 'extend_next_char'] 118 | # t = ['ensure_selections_forward', 'extend_till_char'] 119 | # F = ['ensure_selections_forward', 'flip_selections', 'extend_prev_char'] 120 | # T = ['ensure_selections_forward', 'flip_selections', 'extend_till_prev_char'] 121 | 122 | # Various motions 123 | # m.x = ['extend_to_line_bounds', 'trim_selections'] 124 | # M = ['select_mode', 'match_brackets', 'exit_select_mode'] 125 | 126 | # unimpaired option toggle off 127 | [keys.normal.'['.o] 128 | space = ':set whitespace.render none' 129 | tab = ':set indent-guides.render false' 130 | w = ':set soft-wrap.enable false' 131 | c = ':set cursorline false' 132 | h = ':set lsp.display-inlay-hints false' 133 | b = ':theme dark_plus' 134 | 135 | # unimpaired option toggle on 136 | [keys.normal.']'.o] 137 | space = ':set whitespace.render all' 138 | tab = ':set indent-guides.render true' 139 | w = ':set soft-wrap.enable true' 140 | c = ':set cursorline true' 141 | h = ':set lsp.display-inlay-hints true' 142 | b = ':theme emacs' 143 | 144 | 145 | [keys.normal.space] 146 | "x" = ":buffer-close" 147 | "w" = ":write" 148 | 149 | 150 | [keys.select] 151 | ret = 'command_mode' 152 | q = 'extend_prev_word_start' 153 | Q = 'extend_prev_long_word_start' 154 | -------------------------------------------------------------------------------- /private_dot_config/kak/commands.kak: -------------------------------------------------------------------------------- 1 | # selections ------------------------------------------------------------------- 2 | 3 | define-command -override -hidden search-next-word -docstring 'search next word' %{ 4 | execute-keys 'h/\W\ww' 5 | } 6 | 7 | define-command -override select-next-word -docstring 'select next word' %{ 8 | evaluate-commands -itersel %{ 9 | hook -group select-next-word -always -once window User "%val{selection_desc}" %{ 10 | search-next-word 11 | } 12 | try %{ 13 | execute-keys 'w' 14 | trigger-user-hook "%val{selection_desc}" 15 | } catch %{ 16 | search-next-word 17 | } 18 | remove-hooks window select-next-word 19 | } 20 | } 21 | 22 | define-command select-highlights -docstring 'select all occurrences of current selection' %{ 23 | execute-keys '"aZ*%s"bZ"az"ba' 24 | } 25 | 26 | # select word under cursor and put it to / register 27 | define-command word-auto-select -hidden -params 1 -docstring 'auto-select a word under cursor' %{ 28 | try %{ evaluate-commands %sh{ 29 | if echo "$kak_selections_desc" | grep -Eq '^(([0-9]+)\.([0-9]+),\2\.\3:?)+$'; then 30 | echo execute-keys 'w' 31 | fi 32 | } } 33 | execute-keys -save-regs '' -with-hooks %arg{1} 34 | } 35 | 36 | # single command for grep-next/prev matches ------------------------------------ 37 | # https://discuss.kakoune.com/t/single-command-for-grep-next-match-in-similar-buffers-lsp-make-find/1215 38 | 39 | declare-option -hidden str my_grep_buffer 40 | 41 | hook -group my global WinDisplay \ 42 | \*(?:grep|find|make|references|diagnostics|implementations|symbols|cargo)\* %{ 43 | set-option global my_grep_buffer %val{bufname} 44 | } 45 | 46 | define-command -override my-grep-next-match \ 47 | -docstring 'Jump to the next match in a grep-like buffer' %{ 48 | evaluate-commands -try-client %opt{jumpclient} %{ 49 | buffer %opt{my_grep_buffer} 50 | execute-keys " /^[^:\n]+:\d+:" 51 | grep-jump 52 | } 53 | try %{ evaluate-commands -client %opt{toolsclient} %{ 54 | buffer %opt{my_grep_buffer} 55 | execute-keys gg %opt{grep_current_line}g 56 | }} 57 | } 58 | 59 | define-command -override my-grep-prev-match \ 60 | -docstring 'Jump to the previous match in a grep-like buffer' %{ 61 | evaluate-commands -try-client %opt{jumpclient} %{ 62 | buffer %opt{my_grep_buffer} 63 | execute-keys "g ^[^:\n]+:\d+:" 64 | grep-jump 65 | } 66 | try %{ evaluate-commands -client %opt{toolsclient} %{ 67 | buffer %opt{my_grep_buffer} 68 | execute-keys gg %opt{grep_current_line}g 69 | }} 70 | } 71 | 72 | # lsp snippets ---------------------------------------------------------------- 73 | 74 | define-command -hidden insert-c-j %{ 75 | try %{ 76 | lsp-snippets-select-next-placeholders 77 | exec 'd' 78 | } catch %{ 79 | exec -with-hooks '' 80 | } 81 | } 82 | 83 | # misc ---------------------------------------------------------------- 84 | 85 | # define-command edit-kakrc %{ e ~/.config/kak/kakrc } 86 | 87 | define-command comment-line-or-block %{ 88 | try %{ 89 | comment-line 90 | } catch %{ 91 | comment-block 92 | } 93 | } 94 | 95 | define-command insert-date -override %{ 96 | execute-keys -draft "|date +'%%a, %%d %%b %%Y'" 97 | } -docstring 'insert current date' 98 | 99 | # folding ------------------------------------------------------------- 100 | 101 | declare-option range-specs folded_ranges 102 | addhl global/folded_ranges replace-ranges folded_ranges 103 | 104 | define-command fold-selections -override %{ 105 | eval -itersel %{ 106 | set -add window folded_ranges "%val[selection_desc]|{Whitespace}────────────────────────────────────────────────────────────────────────────────" 107 | } 108 | } 109 | 110 | define-command fold-clear -override %{ 111 | set window folded_ranges %val[timestamp] 112 | } 113 | 114 | alias global fold fold-selections 115 | 116 | # file picker ----------------------------------------------------------------- 117 | 118 | define-command find-files -docstring 'find in git files or all files' %{ 119 | evaluate-commands %sh{ 120 | if git rev-parse 2>/dev/null; then 121 | printf "kks-connect terminal-popup kks-git-files" 122 | else 123 | printf "kks-connect terminal-popup kks-files %val{client_end_PWD}" 124 | fi 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /private_dot_config/kak/hooks.kak: -------------------------------------------------------------------------------- 1 | # generic hooks --------------------------------------------------------------- 2 | 3 | hook global WinCreate ^[^*]+$ %{editorconfig-load} 4 | 5 | hook global BufOpenFile .* %{ modeline-parse } 6 | hook global BufWritePre .* %{ try %{ format-buffer } } 7 | hook global BufWritePre .* %{ try %{ lsp-formatting-sync } } 8 | hook global BufWritePre .* %{ try %{ execute-keys -draft \%s\h+$d } } 9 | hook global BufWritePost .* %{ try %{ lint } } 10 | 11 | # cd into current-buffer dir or git dir on file open 12 | hook global WinDisplay .* %{ 13 | evaluate-commands %sh{ 14 | cd "$(dirname "$kak_buffile")" || return 15 | project_dir="$(git rev-parse --show-toplevel 2>/dev/null)" 16 | [ -n "$project_dir" ] && dir="$project_dir" || dir="${PWD%/.git}" 17 | printf "cd %%{%s}\n" "$dir" 18 | } 19 | } 20 | 21 | hook global KakEnd .* lsp-exit 22 | 23 | # recent files ------------------------------------------------------------- 24 | 25 | hook global BufCreate [^*].* %{ 26 | nop %sh{ 27 | mru=~/.cache/kak-mru 28 | echo "$kak_buffile" | awk '!seen[$0]++' - "$mru" | sponge "$mru" 29 | } 30 | } 31 | 32 | # filetype hooks --------------------------------------------------------------- 33 | 34 | hook global WinSetOption filetype=go %{ 35 | lsp-init 36 | set-option buffer formatcmd 'gofumpt -extra' 37 | set-option buffer lintcmd 'revive' 38 | } 39 | 40 | hook global WinSetOption filetype=zig %{ 41 | lsp-init 42 | set-option buffer formatcmd 'zig fmt --stdin' 43 | set-option global lsp_server_configuration zls.zig_lib_path="/usr/lib/zig" 44 | set-option -add global lsp_server_configuration zls.warn_style=true 45 | set-option -add global lsp_server_configuration zls.enable_semantic_tokens=true 46 | } 47 | 48 | hook global WinSetOption filetype=(svelte|html|css|yaml|toml) %{ 49 | # lsp-init 50 | set-option buffer formatcmd "prettier --plugin-search-dir=. --stdin-filepath=%val{buffile}" 51 | } 52 | 53 | hook global WinSetOption filetype=css %{ 54 | set-option buffer lintcmd "stylelint -f unix" 55 | } 56 | 57 | hook global WinSetOption filetype=(c|cpp) %{ 58 | set-option buffer lintcmd "clang-tidy %val{buffile}" 59 | } 60 | 61 | hook global WinSetOption filetype=(javascript|typescript) %{ 62 | lsp-init 63 | set-option buffer formatcmd "deno fmt -" 64 | } 65 | 66 | hook global WinSetOption filetype=json %{ 67 | lsp-init 68 | set-option buffer formatcmd "deno fmt --ext json -" 69 | } 70 | 71 | hook global WinCreate (.*/)?TODO %{ set buffer filetype todo } 72 | hook global WinSetOption filetype=todo %{ 73 | add-highlighter buffer/ regex '^[A-Z0-9 ]+:$' 0:yellow+b 74 | } 75 | hook global WinSetOption filetype=(markdown|todo) %{ 76 | require-module todo 77 | set-option buffer lintcmd "vale --ext .md --no-wrap --output line --config ~/.config/vale/vale.ini" 78 | set-option buffer formatcmd "deno fmt --ext md -" 79 | map buffer normal ': todo-toggle' -docstring "toggle checkbox" 80 | add-highlighter buffer/ regex '\[ \]' 0:blue+b 81 | add-highlighter buffer/ regex '\[x\]' 0:comment 82 | } 83 | 84 | hook global WinSetOption filetype=lua %{ 85 | set-option buffer formatcmd "stylua -" 86 | } 87 | 88 | hook global WinSetOption filetype=sh %{ 89 | set-option buffer formatcmd 'shfmt -ci -sr' 90 | } 91 | 92 | hook global WinSetOption filetype=fish %{ 93 | set-option buffer formatcmd 'fish_indent' 94 | } 95 | 96 | hook global WinSetOption filetype=gdscript %{ 97 | lsp-init 98 | set-option buffer formatcmd "gdformat -" 99 | } 100 | 101 | # hook global WinSetOption filetype=clojure %{ 102 | # set-option buffer formatcmd "joker --format -" 103 | # set-option buffer lintcmd "clj-kondo --lint -" 104 | # } 105 | 106 | hook global WinCreate .*\.astro %{ 107 | set buffer filetype html 108 | } 109 | -------------------------------------------------------------------------------- /private_dot_config/kak/kak-lsp.toml: -------------------------------------------------------------------------------- 1 | snippet_support = true 2 | # verbosity = 2 3 | 4 | [server] 5 | timeout = 1800 # seconds = 30 minutes 6 | 7 | [language.clojure] 8 | filetypes = ["clojure"] 9 | roots = ["project.clj", "deps.edn", ".lsp/config.edn", ".git/"] 10 | command = "clojure-lsp" 11 | 12 | [language.go] 13 | filetypes = ["go"] 14 | roots = ["go.mod", ".git"] 15 | command = "gopls" 16 | offset_encoding = "utf-8" 17 | settings_section = "gopls" 18 | [language.go.settings.gopls] 19 | # See https://github.com/golang/tools/blob/master/gopls/doc/settings.md 20 | semanticTokens = true 21 | codelenses = { tidy = true } 22 | 23 | [language.deno] 24 | filetypes = ["typescript", "javascript"] 25 | roots = ["deno.json"] 26 | command = "deno" 27 | args = ["lsp"] 28 | settings_section = "deno" 29 | [language.deno.settings.deno] 30 | enable = true 31 | lint = true 32 | unstable = true 33 | importMap = "import_map.json" 34 | suggest.autoImports = true 35 | suggest.completeFunctionCalls = true 36 | suggest.imports.autoDiscover = true 37 | inlayHints.functionLikeReturnTypes.enabled = true 38 | 39 | [language.theia] 40 | filetypes = ["typescript", "javascript"] 41 | roots = ["package.json"] 42 | command = "typescript-language-server" 43 | args = ["--stdio"] 44 | 45 | [language.svelte] 46 | filetypes = ["svelte"] 47 | roots = ["package.json"] 48 | command = "svelteserver" 49 | args = ["--stdio"] 50 | 51 | [language.css] 52 | filetypes = ["css"] 53 | roots = ["package.json", ".git", ".hg"] 54 | command = "css-languageserver" 55 | args = ["--stdio"] 56 | 57 | [language.html] 58 | filetypes = ["html"] 59 | roots = ["package.json", ".git", ".hg"] 60 | command = "html-languageserver" 61 | args = ["--stdio"] 62 | 63 | [language.gdscript] 64 | filetypes = ["gd", "gdscript"] 65 | roots = [".import"] 66 | command = "nc" 67 | args = ["localhost", "6008"] 68 | 69 | [language.yaml] 70 | filetypes = ["yaml"] 71 | roots = [".git"] 72 | command = "yaml-language-server" 73 | args = ["--stdio"] 74 | 75 | # [semantic_tokens] 76 | # faces = [ 77 | # {face="documentation", token="comment", modifiers=["documentation"]}, 78 | # {face="comment", token="comment"}, 79 | # {face="function", token="function"}, 80 | # {face="keyword", token="keyword"}, 81 | # {face="module", token="namespace"}, 82 | # {face="operator", token="operator"}, 83 | # {face="string", token="string"}, 84 | # {face="type", token="type"}, 85 | # {face="default", token="variable", modifiers=["readonly"]}, 86 | # {face="default", token="variable", modifiers=["constant"]}, 87 | # {face="variable", token="variable"}, 88 | # ] 89 | -------------------------------------------------------------------------------- /private_dot_config/kak/kakrc: -------------------------------------------------------------------------------- 1 | eval %sh{ 2 | kks init 3 | kak-lsp --kakoune -s "$kak_session" -c "$HOME/.config/kak/kak-lsp.toml" 4 | } 5 | 6 | source "%val{config}/bundle/plugins/kak-bundle/rc/kak-bundle.kak" 7 | 8 | bundle-register-and-load \ 9 | https://codeberg.org/jdugan6240/kak-bundle %{} \ 10 | https://github.com/Delapouite/kakoune-buffers %{ 11 | map global buffers L ':buffer *lint-output*' -docstring "lint output" 12 | map global buffers D ':buffer *diagnostics*' -docstring "diagnostics" 13 | map global normal ':enter-buffers-mode' -docstring "enter buffers mode" 14 | map global normal ':enter-user-mode -lock buffers' -docstring "enter buffers mode (lock)" 15 | } \ 16 | https://github.com/alexherbo2/auto-pairs.kak %{ 17 | enable-auto-pairs 18 | } \ 19 | https://github.com/Delapouite/kakoune-cd %{} \ 20 | https://gitlab.com/Screwtapello/kakoune-shellcheck %{} \ 21 | https://gitlab.com/Screwtapello/kakoune-state-save %{} \ 22 | https://github.com/listentolist/kakoune-fandt %{ 23 | require-module fandt 24 | set-option global fandt_jump ";" 25 | } \ 26 | https://github.com/listentolist/kakoune-table %{ 27 | map global user T ": enter-user-mode -lock table" -docstring "table (lock)" 28 | } \ 29 | https://github.com/occivink/kakoune-sudo-write %{} \ 30 | https://github.com/occivink/kakoune-vertical-selection %{ 31 | map global object v ': vertical-selection-up-and-down' -docstring 'vertical-selection' 32 | } \ 33 | https://github.com/caksoylar/kakoune-focus %{ 34 | map global user ': focus-toggle' -docstring 'focus selections' 35 | } \ 36 | https://git.sr.ht/~raiguard/kak-live-grep %{} \ 37 | https://git.sr.ht/~raiguard/kak-mirror %{} \ 38 | https://git.sr.ht/~raiguard/kak-move-lines %{ 39 | map global normal ': move-lines-up %val{count}' 40 | map global normal ': move-lines-down %val{count}' 41 | } \ 42 | https://github.com/kkga/foot.kak %{} \ 43 | https://github.com/JacobTravers/kakoune-grep-write %{} \ 44 | https://github.com/kkga/todo.kak %{} \ 45 | https://github.com/kkga/ui.kak %{ 46 | map global user u ': enter-user-mode -lock ui' -docstring 'UI..' 47 | set-option global ui_whitespaces_flags -spc '·' -lf ' ' -tab '┊' -tabpad ' ' 48 | set-option global ui_line_numbers_flags -hlcursor -separator '│' 49 | set-option global ui_wrap_flags -word -width 100 50 | hook global WinCreate .* %{ 51 | ui-search-enable 52 | ui-matching-enable 53 | ui-todos-enable 54 | ui-lint-enable 55 | ui-git-diff-enable 56 | } 57 | } 58 | 59 | # bundle https://github.com/eraserhd/parinfer-rust %{ 60 | # cd ${kak_opt_bundle_path}/parinfer-rust 61 | # cargo install --locked --force --path . 62 | # } 63 | # bundle-config parinfer-rust %{ 64 | # hook global WinSetOption filetype=(clojure|lisp|scheme|racket) %{ 65 | # parinfer-enable-window -smart 66 | # } 67 | # } 68 | # bundle-load parinfer-rust 69 | 70 | set-option global startup_info_version 20200901 71 | set-option global autoreload yes 72 | set-option global grepcmd 'rg -Hn --no-heading --sort path --vimgrep' 73 | set-option -add global ui_options terminal_status_on_top=true 74 | set-option -add global ui_options terminal_set_title=off 75 | set-option -add global ui_options terminal_padding_char=, 76 | set-option -add global ui_options terminal_padding_fill=yes 77 | 78 | colorscheme saturn 79 | 80 | source "%val{config}/commands.kak" 81 | source "%val{config}/hooks.kak" 82 | source "%val{config}/lsp.kak" 83 | source "%val{config}/mappings.kak" 84 | source "%val{config}/modeline.kak" 85 | source "%val{config}/misc/wezterm.kak" 86 | -------------------------------------------------------------------------------- /private_dot_config/kak/lsp.kak: -------------------------------------------------------------------------------- 1 | set-option global lsp_diagnostic_line_error_sign '▎' 2 | set-option global lsp_diagnostic_line_warning_sign '▎' 3 | set-option global lsp_diagnostic_line_hint_sign "A" 4 | set-option global lsp_diagnostic_line_info_sign "i" 5 | set-option global lsp_hover_anchor true 6 | set-option global lsp_auto_highlight_references true 7 | set-option global lsp_hover_max_lines 50 8 | 9 | set-face global LineFlagHint yellow 10 | 11 | define-command lsp-restart -docstring "Restart kak-lsp session" %{ lsp-stop; lsp-start } 12 | 13 | define-command lsp-init -docstring "Enable LSP with default setting" %{ 14 | echo -debug "Enabling LSP for filetype %opt{filetype}" 15 | lsp-enable-window 16 | lsp-inlay-hints-enable global 17 | # lsp-inlay-diagnostics-enable global 18 | lsp-auto-signature-help-enable 19 | 20 | hook window -group semantic-tokens BufReload .* lsp-semantic-tokens 21 | hook window -group semantic-tokens NormalIdle .* lsp-semantic-tokens 22 | hook window -group semantic-tokens InsertIdle .* lsp-semantic-tokens 23 | hook -once -always window WinSetOption filetype=.* %{ 24 | rmhooks window semantic-tokens 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /private_dot_config/kak/mappings.kak: -------------------------------------------------------------------------------- 1 | # normal ------------------------------------------------------------- 2 | 3 | # i don't have ; on the base keyboard layer 4 | map global normal "'" ';' 5 | 6 | # work around some weird defaults 7 | map global normal a 'li' 8 | 9 | # repurpose visual mode keys for object selection 10 | map global normal 'v' 11 | map global normal 'V' 12 | map global normal v '' 13 | map global normal V '' 14 | 15 | # search case-insensitive 16 | map global normal / '/(?i)' 17 | map global normal ? '?(?i)' 18 | map global normal '(?i)' 19 | map global normal '(?i)' 20 | 21 | # navigate by paragraphs 22 | map global normal ']pj;x' 23 | map global normal '[p;x' 24 | map global normal ']pj;x' 25 | map global normal '[p;x' 26 | 27 | # navigate errors 28 | map global normal ': lsp-find-error --previous --include-warnings: lsp-hover' 29 | map global normal ': lsp-find-error --include-warnings: lsp-hover' 30 | 31 | # ciao macros: q, w and e are now together 32 | map global normal q 'b' 33 | map global normal Q 'B' 34 | map global normal '' 35 | map global normal w ': select-next-word' 36 | 37 | # format & comment 38 | map global normal = ': format' 39 | map global normal '#' ': comment-line' 40 | map global normal ': comment-block' 41 | map global normal ': comment-line-or-block' 42 | 43 | # selection 44 | map global normal * ': word-auto-select *' 45 | map global normal ': word-auto-select ' 46 | map global normal S ': enter-select-mode' 47 | map global normal Y ': enter-user-mode -lock mirror' 48 | 49 | # save/quit/close 50 | map global normal '' ': write' 51 | map global normal '' ': quit' 52 | map global normal '' ': delete-buffer' 53 | map global normal '' ': delete-buffer!' 54 | 55 | # repeat last command 56 | map global normal ':' 57 | 58 | # goto ------------------------------------------------------------------------ 59 | 60 | map global goto ': prompt -shell-script-candidates %{ fd --type f --hidden --no-ignore --exclude .git --exclude target } file: %{ edit %val{text} }' -docstring "file" 61 | map global goto ': buffer *grep*' -docstring 'grep buffer' 62 | map global goto

': my-grep-prev-match' -docstring 'grep prev match' 63 | map global goto ': my-grep-next-match' -docstring 'grep next match' 64 | map global goto ': buffer-switcher' 65 | 66 | # anchor ------------------------------------------------------------------------ 67 | 68 | declare-user-mode anchor 69 | map global normal ';' 'Z: enter-user-mode -lock anchor' 70 | map global anchor a ';' -docstring 'reduce to anchor' 71 | map global anchor c ';' -docstring 'reduce to cursor' 72 | map global anchor f '' -docstring 'flip cursor and anchor' 73 | map global anchor h '' -docstring 'ensure anchor after cursor' 74 | map global anchor l '' -docstring 'ensure cursor after anchor' 75 | map global anchor s '' -docstring 'select cursor and anchor' 76 | map global anchor u 'z' -docstring 'restore selection' 77 | 78 | # insert ------------------------------------------------------------- 79 | 80 | map global insert ": insert-c-n" -docstring "jump to next lsp snippet placeholder" 81 | 82 | # Minimal set of readline mappings 83 | # https://github.com/lenormf/out-of-the-box/blob/master/oob.kak 84 | map global insert 'gh' -docstring "move the cursor to the start of the line" 85 | map global insert 'glli' -docstring "move the cursor to the end of the line" 86 | map global insert 'c' -docstring "delete the character under the anchor" 87 | map global insert 'hc' -docstring "delete from the cursor to the start of the line" 88 | map global insert 'c' -docstring "delete from the cursor to the end of the line" 89 | map global insert 'ec' -docstring "delete until the next word boundary" 90 | map global insert 'bc' -docstring "delete until the previous word boundary" 91 | map global insert 'Pi' -docstring "paste before the cursor" 92 | 93 | # indentation 94 | map global insert '' 95 | map global insert '' 96 | 97 | # autocomplete with tab 98 | hook global InsertCompletionShow .* %{ map window insert } 99 | hook global InsertCompletionHide .* %{ map window insert '' } 100 | hook global InsertCompletionShow .* %{ map window insert } 101 | hook global InsertCompletionHide .* %{ map window insert '' } 102 | 103 | # terminal --------------------------------------------------------- 104 | 105 | declare-user-mode terminal 106 | map global normal ': enter-user-mode terminal' 107 | map global terminal ': kks-connect terminal' -docstring 'normal' 108 | map global terminal ': kks-connect terminal-panel' -docstring 'panel' 109 | map global terminal

': kks-connect terminal-popup' -docstring 'popup' 110 | map global terminal ': kks-connect terminal-horizontal' -docstring 'horizontal' 111 | map global terminal ': kks-connect terminal-vertical' -docstring 'vertical' 112 | 113 | # user --------------------------------------------------------------- 114 | 115 | # system clipboard 116 | evaluate-commands %sh{ 117 | case $(uname) in 118 | Linux) copy="wl-copy"; paste="wl-paste --no-newline" ;; 119 | Darwin) copy="pbcopy"; paste="pbpaste" ;; 120 | esac 121 | printf "map global user -docstring 'clip-paste (after)' p '%s'\n" "$paste" 122 | printf "map global user -docstring 'clip-paste (before)' P '!%s'\n" "$paste" 123 | printf "map global user -docstring 'clip-yank' y '%s:echo -markup %%{{Information}copied selection clipboard}'\n" "$copy" 124 | printf "map global user -docstring 'clip-replace' R '|%s'\n" "$paste" 125 | } 126 | 127 | map global user t ': lsp-selection-range' -docstring 'tree.. (lock)' 128 | map global user c ': enter-user-mode cd' -docstring 'CD..' 129 | map global user v ': kks-connect terminal-popup lazygit' -docstring 'vcs' 130 | map global user d ': kks-connect terminal-panel kks-lf' -docstring 'dir' 131 | map global user f ': enter-user-mode pick' -docstring 'pick mode' 132 | # map global user f ': find-files' -docstring 'files' 133 | map global user f ': kks-connect terminal-popup kks-zf' -docstring 'files' 134 | map global user F ': kks-connect terminal-popup kks-files -I -H' -docstring 'all files' 135 | map global user b ': kks-connect terminal-popup kks-buffers' -docstring 'buffers' 136 | map global user / ': kks-connect terminal-popup kks-grep' -docstring 'files by content' 137 | map global user l ': kks-connect terminal-popup kks-lines' -docstring 'lines in buffer' 138 | map global user r ': kks-connect terminal-popup kks-mru' -docstring 'recent files' 139 | 140 | # lsp ---------------------------------------------------------------- 141 | 142 | map global user l %{:enter-user-mode lsp} -docstring "LSP mode" 143 | map global insert ':try lsp-snippets-select-next-placeholders catch %{ execute-keys -with-hooks tab> }' -docstring 'Select next snippet placeholder' 144 | map global object a 'lsp-object' -docstring 'LSP any symbol' 145 | map global object 'lsp-object' -docstring 'LSP any symbol' 146 | map global object e 'lsp-object Function Method' -docstring 'LSP function or method' 147 | map global object k 'lsp-object Class Interface Struct' -docstring 'LSP class interface or struct' 148 | map global object d 'lsp-diagnostic-object --include-warnings' -docstring 'LSP errors and warnings' 149 | map global object D 'lsp-diagnostic-object' -docstring 'LSP errors' 150 | -------------------------------------------------------------------------------- /private_dot_config/kak/misc/kitty-overlay.kak: -------------------------------------------------------------------------------- 1 | hook -group kitty-integration global User 'TERM=xterm-kitty' %{ 2 | define-command kitty-popup -override -params 1.. -shell-completion -docstring 'launch kitty overlay window' %{ 3 | kitty-terminal --type=overlay %arg{@} 4 | } 5 | define-command kitty-split -override -params 1.. -shell-completion -docstring 'launch kitty overlay window' %{ 6 | kitty-terminal --type=window --location=hsplit %arg{@} 7 | } 8 | alias global terminal-popup kitty-popup 9 | alias global terminal-panel kitty-split 10 | } 11 | -------------------------------------------------------------------------------- /private_dot_config/kak/misc/snippets.kak: -------------------------------------------------------------------------------- 1 | declare-option str snippet_dir 2 | set-option global snippet_dir '~/.local/share/kak-snippets/' 3 | 4 | define-command snippet-insert -params 1 -menu -shell-script-candidates %{ 5 | fd --type file . ~/.local/share/kak-snippets/$kak_opt_filetype/ | awk -F '/' '{print $NF}' 6 | } %{ 7 | execute-keys -save-regs '' "|cat ~/.local/share/kak-snippets/%opt{filetype}/%arg{1}" 8 | try %{ 9 | execute-keys -save-regs '' 's\$\d)' 10 | set-register / '\$\d' 11 | } 12 | } -docstring "poor man's snippets" 13 | -------------------------------------------------------------------------------- /private_dot_config/kak/misc/wezterm.kak: -------------------------------------------------------------------------------- 1 | define-command -override wezterm-terminal-horizontal -params .. -docstring ' 2 | wezterm-terminal-horizontal []: create new horizontal WezTerm pane' \ 3 | %{ 4 | nop %sh{ 5 | WEZTERM_PANE=$kak_client_env_WEZTERM_PANE wezterm cli split-pane --cwd "$PWD" --right "${@:-$SHELL}" 6 | } 7 | } 8 | complete-command wezterm-terminal-horizontal shell 9 | 10 | define-command -override wezterm-terminal-vertical -params .. -docstring ' 11 | wezterm-terminal-vertical []: create new vertical WezTerm pane' \ 12 | %{ 13 | nop %sh{ 14 | WEZTERM_PANE=$kak_client_env_WEZTERM_PANE wezterm cli split-pane --cwd "$PWD" --bottom "${@:-$SHELL}" 15 | } 16 | } 17 | complete-command wezterm-terminal-vertical shell 18 | 19 | define-command -override wezterm-terminal-panel -params .. -docstring ' 20 | wezterm-terminal-panel []: create new narrow WezTerm pane' \ 21 | %{ 22 | nop %sh{ 23 | WEZTERM_PANE=$kak_client_env_WEZTERM_PANE wezterm cli split-pane --cwd "$PWD" --right --cells 40 "${@:-$SHELL}" 24 | } 25 | } 26 | complete-command wezterm-terminal-panel shell 27 | 28 | define-command -override wezterm-terminal-popup -params .. -docstring ' 29 | wezterm-terminal-popup []: create new bottom top-level WezTerm pane' \ 30 | %{ 31 | nop %sh{ 32 | WEZTERM_PANE=$kak_client_env_WEZTERM_PANE wezterm cli split-pane --cwd "$PWD" --bottom --cells 20 "${@:-$SHELL}" 33 | } 34 | } 35 | complete-command wezterm-terminal-popup shell 36 | 37 | define-command -override wezterm-terminal-tab -params .. -docstring ' 38 | wezterm-terminal-tab []: create new WezTerm tab' \ 39 | %{ 40 | nop %sh{ 41 | WEZTERM_PANE=$kak_client_env_WEZTERM_PANE wezterm cli spawn --cwd "$PWD" "${@:-$SHELL}" 42 | } 43 | } 44 | complete-command wezterm-terminal-tab shell 45 | 46 | define-command -override wezterm-terminal-window -params .. -docstring ' 47 | wezterm-terminal-window []: create new WezTerm window' \ 48 | %{ 49 | nop %sh{ 50 | WEZTERM_PANE=$kak_client_env_WEZTERM_PANE wezterm cli spawn --cwd "$PWD" --new-window "${@:-$SHELL}" 51 | } 52 | } 53 | complete-command wezterm-terminal-window shell 54 | 55 | # Hooks 56 | # WezTerm detection 57 | # Ensure that we're running on WezTerm 58 | remove-hooks global wezterm-detection 59 | hook -group wezterm-detection global ClientCreate '.*' %{ 60 | trigger-user-hook "TERM_PROGRAM=%val{client_env_TERM_PROGRAM}" 61 | } 62 | 63 | # WezTerm integration 64 | remove-hooks global wezterm-integration 65 | hook -group wezterm-integration global User 'TERM_PROGRAM=WezTerm' %{ 66 | alias global terminal wezterm-terminal-horizontal 67 | alias global terminal-horizontal wezterm-terminal-horizontal 68 | alias global terminal-vertical wezterm-terminal-vertical 69 | alias global terminal-panel wezterm-terminal-panel 70 | alias global terminal-tab wezterm-terminal-tab 71 | alias global terminal-window wezterm-terminal-window 72 | alias global terminal-popup wezterm-terminal-popup 73 | } 74 | -------------------------------------------------------------------------------- /private_dot_config/kak/modeline.kak: -------------------------------------------------------------------------------- 1 | # modeline ------------------------------------------------------------- 2 | 3 | declare-option str modeline_lsp_status 4 | declare-option str modeline_git_branch 5 | 6 | hook global WinCreate .* %{ 7 | hook window NormalIdle .* %{ evaluate-commands %sh{ 8 | status="" 9 | if [ "$kak_opt_lsp_diagnostic_error_count" -ne 0 ]; then 10 | status=$(printf " *%s" "$kak_opt_lsp_diagnostic_error_count") 11 | fi 12 | if [ "$kak_opt_lsp_diagnostic_warning_count" -ne 0 ]; then 13 | status=$(printf "$status !%s" "$kak_opt_lsp_diagnostic_warning_count") 14 | fi 15 | printf 'set window modeline_lsp_status %%{%s}' "$status" 16 | } } 17 | } 18 | 19 | hook global WinCreate .* %{ evaluate-commands %sh{ 20 | branch=$(cd "$(dirname "${kak_buffile}")" && git rev-parse --abbrev-ref HEAD 2>/dev/null) 21 | if [ -n "${branch}" ]; then 22 | printf 'set window modeline_git_branch %%{[%s] }' "${branch}" 23 | fi 24 | } } 25 | 26 | 27 | declare-option -hidden str lsp_modeline_progress "" 28 | define-command -hidden -params 6 -override lsp-handle-progress %{ 29 | set-option global lsp_modeline_progress %sh{ 30 | # if ! "$6"; then 31 | echo "$2${5:+" ($5%)"}${4:+": $4"}" 32 | # fi 33 | } 34 | } 35 | 36 | set global modelinefmt '%opt{lsp_modeline_progress} {yellow}%opt{modeline_lsp_status}{default} ' 37 | set -add global modelinefmt '{default}%val{bufname} [%opt{filetype}] ' 38 | set -add global modelinefmt '{default}%val{cursor_line}:%val{cursor_char_column}/%val{buf_line_count}{default} {{mode_info}} {{context_info}}' 39 | set -add global modelinefmt '{Whitespace} | {default}%sh{pwd | sed "s|^$HOME|~|" | sed "s|~/projects|~/p|"} %opt{modeline_git_branch}{meta}%val{client}{default}@{+b@meta}%val{session}' 40 | -------------------------------------------------------------------------------- /private_dot_config/karabiner.edn: -------------------------------------------------------------------------------- 1 | {;; code won't read cheatsheet section 2 | ;; ! stand for mandatory 3 | ;; # stand for optional 4 | ;; C T O S for left command control optional shift 5 | ;; F for fn 6 | ;; need to prefix C T O S F with ! or # 7 | :cheatsheet {:!Ca "command a" ;; mandatory left_command 8 | :!Ta "control a" ;; mandatory left_control 9 | :!Oa "option a" 10 | :!Sa "shift a" 11 | :#Sa "shift a" ;; keycode a, optional left_shift 12 | :!CTOa "command control option a" 13 | :!Cspacebar "command space" 14 | :!Fa "fn a" 15 | :##a "keycode a optional any" 16 | :!!a "mandatory hyper(control command option shift) a "} 17 | 18 | :layers {} 19 | 20 | :simlayers {:nav-mode {:key :f}} 21 | 22 | :templates {:run "$SHELL -c %s" 23 | :open "open \"%s\"" 24 | :yabai "/opt/homebrew/bin/yabai -m %s"} 25 | 26 | :main [{:des "caps_lock to esc when pressed alone, to ctrl as modifier" 27 | :rules [[:##caps_lock :left_control nil {:alone :escape}]]} 28 | 29 | {:des "globe/fn key in place of control for external keyboards" 30 | :rules [[:left_control :fn]]} 31 | 32 | {:des "nav mode: hold f - hjkl arrows, ; backspace, m return" 33 | :rules [:nav-mode 34 | [:##h :left_arrow] 35 | [:##j :down_arrow] 36 | [:##k :up_arrow] 37 | [:##l :right_arrow] 38 | [:##u :page_down] 39 | [:##i :page_up] 40 | [:##m :return_or_enter] 41 | [:##semicolon :delete_or_backspace]]} 42 | 43 | {:des "punctuation" 44 | :rules [[[:u :i] :!Ssemicolon] 45 | [[:i :o] :!Squote] 46 | [[:u :o] :equal_sign] 47 | ;; [[:d :f] :!S9] 48 | ;; [[:j :k] :!S0] 49 | ;; [[:s :d] :open_bracket] 50 | ;; [[:k :l] :close_bracket] 51 | ;; [[:a :s] :!Sopen_bracket] 52 | ;; [[:l :semicolon] :!Sclose_bracket] 53 | ]} 54 | 55 | ; {:des "non us tilde" 56 | ; :rules [[:##non_us_backslash :grave_accent_and_tilde]]} 57 | 58 | {:des "keyboard illumination with opt-f1/f2" 59 | :rules [[:!Of1 :illumination_decrement] 60 | [:!Of2 :illumination_increment]]} 61 | 62 | ; {:des "yabai" 63 | ; :rules [[:!OTn [:yabai "space --focus next"]] 64 | ; [:!OTp [:yabai "space --focus prev"]] 65 | ; [:!Otab [:yabai "space --focus recent"]] 66 | ; [:!O1 [:yabai "space --focus 1"]] 67 | ; [:!O2 [:yabai "space --focus 2"]] 68 | ; [:!O3 [:yabai "space --focus 3"]] 69 | ; [:!O4 [:yabai "space --focus 4"]] 70 | ; [:!O5 [:yabai "space --focus 5"]] 71 | ; [:!O6 [:yabai "space --focus 6"]] 72 | ; [:!Operiod [:yabai "display --focus next"]] 73 | ; [:!Ocomma [:yabai "display --focus prev"]] 74 | 75 | ; [:!OTu [:yabai "space --layout bsp"]] 76 | ; [:!OTi [:yabai "space --layout float"]] 77 | ; [:!OTo [:yabai "space --layout stack"]] 78 | ; [:!OTm [:yabai "space --mirror y-axis"]] 79 | ; [:!OTdelete_or_backspace [:yabai "space --balance"]] 80 | ; [:!OTf [:yabai "window --toggle zoom-fullscreen"]] 81 | 82 | ; [:!OTj [:yabai "window --focus stack.next || /opt/homebrew/bin/yabai -m window --focus next || /opt/homebrew/bin/yabai -m window --focus first"]] 83 | ; [:!OTk [:yabai "window --focus stack.prev || /opt/homebrew/bin/yabai -m window --focus prev || /opt/homebrew/bin/yabai -m window --focus last"]] 84 | 85 | ; [:!OTh [:yabai "window --resize right:-80:0"]] 86 | ; [:!OTl [:yabai "window --resize right:80:0"]] 87 | 88 | ; [:!OSj [:yabai "window --swap next || /opt/homebrew/bin/yabai -m window --grid 6:5:1:1:3:4"]] 89 | ; [:!OSk [:yabai "window --swap prev || /opt/homebrew/bin/yabai -m window --grid 1:1:0:0:1:1"]] 90 | ; [:!OSh [:yabai "window --grid 1:2:0:0:1:1"]] 91 | ; [:!OSl [:yabai "window --grid 1:2:1:0:1:1"]] 92 | ; [:!OSspacebar [:yabai "window --toggle float --grid 8:8:1:1:6:6"]] 93 | 94 | ; [:!OS1 [:yabai "window --space 1; /opt/homebrew/bin/yabai -m space --focus 1"]] 95 | ; [:!OS2 [:yabai "window --space 2; /opt/homebrew/bin/yabai -m space --focus 2"]] 96 | ; [:!OS3 [:yabai "window --space 3; /opt/homebrew/bin/yabai -m space --focus 3"]] 97 | ; [:!OS4 [:yabai "window --space 4; /opt/homebrew/bin/yabai -m space --focus 4"]] 98 | ; [:!OS5 [:yabai "window --space 5; /opt/homebrew/bin/yabai -m space --focus 5"]] 99 | ; [:!OS6 [:yabai "window --space 6; /opt/homebrew/bin/yabai -m space --focus 6"]] 100 | ; [:!OS7 [:yabai "window --space 7; /opt/homebrew/bin/yabai -m space --focus 7"]] 101 | ; [:!OS8 [:yabai "window --space 8; /opt/homebrew/bin/yabai -m space --focus 8"]] 102 | ; [:!OS9 [:yabai "window --space 9; /opt/homebrew/bin/yabai -m space --focus 9"]] 103 | ; [:!OSperiod [:yabai "window --display next; /opt/homebrew/bin/yabai/ -m display --focus next"]] 104 | ; [:!OScomma [:yabai "window --display prev; /opt/homebrew/bin/yabai -m display --focus prev"]]]} 105 | ]} 106 | -------------------------------------------------------------------------------- /private_dot_config/kmonad/x19.kbd: -------------------------------------------------------------------------------- 1 | (defcfg 2 | input (device-file "/dev/input/by-path/platform-i8042-serio-0-event-kbd") 3 | output (uinput-sink "Thinkpad Keyboard") 4 | fallthrough true 5 | ) 6 | 7 | (defsrc 8 | esc 9 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc 10 | tab q w e r t y u i o p [ ] \ 11 | caps a s d f g h j k l ; ' ret 12 | lsft z x c v b n m , . / rsft 13 | lctl lmet lalt spc ralt prnt rctl 14 | ) 15 | 16 | (defalias 17 | f (tap-hold-next-release 200 f (layer-toggle nav)) 18 | esc (tap-hold-next-release 200 esc lctl) 19 | bck Back 20 | fwd Forward 21 | z (tap-hold-next-release 200 z lalt) 22 | x (tap-hold-next-release 200 x lctl) 23 | c (tap-hold-next-release 200 c lmet) 24 | 25 | m (tap-hold-next-release 200 m rmet) 26 | com (tap-hold-next-release 200 , rctl) 27 | dot (tap-hold-next-release 200 . ralt) 28 | ) 29 | 30 | 31 | ;; (deflayer layer 32 | ;; _ 33 | ;; _ _ _ _ _ _ _ _ _ _ _ _ _ _ 34 | ;; _ _ _ _ _ _ _ _ _ _ _ _ _ _ 35 | ;; _ _ _ _ _ _ _ _ _ _ _ _ _ 36 | ;; _ _ _ _ _ _ _ _ _ _ _ _ 37 | ;; _ _ _ _ _ _ _ _ 38 | ;; ) 39 | 40 | (deflayer base 41 | _ 42 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 43 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 44 | @esc _ _ _ @f _ _ _ _ _ _ _ _ 45 | _ @z @x @c _ _ _ @m @com @dot _ _ 46 | _ lalt lmet _ rsft _ _ 47 | ) 48 | 49 | (deflayer nav 50 | _ 51 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 52 | _ _ _ _ _ _ home pgdn pgup end @bck _ _ _ 53 | _ _ _ _ XX _ left down up rght bspc _ _ 54 | _ _ _ _ _ _ @fwd _ _ _ _ _ 55 | _ _ _ _ _ _ _ 56 | ) 57 | ;; vi:ft=lisp 58 | -------------------------------------------------------------------------------- /private_dot_config/lazygit/config.yml: -------------------------------------------------------------------------------- 1 | disableStartupPopups: false 2 | notARepository: "quit" 3 | 4 | # git: 5 | # paging: 6 | # colorArg: always 7 | # pager: delta --wrap-max-lines 0 --file-style none --hunk-header-decoration-style none --paging=never 8 | 9 | os: 10 | edit: 'hx {{filename}}' 11 | editAtLine: 'hx --line={{line}} {{filename}}' 12 | editAtLineAndWait: 'hx --block --line={{line}} {{filename}}' 13 | editInTerminal: true 14 | 15 | gui: 16 | showBottomLine: false 17 | showListFooter: false 18 | showCommandLog: true 19 | theme: 20 | selectedLineBgColor: 21 | - default 22 | selectedRangeBgColor: 23 | - default 24 | activeBorderColor: 25 | - white 26 | - bold 27 | inactiveBorderColor: 28 | - black 29 | - bold 30 | -------------------------------------------------------------------------------- /private_dot_config/lf/executable_pv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | case "$1" in 4 | # *.png*) term-image -S kitty -w "$2" "$1" ;; 5 | # *.webp*) term-image -S kitty -w "$2" "$1" ;; 6 | # *.gif*) term-image -S kitty -w "$2" "$1" ;; 7 | # *.jpg*) term-image -S kitty -w "$2" "$1" ;; 8 | # *.png*) chafa -f symbols -s "$2"x"$3" "$1" ;; 9 | # *.webp*) chafa -f symbols -s "$2"x"$3" "$1" ;; 10 | # *.gif*) chafa -f symbols -s "$2"x"$3" "$1" ;; 11 | # *.jpg*) chafa -f symbols -s "$2"x"$3" "$1" ;; 12 | # *.pdf) pdftotext "$1" - ;; 13 | *.tar*) tar tf "$1" ;; 14 | *.zip) unzip -l "$1" ;; 15 | *.rar) unrar l "$1" ;; 16 | *.7z) 7z l "$1" ;; 17 | # *.md) mdcat -P "$1" ;; 18 | *) bat --paging never --wrap character --color always "$1" ;; 19 | esac 20 | -------------------------------------------------------------------------------- /private_dot_config/lf/lfrc: -------------------------------------------------------------------------------- 1 | %[ $LF_LEVEL -eq 1 ] || echo "Warning: You're in a nested lf instance!" 2 | 3 | # interpreter for shell commands (needs to be POSIX compatible) 4 | set shell sh 5 | 6 | # set '-eu' options for shell commands 7 | # These options are used to have safer shell commands. Option '-e' is used to 8 | # exit on error and option '-u' is used to give error for unset variables. 9 | # Option '-f' disables pathname expansion which can be useful when $f, $fs, and 10 | # $fx variables contain names with '*' or '?' characters. However, this option 11 | # is used selectively within individual commands as it can be limiting at 12 | # times. 13 | set shellopts '-eu' 14 | 15 | # set internal field separator (IFS) to "\n" for shell commands 16 | # This is useful to automatically split file names in $fs and $fx properly 17 | # since default file separator used in these variables (i.e. 'filesep' option) 18 | # is newline. You need to consider the values of these options and create your 19 | # commands accordingly. 20 | # set ifs "\n" 21 | 22 | set scrolloff 10 23 | set ratios 1:2 24 | set incsearch 25 | set period 1 26 | set previewer ~/.config/lf/pv.sh 27 | set promptfmt "\033[2m%w/%f\033[0m" 28 | set errorfmt "\033[1;91m%s\033[0m" 29 | set tabstop 4 30 | # set info "size" 31 | 32 | map i $LESSOPEN="| ~/.config/lf/pv.sh %s" less -R $f 33 | 34 | # use enter for shell commands 35 | map shell 36 | 37 | # kakoune-like navigation 38 | map gk top 39 | map gj bottom 40 | 41 | map K half-up 42 | map J half-down 43 | 44 | # execute current file (must be executable) 45 | map x $$f 46 | map X !$f 47 | 48 | # put files into trash, requires trash-cli 49 | cmd trash $IFS="`printf '\n\t'`"; trash $fx 50 | map D trash 51 | 52 | # yank path to clipboard 53 | cmd yank-dirname $dirname -- "$f" | head -c-1 | wl-copy 54 | cmd yank-path $printf '%s' "$fx" | wl-copy 55 | cmd yank-basename $basename -a -- $fx | head -c-1 | wl-copy 56 | map Y :yank-path 57 | 58 | # recursively make dirs 59 | cmd mkdir %{{ 60 | IFS=" " 61 | mkdir -p -- "$*" 62 | lf -remote "send $id select \"$*\"" 63 | }} 64 | map a push %mkdir 65 | 66 | # new file 67 | # map n push $touch 68 | 69 | # new folder with selected files 70 | cmd newfold ${{ 71 | set -f 72 | read newd 73 | mkdir -- "$newd" 74 | mv -- $fx "$newd" 75 | }} 76 | map newfold 77 | 78 | # map R bulk-rename 79 | map R $printf '%s\n' $fx | vidir - 80 | 81 | # extract archives 82 | cmd extract ${{ 83 | set -f 84 | unar $f 85 | }} 86 | 87 | # compress current file or selected files with tar and gunzip 88 | cmd tar ${{ 89 | set -f 90 | mkdir $1 91 | cp -r $fx $1 92 | tar czf $1.tar.gz $1 93 | rm -rf $1 94 | }} 95 | 96 | # compress current file or selected files with zip 97 | cmd zip ${{ 98 | set -f 99 | mkdir $1 100 | cp -r $fx $1 101 | zip -r $1.zip $1 102 | rm -rf $1 103 | }} 104 | 105 | # jump to file with fzf 106 | cmd jump ${{ 107 | res="$(fd . -H -d 4 | fzf | sed 's/\\/\\\\/g;s/"/\\"/g')" 108 | if [ -d "$res" ]; then 109 | cmd="cd" 110 | else 111 | cmd="select" 112 | fi 113 | lf -remote "send $id $cmd \"$res\"" 114 | }} 115 | map :jump 116 | 117 | # jump to folder with zoxide 118 | cmd autojump %lf -remote "send $id cd '$(zoxide query $1)'" 119 | map push :autojump 120 | 121 | cmd open-with %"$@" $fx 122 | map O push :open-with 123 | 124 | # y (select for copy) and P to paste soft-link 125 | # d (select for cut) and P to paste hard-link 126 | cmd link %{{ 127 | set -- $(cat ~/.local/share/lf/files) 128 | mode="$1" 129 | shift 130 | if [ "$#" -lt 1 ]; then 131 | lf -remote "send $id echo no files to link" 132 | exit 0 133 | fi 134 | case "$mode" in 135 | # symbolically copy mode is indicating a soft link 136 | copy) ln -sr -t . -- "$@";; 137 | # while a move mode is indicating a hard link 138 | move) ln -t . -- "$@";; 139 | esac 140 | rm ~/.local/share/lf/files 141 | lf -remote "send clear" 142 | }} 143 | map P :link 144 | 145 | cmd open ${{ 146 | test -L $f && f=$(readlink -f $f) 147 | case $(file --mime-type $f -b) in 148 | text/*) $EDITOR $fx;; 149 | *) for f in $fx; do xdg-open $f > /dev/null 2> /dev/null & done;; 150 | esac 151 | }} 152 | 153 | cmd open-and-quit ${{ 154 | lf -remote "send open" 155 | lf -remote "send quit" 156 | }} 157 | map o :open-and-quit 158 | 159 | # cmd on-cd &{{ 160 | # # display git repository status in your prompt 161 | # git=$("starship module git_branch" " (%s)") || true 162 | # fmt="\033[32;1m%u@%h\033[0m:\033[34;1m%d\033[0m\033[1m%f$git\033[0m" 163 | # lf -remote "send $id set promptfmt \"$git\"" 164 | # }} 165 | # vi:ft=sh 166 | -------------------------------------------------------------------------------- /private_dot_config/pacman/hooks/bash-to-dash.hook: -------------------------------------------------------------------------------- 1 | [Trigger] 2 | Type = Package 3 | Operation = Install 4 | Operation = Upgrade 5 | Target = bash 6 | 7 | [Action] 8 | Description = Re-pointing /bin/sh symlink to dash... 9 | When = PostTransaction 10 | Exec = /usr/bin/ln -sfT dash /usr/bin/sh 11 | Depends = dash 12 | -------------------------------------------------------------------------------- /private_dot_config/paru/paru.conf: -------------------------------------------------------------------------------- 1 | # 2 | # $PARU_CONF 3 | # /etc/paru.conf 4 | # ~/.config/paru/paru.conf 5 | # 6 | # See the paru.conf(5) manpage for options 7 | 8 | # 9 | # GENERAL OPTIONS 10 | # 11 | [options] 12 | PgpFetch 13 | Devel 14 | Provides 15 | DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg 16 | #AurOnly 17 | BottomUp 18 | #RemoveMake 19 | #SudoLoop 20 | #UseAsk 21 | #SaveChanges 22 | #CombinedUpgrade 23 | #CleanAfter 24 | UpgradeMenu 25 | #NewsOnUpgrade 26 | 27 | #LocalRepo 28 | #Chroot 29 | #Sign 30 | #SignDb 31 | 32 | # 33 | # Binary OPTIONS 34 | # 35 | [bin] 36 | FileManager = lf 37 | #Sudo = doas 38 | #MFlags = --skippgpcheck 39 | 40 | -------------------------------------------------------------------------------- /private_dot_config/sway/config: -------------------------------------------------------------------------------- 1 | # vi:ft=i3 2 | 3 | # General settings ------------------------------------------------------------- 4 | 5 | set $defaultBorder 1 6 | 7 | # xwayland disable 8 | default_border pixel $defaultBorder 9 | default_floating_border normal 10 | 11 | smart_borders on 12 | smart_gaps on 13 | hide_edge_borders --i3 smart_no_gaps 14 | focus_wrapping no 15 | mouse_warping container 16 | gaps inner 0 17 | 18 | font pango: monospace 10 19 | titlebar_border_thickness 1 20 | titlebar_padding 4 1 21 | 22 | seat * xcursor_theme Adwaita 32 23 | # seat * hide_cursor 10000 24 | 25 | # Outputs ------------------------------------------------------------------ 26 | 27 | output * { 28 | bg #000000 solid_color 29 | # subpixel rgb 30 | } 31 | 32 | # Inputs ------------------------------------------------------------------ 33 | 34 | input "type:keyboard" { 35 | xkb_layout us,ru 36 | repeat_delay 200 37 | repeat_rate 30 38 | xkb_options grp:alt_space_toggle 39 | } 40 | 41 | input "type:pointer" { 42 | pointer_accel 1 43 | accel_profile adaptive 44 | scroll_method on_button_down 45 | scroll_button BTN_SIDE 46 | scroll_factor 2.0 47 | } 48 | 49 | input "1133:16495:Logitech_MX_Ergo" { 50 | accel_profile adaptive 51 | pointer_accel 0.5 52 | } 53 | 54 | # Colors ------------------------------------------------------------------ 55 | 56 | set $col_fg #bcbcbc 57 | set $col_fg_br #ffffff 58 | set $col_fg_dim #6c6c6c 59 | set $col_bg #202020 60 | set $col_focus #303030 61 | set $col_bg_dark #111111 62 | set $col_bg_br #005f5f 63 | set $col_indicator #5fafaf 64 | 65 | # Colors border background text indicator child_border 66 | client.focused $col_bg_br $col_bg_br $col_fg_br $col_fg_dim $col_focus 67 | client.focused_inactive $col_bg $col_bg $col_fg $col_bg $col_bg 68 | client.unfocused $col_bg $col_bg_dark $col_fg_dim $col_bg $col_bg 69 | # client.urgent $color_bright_yellow $color_bright_yellow $color_normal_black $color_unused $color_unused 70 | # client.placeholder $color_unused $color_unused $color_unused $color_unused $color_unused 71 | 72 | # Rules ------------------------------------------------------------------ 73 | 74 | set $popupBorder 4 75 | 76 | for_window { 77 | [ app_id="(?i)popup" ] floating enable, border pixel $popupBorder 78 | [ app_id="thunderbird" ] move container to workspace number 9, workspace number 9 79 | [ app_id="^firefox$" ] inhibit_idle fullscreen 80 | [ class="steam_app*" ] inhibit_idle fullscreen 81 | [ class="^.*" ] inhibit_idle fullscreen 82 | [ app_id="^.*" ] inhibit_idle fullscreen 83 | [ app_id="pavucontrol" ] floating enable 84 | [ app_id="spot" ] floating enable 85 | [ app_id="mpv" ] floating enable 86 | [ app_id="yad" ] floating enable 87 | [ app_id="nm-connection-editor" ] floating enable 88 | [ title="Htop*" ] floating enable 89 | [ title="Picture-in-Picture" ] floating enable 90 | [ class="Jitsi Meet" ] floating enable 91 | [ instance="Godot_Engine" ] floating enable 92 | [ title="Save File" ] floating enable 93 | [ title=".* is sharing your screen." ] floating enable 94 | [ title="Firefox — Sharing Indicator" ] kill 95 | [ app_id="wlroots" ] shortcuts_inhibitor enable 96 | [ title="river - WL-1" ] shortcuts_inhibitor enable 97 | } 98 | 99 | workspace 1 output DP-1 100 | workspace 2 output DP-1 101 | workspace 3 output DP-1 102 | workspace 4 output DP-1 103 | workspace 5 output DP-2 104 | workspace 6 output DP-2 105 | workspace 7 output DP-2 106 | workspace 8 output DP-2 107 | workspace 9 output DP-2 108 | 109 | ## Autostart ------------------------------------------------------------------ 110 | 111 | set $gnome-schema org.gnome.desktop.interface 112 | 113 | exec_always { 114 | gsettings set $gnome-schema gtk-theme 'Adwaita' 115 | gsettings set $gnome-schema icon-theme 'Adwaita' 116 | gsettings set $gnome-schema cursor-theme 'Adwaita' 117 | gsettings set $gnome-schema cursor-size 32 118 | gsettings set $gnome-schema font-name 'sans-serif 10' 119 | gsettings set $gnome-schema monospace-font-name 'monospace 10' 120 | gsettings set $gnome-schema document-font-name 'monospace 10' 121 | # gsettings set org.gnome.desktop.default-applications.terminal exec $term 122 | # gsettings set org.gnome.desktop.default-applications.terminal exec-arg '' 123 | # gsettings set org.gnome.desktop.wm.preferences button-layout '' 124 | } 125 | 126 | exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK 127 | 128 | # Includes --------------------------------------------------------------- 129 | 130 | include /etc/sway/config.d/* 131 | include ~/.config/sway/mappings.conf 132 | include "~/.config/sway/$(cut -d'-' -f1 /etc/hostname).conf" 133 | -------------------------------------------------------------------------------- /private_dot_config/sway/mappings.conf: -------------------------------------------------------------------------------- 1 | # vi:ft=i3 2 | 3 | # Key bindings ------------------------------------------------------------------ 4 | 5 | set { 6 | $ALT Mod1 7 | $HYPR Control+Shift+Mod1+Mod4 8 | $MOD Mod4 9 | $C_MOD Control+$MOD 10 | $S_MOD Shift+$MOD 11 | $CS_MOD Control+Shift+$MOD 12 | 13 | $term 'footclient' 14 | $floatterm 'floatterm' 15 | $extraterm 'alacritty' 16 | $clipboard 'menu-clip pick' 17 | $launcher 'menu-run' 18 | $shot 'menu-shot' 19 | $pass 'menu-pass' 20 | $rec 'menu-rec' 21 | } 22 | 23 | floating_modifier $MOD normal 24 | 25 | bindsym { 26 | # BASICS 27 | $MOD+q kill 28 | $C_MOD+BackSpace reload 29 | 30 | # PROGRAMS/MENUS 31 | $MOD+d exec $launcher 32 | $MOD+Return exec $term 33 | $C_MOD+t exec $extraterm 34 | $C_MOD+n exec makoctl menu $DMENU 35 | $MOD+Escape exec makoctl dismiss -a 36 | 37 | # GENERIC 38 | XF86Display output * dpms on 39 | XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $XDG_RUNTIME_DIR/wob.sock 40 | XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $XDG_RUNTIME_DIR/wob.sock 41 | XF86AudioMicMute exec pamixer --source 0 -t 42 | XF86AudioRaiseVolume exec pamixer -ui 2 && pamixer --get-volume > $XDG_RUNTIME_DIR/wob.sock 43 | XF86AudioLowerVolume exec pamixer -ud 2 && pamixer --get-volume > $XDG_RUNTIME_DIR/wob.sock 44 | XF86AudioMute exec pamixer --toggle-mute && ( pamixer --get-mute && echo 0 > $XDG_RUNTIME_DIR/wob.sock ) || pamixer --get-volume > $XDG_RUNTIME_DIR/wob.sock 45 | XF86AudioPlay exec playerctl play-pause 46 | XF86AudioPrev exec playerctl previous 47 | XF86AudioNext exec playerctl next 48 | # XF86Wlan exec sleep 1 && notify-send "WiFi" "Powered: $(iwctl device wlan0 show | grep Powered | awk '{print $4}')" 49 | 50 | # MOVING AROUND 51 | $MOD+h focus left 52 | $MOD+j focus down 53 | $MOD+k focus up 54 | $MOD+l focus right 55 | $MOD+Left focus left 56 | $MOD+Down focus down 57 | $MOD+Up focus up 58 | $MOD+Right focus right 59 | $MOD+o focus parent 60 | $MOD+i focus child 61 | $MOD+comma focus output left 62 | $MOD+period focus output right 63 | $S_MOD+h move left 40px 64 | $S_MOD+j move down 40px 65 | $S_MOD+k move up 40px 66 | $S_MOD+l move right 40px 67 | $S_MOD+Left move left 40px 68 | $S_MOD+Down move down 40px 69 | $S_MOD+Up move up 40px 70 | $S_MOD+Right move right 40px 71 | $S_MOD+comma move output left, focus output left 72 | $S_MOD+period move output right, focus output right 73 | $S_MOD+1 move container to workspace number 1, workspace number 1 74 | $S_MOD+2 move container to workspace number 2, workspace number 2 75 | $S_MOD+3 move container to workspace number 3, workspace number 3 76 | $S_MOD+4 move container to workspace number 4, workspace number 4 77 | $S_MOD+5 move container to workspace number 5, workspace number 5 78 | $S_MOD+6 move container to workspace number 6, workspace number 6 79 | $S_MOD+7 move container to workspace number 7, workspace number 7 80 | $S_MOD+8 move container to workspace number 8, workspace number 8 81 | $S_MOD+9 move container to workspace number 9, workspace number 9 82 | $S_MOD+tab move container to workspace back_and_forth 83 | $CS_MOD+Right move container to workspace next_on_output, workspace next_on_output 84 | $CS_MOD+Left move container to workspace prev_on_output, workspace prev_on_output 85 | 86 | # WORKSPACES 87 | $C_MOD+Right workspace next_on_output 88 | $C_MOD+Left workspace prev_on_output 89 | --no-repeat $MOD+tab workspace back_and_forth; 90 | --no-repeat $MOD+1 workspace number 1 91 | --no-repeat $MOD+2 workspace number 2 92 | --no-repeat $MOD+3 workspace number 3 93 | --no-repeat $MOD+4 workspace number 4 94 | --no-repeat $MOD+5 workspace number 5 95 | --no-repeat $MOD+6 workspace number 6 96 | --no-repeat $MOD+7 workspace number 7 97 | --no-repeat $MOD+8 workspace number 8 98 | --no-repeat $MOD+9 workspace number 9 99 | --no-repeat $MOD+0 workspace number 1; 100 | 101 | # SCRATCHPAD 102 | $MOD+backslash scratchpad show 103 | $S_MOD+backslash move scratchpad 104 | 105 | # LAYOUT 106 | $MOD+f fullscreen 107 | $S_MOD+space floating toggle 108 | $MOD+space focus mode_toggle 109 | $MOD+c layout toggle split 110 | $MOD+v split toggle 111 | $MOD+b layout tabbed 112 | 113 | # MODES 114 | $C_MOD+m mode $mode_menu 115 | $C_MOD+r mode $mode_resize 116 | $C_MOD+Delete mode $mode_power 117 | $C_MOD+semicolon mode $mode_swap 118 | $C_MOD+Escape mode $mode_ignore 119 | } 120 | 121 | # Modes ------------------------------------------------------------------ 122 | 123 | set $mode_menu "MENU: [c]lip [p]ass [r]unit [s]hot r[e]c [m]ove-workspace" 124 | mode $mode_menu { 125 | bindsym --to-code { 126 | c exec $clipboard; mode "default" 127 | p exec $pass; mode "default" 128 | s exec $shot; mode "default" 129 | e exec $rec; mode "default" 130 | m mode $mode_workspaces_monitors 131 | Return mode "default" 132 | Escape mode "default" 133 | } 134 | } 135 | 136 | set $mode_resize "RESIZE" 137 | mode $mode_resize { 138 | bindsym --to-code { 139 | h resize shrink width 40px 140 | j resize grow height 40px 141 | k resize shrink height 40px 142 | l resize grow width 40px 143 | minus gaps inner current minus 8px 144 | plus gaps inner current plus 8px 145 | Return mode "default" 146 | Escape mode "default" 147 | } 148 | } 149 | 150 | set $mode_power "POWER: [e]xit [r]eebot [l]ock [s]uspend [p]oweroff" 151 | mode $mode_power { 152 | bindsym --to-code { 153 | e exec swaymsg exit 154 | r exec systemctl reboot 155 | l exec systemctl lock-session; mode "default" 156 | s exec systemctl suspend 157 | p exec systemctl poweroff 158 | Return mode "default" 159 | Escape mode "default" 160 | } 161 | } 162 | 163 | set $mode_swap "SWAP WINDOW" 164 | mode $mode_swap { 165 | bindsym --to-code { 166 | h mark --add "_swap", focus left, swap container with mark "_swap", focus left, unmark "_swap" 167 | j mark --add "_swap", focus down, swap container with mark "_swap", focus down, unmark "_swap" 168 | k mark --add "_swap", focus up, swap container with mark "_swap", focus up, unmark "_swap" 169 | l mark --add "_swap", focus right, swap container with mark "_swap", focus right, unmark "_swap" 170 | Return mode "default" 171 | Escape mode "default" 172 | } 173 | } 174 | 175 | set $mode_workspaces_monitors "MOVE WORKSPACE" 176 | mode $mode_workspaces_monitors { 177 | bindsym --to-code { 178 | h move workspace to output left, mode "default" 179 | l move workspace to output right, mode "default" 180 | Return mode default 181 | Escape mode default 182 | } 183 | } 184 | 185 | set $mode_ignore "IGNORE" 186 | mode $mode_ignore { 187 | bindsym --to-code { 188 | $C_MOD+Escape mode default 189 | } 190 | } 191 | -------------------------------------------------------------------------------- /private_dot_config/sway/void.conf: -------------------------------------------------------------------------------- 1 | # vi:ft=i3 2 | 3 | # General settings ------------------------------------------------------------- 4 | 5 | font pango:monospace 16 6 | # seat * xcursor_theme Adwaita 48 7 | 8 | # Outputs ------------------------------------------------------------- 9 | 10 | output DP-1 resolution 3840x2560 scale 1 position 0 300 11 | output DP-2 resolution 3840x2160 scale 1 position 3840 0 transform 270 12 | 13 | # Inputs ------------------------------------------------------------------ 14 | 15 | # Autostart ------------------------------------------------------------------ 16 | 17 | exec_always { 18 | gsettings set $gnome-schema text-scaling-factor 1.5 19 | } 20 | 21 | # Runit user services --------------------------------------------------------- 22 | 23 | set $svdir "$HOME/.local/service" 24 | 25 | exec runsvdir $svdir 'log: ...........................................................................................................................................................................................................................................................................................................................................................................................................' 26 | -------------------------------------------------------------------------------- /private_dot_config/sway/x19.conf: -------------------------------------------------------------------------------- 1 | # General settings ------------------------------------------------------------- 2 | 3 | xwayland disable 4 | font pango:monospace 13 5 | seat * xcursor_theme Adwaita 32 6 | 7 | # Outputs ------------------------------------------------------------- 8 | 9 | output eDP-1 scale 1 10 | 11 | # Idle ------------------------------------------------------------- 12 | 13 | bindswitch --locked { 14 | lid:on output eDP-1 disable 15 | lid:off output eDP-1 enable 16 | } 17 | 18 | # bindswitch --locked { 19 | # lid:on output eDP-1 disable 20 | # lid:off output eDP-1 enable, exec systemctl restart --user wlsunset.service 21 | # } 22 | 23 | # Inputs ------------------------------------------------------------------ 24 | 25 | input "2:10:TPPS/2_Elan_TrackPoint" { 26 | pointer_accel 0 27 | accel_profile adaptive 28 | } 29 | 30 | input "type:touchpad" { 31 | pointer_accel 0.25 32 | accel_profile adaptive 33 | dwt disabled 34 | tap enabled 35 | natural_scroll enabled 36 | middle_emulation disabled 37 | drag enabled 38 | scroll_factor 0.5 39 | } 40 | 41 | # Autostart ------------------------------------------------------------------ 42 | 43 | exec_always { 44 | gsettings set $gnome-schema text-scaling-factor 1.33 45 | gsettings set $gnome-schema font-name 'sans-serif 9' 46 | gsettings set $gnome-schema document-font-name 'sans-serif 9' 47 | gsettings set $gnome-schema monospace-font-name 'monospace 9' 48 | } 49 | 50 | # Systemd stuff ------------------------------------------------------------------ 51 | 52 | exec systemctl --user import-environment WAYLAND_DISPLAY SWAYSOCK 53 | exec systemctl --wait --user start sway-session.target 54 | 55 | # vi:ft=i3 56 | -------------------------------------------------------------------------------- /private_dot_config/topgrade/topgrade.toml: -------------------------------------------------------------------------------- 1 | [misc] 2 | skip_notify = true 3 | 4 | # Don't ask for confirmations 5 | #assume_yes = true 6 | 7 | # Disable specific steps - same options as the command line flag 8 | # disable = ["helm", "gem"] 9 | 10 | # Ignore failures for these steps 11 | # ignore_failures = ["node"] 12 | 13 | # Run specific steps - same options as the command line flag 14 | #only = ["system", "emacs"] 15 | 16 | # Do not ask to retry failed steps (default: false) 17 | #no_retry = true 18 | 19 | # Run inside tmux 20 | #run_in_tmux = true 21 | 22 | # List of remote machines with Topgrade installed on them 23 | #remote_topgrades = ["toothless", "pi", "parnas"] 24 | 25 | # Arguments to pass SSH when upgrading remote systems 26 | #ssh_arguments = "-o ConnectTimeout=2" 27 | 28 | # Path to Topgrade executable on remote machines 29 | #remote_topgrade_path = ".cargo/bin/topgrade" 30 | 31 | # Arguments to pass tmux when pulling Repositories 32 | #tmux_arguments = "-S /var/tmux.sock" 33 | 34 | # Do not set the terminal title 35 | #set_title = false 36 | 37 | # Cleanup temporary or old files 38 | cleanup = true 39 | 40 | # [git] 41 | #max_concurrency = 5 42 | # pull_only_repos = ["~/repos/*"] 43 | 44 | # Don't pull the predefined git repos 45 | #predefined_repos = false 46 | 47 | # Arguments to pass Git when pulling Repositories 48 | #arguments = "--rebase --autostash" 49 | 50 | [composer] 51 | #self_update = true 52 | 53 | # Commands to run before anything 54 | [pre_commands] 55 | #"Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak" 56 | 57 | # Custom commands 58 | # [commands] 59 | # "Update repos" = "git bulk -q -w autopull pull" 60 | # "Update Kakoune plugins" = "fish -c 'kakplug update'" 61 | 62 | [brew] 63 | #greedy_cask = true 64 | autoremove = true 65 | 66 | [linux] 67 | # Arch Package Manager to use. Allowed values: autodetect, trizen, paru, yay, pacman. 68 | #arch_package_manager = "pacman" 69 | # Arguments to pass yay (or paru) when updating packages 70 | #yay_arguments = "--nodevel" 71 | #show_arch_news = true 72 | #trizen_arguments = "--devel" 73 | #enable_tlmgr = true 74 | #emerge_sync_flags = "-q" 75 | #emerge_update_flags = "-uDNa --with-bdeps=y world" 76 | #redhat_distro_sync = false 77 | #rpm_ostree = false 78 | 79 | [windows] 80 | # Manually select Windows updates 81 | #accept_all_updates = false 82 | #open_remotes_in_new_terminal = true 83 | 84 | # Causes Topgrade to rename itself during the run to allow package managers 85 | # to upgrade it. Use this only if you installed Topgrade by using a package 86 | # manager such as Scoop to Cargo 87 | #self_rename = true 88 | 89 | [npm] 90 | # Use sudo if the NPM directory isn't owned by the current user 91 | #use_sudo = true 92 | 93 | [firmware] 94 | # Offer to update firmware; if false just check for and display available updates 95 | upgrade = true 96 | 97 | [flatpak] 98 | # Use sudo for updating the system-wide installation 99 | #use_sudo = true 100 | -------------------------------------------------------------------------------- /private_dot_config/wezterm/colors/saturn.toml: -------------------------------------------------------------------------------- 1 | # Saturn: https://github.com/kkga/saturn.kak 2 | 3 | [colors] 4 | foreground = "#BCBCBC" 5 | background = "#121212" 6 | cursor_bg = "#5FAFAF" 7 | cursor_border = "#5FAFAF" 8 | cursor_fg = "#121212" 9 | selection_bg = "#87AFD7" 10 | selection_fg = "#1C1C1C" 11 | 12 | ansi = [ 13 | "#121212", 14 | "#AF5F5F", 15 | "#5F875F", 16 | "#AF875F", 17 | "#5F87AF", 18 | "#5F5F87", 19 | "#5F8787", 20 | "#8A8A8A", 21 | ] 22 | 23 | brights = [ 24 | "#6C6C6C", 25 | "#D7875F", 26 | "#87AF87", 27 | "#D7AF5F", 28 | "#87AFD7", 29 | "#8787AF", 30 | "#5FAFAF", 31 | "#FFFFFF", 32 | ] 33 | -------------------------------------------------------------------------------- /private_dot_config/wezterm/wezterm.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require("wezterm") 2 | local act = wezterm.action 3 | 4 | -- wezterm.gui is not available to the mux server, so take care to 5 | -- do something reasonable when this config is evaluated by the mux 6 | local function get_appearance() 7 | if wezterm.gui then 8 | return wezterm.gui.get_appearance() 9 | end 10 | return 'Dark' 11 | end 12 | 13 | local function scheme_for_appearance(appearance) 14 | if appearance:find 'Dark' then 15 | return 'saturn' 16 | else 17 | return 'saturn' 18 | end 19 | end 20 | 21 | return { 22 | font_size = 13, 23 | -- line_height = 1.2, 24 | -- freetype_load_flags = 'FORCE_AUTOHINT', 25 | -- freetype_load_target = "Light", 26 | -- freetype_render_target = 'HorizontalLcd', 27 | font = wezterm.font({ 28 | -- family = "CommitMono", 29 | family = "Berkeley Mono", 30 | }), 31 | -- harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' }, 32 | color_scheme = scheme_for_appearance(get_appearance()), 33 | hide_tab_bar_if_only_one_tab = true, 34 | use_fancy_tab_bar = false, 35 | window_decorations = "RESIZE", 36 | window_padding = { top = 0, bottom = 0, left = 0, right = 0 }, 37 | enable_kitty_keyboard = true, 38 | enable_csi_u_key_encoding = true, 39 | warn_about_missing_glyphs = true, 40 | -- enable_scroll_bar = true, 41 | keys = { 42 | -- tabs 43 | { key = "j", mods = "CMD", action = act.ActivateTabRelative(1) }, 44 | { key = "k", mods = "CMD", action = act.ActivateTabRelative(-1) }, 45 | { key = "w", mods = "LEADER|SHIFT", action = act.CloseCurrentTab({ confirm = true }) }, 46 | -- panes 47 | { key = "Return", mods = "CMD", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, 48 | { key = "w", mods = "CMD", action = act.CloseCurrentPane({ confirm = true }) }, 49 | { key = "o", mods = "CTRL|SHIFT", action = act.PaneSelect({ mode = "SwapWithActive" }) }, 50 | { key = "h", mods = "CTRL|SHIFT", action = act.ActivatePaneDirection("Left") }, 51 | { key = "j", mods = "CTRL|SHIFT", action = act.ActivatePaneDirection("Down") }, 52 | { key = "k", mods = "CTRL|SHIFT", action = act.ActivatePaneDirection("Up") }, 53 | { key = "l", mods = "CTRL|SHIFT", action = act.ActivatePaneDirection("Right") }, 54 | { key = "f", mods = "CTRL|SHIFT", action = act.TogglePaneZoomState }, 55 | { key = "Return", mods = "CTRL|SHIFT", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, 56 | { key = "Return", mods = "CTRL|ALT|SHIFT", action = act.SplitVertical({ domain = "CurrentPaneDomain" }) }, 57 | -- disable minimize 58 | { key = "m", mods = "CMD", action = "DisableDefaultAssignment" }, 59 | }, 60 | } 61 | -------------------------------------------------------------------------------- /private_dot_config/yabai/executable_yabairc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" 4 | sudo yabai --load-sa 5 | 6 | yabai -m config window_gap 2 7 | 8 | # yabai -m config layout float 9 | yabai -m config mouse_follows_focus off 10 | yabai -m config focus_follows_mouse off 11 | yabai -m config window_placement second_child 12 | yabai -m config split_ratio 0.66 13 | yabai -m config auto_balance off 14 | yabai -m config mouse_modifier ctrl 15 | yabai -m config mouse_action1 move 16 | yabai -m config mouse_action2 resize 17 | 18 | yabai -m rule --add app="Spotify" display=last 19 | yabai -m rule --add app="1Password" manage=off 20 | yabai -m rule --add app="Telegram" manage=off 21 | yabai -m rule --add app="Reminders" manage=off 22 | yabai -m rule --add app="Things" manage=off 23 | yabai -m rule --add app="Latest" manage=off 24 | yabai -m rule --add app="Pandan" manage=off 25 | yabai -m rule --add app="CleanShot" manage=off 26 | yabai -m rule --add app="System Settings" manage=off 27 | yabai -m rule --add app="IINA" manage=off 28 | yabai -m rule --add app="App Store" manage=off 29 | yabai -m rule --add app="Activity Monitor" manage=off 30 | yabai -m rule --add app="Preview" manage=off 31 | yabai -m rule --add app="Kap" manage=off 32 | yabai -m rule --add app="Bitwarden" manage=off 33 | yabai -m rule --add app="iStat Menus Status" manage=off 34 | yabai -m rule --add app="Quick Add to Trello" manage=off 35 | yabai -m rule --add app="zoom.us" manage=off 36 | yabai -m rule --add app="Transmission" manage=off 37 | yabai -m rule --add app="espanso" manage=off 38 | yabai -m rule --add app="Godot" manage=off 39 | yabai -m rule --add app="Stats" manage=off 40 | yabai -m rule --add app="Dark Noise" manage=off 41 | yabai -m rule --add app="Fantastical" manage=off 42 | yabai -m rule --add app="Mullvad VPN" manage=off 43 | yabai -m rule --add app="Mullvad VPN" sticky=on 44 | yabai -m rule --add app="Velja" manage=off 45 | yabai -m rule --add app="Simulator" manage=off 46 | yabai -m rule --add app="AmneziaVPN" manage=off 47 | yabai -m rule --add app="Airflow" manage=off 48 | yabai -m rule --add title="popup" manage=off 49 | 50 | # suggested fix for yabai 6.0 layer change 51 | # https://github.com/koekeishiya/yabai/issues/1912 52 | yabai -m rule --add app=".*" layer=normal 53 | yabai -m rule --add app=".*" sub-layer=normal 54 | yabai -m rule --apply 55 | -------------------------------------------------------------------------------- /private_dot_config/zk/config.toml: -------------------------------------------------------------------------------- 1 | [note] 2 | language = "en" 3 | default-title = "Untitled" 4 | filename = "{{id}}-{{slug title}}" 5 | extension = "md" 6 | template = "default.md" 7 | id-charset = "alphanum" 8 | id-length = 4 9 | id-case = "lower" 10 | 11 | [extra] 12 | author = "Gadzhi Kharkharov" 13 | 14 | [dir.journal] 15 | paths = ["journal/weekly", "journal/daily"] 16 | 17 | [dir.journal.note] 18 | filename = "{{date now}}" 19 | 20 | [format.markdown] 21 | hashtags = true 22 | 23 | [tool] 24 | editor = "/opt/homebrew/bin/hx" 25 | fzf-preview = "bat --style header-filename --color always {-1}" 26 | 27 | [filter] 28 | recents = "--sort created- --created-after 'last two weeks'" 29 | 30 | [alias] 31 | nt = 'zk new --title "$*"' 32 | e = "zk edit --sort modified --interactive $argv" 33 | el = "zk edit --limit 1 --sort modified- $argv" 34 | ls = "zk list --sort modified --interactive $argv" 35 | l = "zk list --sort modified --interactive $argv" 36 | del = "zk list --sort modified --quiet --interactive --format path --delimiter0 $argv | xargs -r -0 trash" 37 | recent = "zk edit --sort created- --created-after 'last two weeks' --interactive" 38 | journal = 'zk new "$ZK_NOTEBOOK_DIR/journal"' 39 | lucky = "zk list --quiet --format full --sort random --limit 1" 40 | -------------------------------------------------------------------------------- /private_dot_local/private_share/34keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kkga/config/7f5a2e983ffd68b34a19c5c6bfbeb38aa23dce4f/private_dot_local/private_share/34keys.png -------------------------------------------------------------------------------- /private_dot_local/private_share/backgrounds/office-night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kkga/config/7f5a2e983ffd68b34a19c5c6bfbeb38aa23dce4f/private_dot_local/private_share/backgrounds/office-night.png -------------------------------------------------------------------------------- /private_dot_local/private_share/desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kkga/config/7f5a2e983ffd68b34a19c5c6bfbeb38aa23dce4f/private_dot_local/private_share/desktop.png -------------------------------------------------------------------------------- /private_dot_ssh/private_config: -------------------------------------------------------------------------------- 1 | Host * 2 | IgnoreUnknown AddKeysToAgent,UseKeychain 3 | AddKeysToAgent yes 4 | UseKeychain yes 5 | IdentityFile ~/.ssh/id_ed25519 6 | 7 | Host *.github.com 8 | UpdateHostKeys yes 9 | UseKeychain yes 10 | 11 | Host aur.archlinux.org 12 | IdentityFile ~/.ssh/aur 13 | User aur 14 | --------------------------------------------------------------------------------