├── .chezmoiignore ├── README.md ├── private_dot_config ├── fish │ ├── fish_plugins │ ├── functions │ │ └── lfcd.fish │ └── config.fish ├── git │ ├── ignore │ └── config ├── lazygit │ └── config.yml ├── gh │ └── config.yml ├── lf │ ├── executable_pv.sh │ └── lfrc ├── foot │ ├── saturn.ini │ └── foot.ini ├── editorconfig │ └── config.ini ├── sway │ ├── void.conf │ ├── x19.conf │ ├── config │ └── mappings.conf ├── kmonad │ └── x19.kbd ├── topgrade │ └── topgrade.toml ├── flashspace │ ├── settings.json │ └── profiles.json ├── helix │ └── config.toml └── karabiner.edn └── 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/fish/fish_plugins: -------------------------------------------------------------------------------- 1 | jorgebucaran/fisher 2 | jorgebucaran/hydro 3 | g-plane/pnpm-shell-completion 4 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/lazygit/config.yml: -------------------------------------------------------------------------------- 1 | disableStartupPopups: false 2 | notARepository: "quit" 3 | 4 | os: 5 | editPreset: "vscode" 6 | 7 | promptToReturnFromSubprocess: false # removes "press enter to return to lazygit" popup 8 | 9 | gui: 10 | showBottomLine: false 11 | showListFooter: false 12 | showCommandLog: true 13 | theme: 14 | selectedLineBgColor: 15 | - default 16 | selectedRangeBgColor: 17 | - default 18 | activeBorderColor: 19 | - white 20 | - bold 21 | inactiveBorderColor: 22 | - black 23 | - bold 24 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/git/config: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Gadzhi Kharkharov 3 | email = me@kkga.me 4 | [core] 5 | editor = hx 6 | pager = diff-so-fancy 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/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/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/fish/config.fish: -------------------------------------------------------------------------------- 1 | # VARIABLES 2 | 3 | set -gx DENO_INSTALL $HOME/.deno 4 | set -gx PNPM_HOME /Users/kkga/Library/pnpm 5 | set -gx FZF_DEFAULT_COMMAND 'fd --type=file' 6 | 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' 7 | set -gx EDITOR hx 8 | set -gx VISUAL code 9 | set -gx BAT_THEME ansi 10 | set -gx BAT_STYLE plain 11 | 12 | # PATH 13 | 14 | fish_add_path \ 15 | /opt/homebrew/bin \ 16 | /opt/homebrew/sbin \ 17 | "$HOME/.yarn/bin" \ 18 | "$DENO_INSTALL/bin" \ 19 | "$PNPM_HOME" 20 | fish_add_path -m "$HOME/.local/bin" 21 | 22 | # ABBREVIATIONS 23 | 24 | abbr g git 25 | abbr pn pnpm 26 | abbr pnx pnpx 27 | abbr cm chezmoi 28 | abbr notes "zk -W ~/notes e" 29 | abbr notes-retool "zk -W ~/retool-notes e" 30 | abbr e hx 31 | alias ls='lsd' 32 | alias l='ls -l' 33 | alias la='ls -a' 34 | alias lla='ls -la' 35 | alias lt='ls --tree' 36 | alias cat="bat" 37 | alias lg="lazygit" 38 | alias cp="cp -iv" 39 | alias mv="mv -iv" 40 | 41 | # COLORS 42 | 43 | set fish_color_autosuggestion normal --dim 44 | set fish_color_cancel -r 45 | set fish_color_command --bold 46 | set fish_color_comment brmagenta 47 | set fish_color_cwd green 48 | set fish_color_cwd_root red 49 | set fish_color_end brmagenta 50 | set fish_color_error brred 51 | set fish_color_escape brcyan 52 | set fish_color_history_current --bold 53 | set fish_color_host normal 54 | set fish_color_match --background=brblue 55 | set fish_color_normal normal 56 | set fish_color_operator cyan 57 | set fish_color_param brblue 58 | set fish_color_quote yellow 59 | set fish_color_redirection bryellow 60 | set fish_color_search_match bryellow '--background=brblack' 61 | set fish_color_selection white --bold '--background=brblack' 62 | set fish_color_status red 63 | set fish_color_user brgreen 64 | set fish_color_valid_path --underline 65 | set fish_pager_color_prefix normal 66 | set fish_pager_color_completion normal 67 | set fish_pager_color_description white 68 | set fish_pager_color_selected_background -r 69 | 70 | # INTERACTIVE 71 | 72 | if status --is-interactive 73 | set fish_greeting 74 | set -g hydro_symbol_prompt '>' 75 | bind \co 'set old_tty (stty -g); stty sane; lfcd; stty $old_tty; commandline -f repaint' 76 | bind \ej 'cd $(zoxide query -i); commandline -f repaint' 77 | zoxide init fish --cmd j | source 78 | direnv hook fish | source 79 | end 80 | -------------------------------------------------------------------------------- /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/flashspace/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeWorkspaceOnFocusChange" : true, 3 | "alternativeDisplays" : "", 4 | "centerCursorOnFocusChange" : true, 5 | "centerCursorOnWorkspaceChange" : false, 6 | "changeWorkspaceOnAppAssign" : true, 7 | "checkForUpdatesAutomatically" : true, 8 | "displayMode" : "dynamic", 9 | "enableFocusManagement" : true, 10 | "enableIntegrations" : false, 11 | "enablePictureInPictureSupport" : true, 12 | "enableSpaceControl" : true, 13 | "enableSpaceControlAnimations" : false, 14 | "enableSpaceControlTilesAnimations" : false, 15 | "enableSwipeGestures" : false, 16 | "enableWorkspaceTransitions" : false, 17 | "floatingApps" : [ 18 | { 19 | "bundleIdentifier" : "com.apple.systempreferences", 20 | "iconPath" : "/System/Applications/System Settings.app/Contents/Resources/PrefApp.icns", 21 | "name" : "System Settings" 22 | }, 23 | { 24 | "bundleIdentifier" : "com.wireguard.macos", 25 | "iconPath" : "/Applications/WireGuard.app/Contents/Resources/AppIcon.icns", 26 | "name" : "WireGuard" 27 | }, 28 | { 29 | "bundleIdentifier" : "com.apple.Stickies", 30 | "iconPath" : "/System/Applications/Stickies.app/Contents/Resources/AppIcon.icns", 31 | "name" : "Stickies" 32 | } 33 | ], 34 | "focusFrontmostWindow" : false, 35 | "focusLeft" : "opt+h", 36 | "focusRight" : "opt+l", 37 | "keepUnassignedAppsOnSwitch" : false, 38 | "loopWorkspaces" : true, 39 | "loopWorkspacesOnAllDisplays" : false, 40 | "menuBarDisplayAliases" : "", 41 | "menuBarTitleTemplate" : "$WORKSPACE", 42 | "pipApps" : [ 43 | 44 | ], 45 | "pipScreenCornerOffset" : 15, 46 | "restartAppOnWakeUp" : false, 47 | "restoreHiddenAppsOnSwitch" : true, 48 | "runScriptAfterWorkspaceChange" : "", 49 | "runScriptOnLaunch" : "", 50 | "runScriptOnProfileChange" : "sketchybar --reload", 51 | "runScriptOnWorkspaceChange" : "sketchybar --trigger flashspace_workspace_change WORKSPACE=\"$WORKSPACE\" DISPLAY=\"$DISPLAY\"", 52 | "showFlashSpace" : "ctrl+opt+shift+delete", 53 | "showFloatingNotifications" : true, 54 | "showMenuBarIcon" : false, 55 | "showMenuBarTitle" : true, 56 | "showSpaceControl" : "opt+`", 57 | "skipEmptyWorkspacesOnSwitch" : false, 58 | "spaceControlCurrentDisplayWorkspaces" : true, 59 | "spaceControlHideEmptyWorkspaces" : true, 60 | "spaceControlNumberOfColumns" : 3, 61 | "spaceControlUpdateScreenshotsOnOpen" : false, 62 | "swipeDown3FingerAction" : "none", 63 | "swipeDown4FingerAction" : "none", 64 | "swipeLeft3FingerAction" : "none", 65 | "swipeLeft4FingerAction" : "previousWorkspace", 66 | "swipeRight3FingerAction" : "none", 67 | "swipeRight4FingerAction" : "none", 68 | "swipeThreshold" : 0.2, 69 | "swipeUp3FingerAction" : "none", 70 | "swipeUp4FingerAction" : "none", 71 | "switchToRecentWorkspace" : "opt+tab", 72 | "switchWorkspaceOnCursorScreen" : false, 73 | "switchWorkspaceWhenPipCloses" : true, 74 | "toggleFocusedAppAssignment" : "opt+shift+enter", 75 | "toggleTheFocusedAppFloating" : "opt+shift+space", 76 | "workspaceTransitionDimming" : 0.15000000000000002, 77 | "workspaceTransitionDuration" : 0.1 78 | } -------------------------------------------------------------------------------- /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/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/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/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/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/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" : "com.apple.Safari", 16 | "iconPath" : "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/Resources/AppIcon.icns", 17 | "name" : "Safari" 18 | } 19 | ], 20 | "assignAppShortcut" : "opt+shift+1", 21 | "display" : "Built-in Retina Display", 22 | "id" : "4C468472-6861-4B43-B2F0-AEFB9DA15F94", 23 | "name" : "Browser", 24 | "openAppsOnActivation" : false, 25 | "shortcut" : "opt+1", 26 | "symbolIconName" : "safari.fill" 27 | }, 28 | { 29 | "apps" : [ 30 | { 31 | "bundleIdentifier" : "com.figma.Desktop", 32 | "iconPath" : "/Applications/Figma.app/Contents/Resources/electron.icns", 33 | "name" : "Figma" 34 | } 35 | ], 36 | "assignAppShortcut" : "opt+shift+2", 37 | "display" : "Built-in Retina Display", 38 | "id" : "C60A2820-B2BC-49BE-9AF0-D3B8211283DD", 39 | "name" : "Code", 40 | "openAppsOnActivation" : false, 41 | "shortcut" : "opt+2", 42 | "symbolIconName" : "curlybraces" 43 | }, 44 | { 45 | "apps" : [ 46 | { 47 | "bundleIdentifier" : "com.google.Chrome.beta", 48 | "iconPath" : "/Applications/Google Chrome Beta.app/Contents/Resources/app.icns", 49 | "name" : "Google Chrome Beta" 50 | }, 51 | { 52 | "bundleIdentifier" : "com.microsoft.VSCode", 53 | "iconPath" : "/Applications/Visual Studio Code.app/Contents/Resources/Code.icns", 54 | "name" : "Code" 55 | } 56 | ], 57 | "assignAppShortcut" : "opt+shift+3", 58 | "display" : "Built-in Retina Display", 59 | "id" : "D945E931-841A-4857-B865-98B3AC8A57C9", 60 | "name" : "Code 2", 61 | "openAppsOnActivation" : false, 62 | "shortcut" : "opt+3", 63 | "symbolIconName" : "eye.fill" 64 | }, 65 | { 66 | "apps" : [ 67 | { 68 | "bundleIdentifier" : "com.culturedcode.ThingsMac", 69 | "iconPath" : "/Applications/Things3.app/Contents/Resources/App-Release.icns", 70 | "name" : "Things" 71 | }, 72 | { 73 | "bundleIdentifier" : "com.mitchellh.ghostty", 74 | "iconPath" : "/Applications/Ghostty.app/Contents/Resources/Ghostty.icns", 75 | "name" : "Ghostty" 76 | } 77 | ], 78 | "assignAppShortcut" : "opt+shift+4", 79 | "display" : "Built-in Retina Display", 80 | "id" : "8AF2CAE5-F950-4ADD-9072-DDC341A23583", 81 | "name" : "Utils", 82 | "openAppsOnActivation" : false, 83 | "shortcut" : "opt+4", 84 | "symbolIconName" : "apple.terminal.fill" 85 | }, 86 | { 87 | "apps" : [ 88 | { 89 | "bundleIdentifier" : "net.whatsapp.WhatsApp", 90 | "iconPath" : "/Applications/WhatsApp.app/Contents/Resources/AppIconCatalystRelease.icns", 91 | "name" : "‎WhatsApp" 92 | }, 93 | { 94 | "bundleIdentifier" : "ru.keepcoder.Telegram", 95 | "iconPath" : "/Applications/Telegram.app/Contents/Resources/AppIcon.icns", 96 | "name" : "Telegram" 97 | }, 98 | { 99 | "bundleIdentifier" : "com.apple.Notes", 100 | "iconPath" : "/System/Applications/Notes.app/Contents/Resources/AppIcon.icns", 101 | "name" : "Notes" 102 | } 103 | ], 104 | "assignAppShortcut" : "opt+shift+5", 105 | "display" : "Built-in Retina Display", 106 | "id" : "1584CBDD-F4C2-4EC0-8892-F66DF2427B99", 107 | "name" : "Chats", 108 | "shortcut" : "opt+5", 109 | "symbolIconName" : "bubble.left.and.bubble.right.fill" 110 | }, 111 | { 112 | "apps" : [ 113 | { 114 | "bundleIdentifier" : "org.m0k.transmission", 115 | "iconPath" : "/Applications/Transmission.app/Contents/Resources/AppIcon.icns", 116 | "name" : "Transmission" 117 | }, 118 | { 119 | "bundleIdentifier" : "org.mozilla.firefox", 120 | "iconPath" : "/Applications/Firefox.app/Contents/Resources/firefox.icns", 121 | "name" : "Firefox" 122 | }, 123 | { 124 | "bundleIdentifier" : "com.colliderli.iina", 125 | "iconPath" : "/Applications/IINA.app/Contents/Resources/AppIcon.icns", 126 | "name" : "IINA" 127 | }, 128 | { 129 | "bundleIdentifier" : "com.apple.reminders", 130 | "iconPath" : "/System/Applications/Reminders.app/Contents/Resources/AppIcon.icns", 131 | "name" : "Reminders" 132 | }, 133 | { 134 | "bundleIdentifier" : "com.zwift.ZwiftLauncher", 135 | "iconPath" : "/Applications/Zwift.app/Contents/Resources/AppIcon.icns", 136 | "name" : "Zwift" 137 | }, 138 | { 139 | "bundleIdentifier" : "com.apple.finder", 140 | "iconPath" : "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns", 141 | "name" : "Finder" 142 | }, 143 | { 144 | "bundleIdentifier" : "com.apple.Stickies", 145 | "iconPath" : "/System/Applications/Stickies.app/Contents/Resources/AppIcon.icns", 146 | "name" : "Stickies" 147 | } 148 | ], 149 | "assignAppShortcut" : "opt+shift+`", 150 | "display" : "Built-in Retina Display", 151 | "id" : "02EF8117-E9D4-48C8-9EEC-62C7F5264202", 152 | "name" : "Scratch", 153 | "shortcut" : "opt+`", 154 | "symbolIconName" : "square.dashed" 155 | } 156 | ] 157 | } 158 | ] 159 | } -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------