├── .gitmodules ├── LICENSE ├── README.md ├── alacritty ├── alacritty.toml └── gruvbox_material_medium_dark.toml ├── bspwm └── bspwmrc ├── dunst ├── dunstify │ ├── bat_notif │ ├── br_notif │ ├── restarted_notif │ ├── sink_notif │ ├── source_notif │ └── updates_notif └── dunstrc ├── kitty ├── gruvbox-material-dark-medium.conf └── kitty.conf ├── mpv └── mpv.conf ├── picom └── picom.conf ├── polybar └── config.ini ├── qutebrowser ├── config.py └── gruvbox.py ├── rofi ├── config.rasi └── scripts │ └── system_prompt ├── scripts ├── i3lock_launch └── todo ├── stow.sh ├── sxhkd └── sxhkdrc ├── xinit-bspwm └── .xinitrc ├── xorg └── .Xresources ├── zathura ├── zathura-gruvbox-dark └── zathurarc └── zsh ├── .zprofile ├── .zshenv └── .zshrc /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "nvim"] 2 | path = nvim 3 | url = https://github.com/abxh/nvim-config 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dotfiles 2 | These are my personal dotfiles. As such, a lot of the configuration are tinkered for 3 | my use and liking. Feel free to copy the stuff you like and understand, and leave the rest. 4 | 5 | Use `stow.sh` after testing `stow` out. It's a wonderful program that helps managing dotfiles. 6 | 7 | Special dependencies are written within the files themselves. Most dependencies should be inferrable 8 | (or throw errors if missing). I use [this](https://github.com/abxh/gruvbox-material-gtk) icon theme 9 | in the screenshots and in my dunstify scripts as default. 10 | 11 | You can find `JetBrainsMono Nerd Font` from [here](https://github.com/ryanoasis/nerd-fonts/releases) 12 | and `Font Awesome 6 Free` from [here](https://fontawesome.com/download). Use the aforementioned links, if 13 | you cannot find them using your package manager, and copy them to `~/.local/share/fonts` and do `fccache`. 14 | 15 | To clone this repo with the submodules, run: 16 | ```bash 17 | git clone --depth=1 --recurse-submodules https://github.com/abxh/dotfiles 18 | ``` 19 | 20 | ## Preview 21 | 22 | 23 | The used wallpaper can be found [here](https://w.wallhaven.cc/full/pk/wallhaven-pkp1vp.png). 24 | -------------------------------------------------------------------------------- /alacritty/alacritty.toml: -------------------------------------------------------------------------------- 1 | 2 | ####### 3 | # ENV # 4 | ####### 5 | 6 | [env] 7 | # Environment variables 8 | TERM = "xterm-256color" 9 | 10 | ########## 11 | # WINDOW # 12 | ########## 13 | 14 | [window] 15 | 16 | # Window dimensions 17 | dimensions = { columns = 0, lines = 0 } # Default: columns = 0, lines = 0 18 | 19 | # Window startup position 20 | position = "None" # Default: "None" 21 | 22 | # Padding 23 | padding = { x = 10, y = 10 } # Default: x = 0, y = 0 24 | 25 | # Dynamic padding 26 | dynamic_padding = false # Default: false 27 | 28 | # Window decorations 29 | decorations = "Buttonless" # Default: "Full" 30 | 31 | # Opacity 32 | opacity = 0.95 # Default: 1.0 33 | 34 | # Blur (macOS/KDE Wayland only) 35 | blur = false # Default: false 36 | 37 | # Startup mode 38 | startup_mode = "Windowed" # Default: "Windowed" 39 | 40 | # Window title 41 | title = "Alacritty" # Default: "Alacritty" 42 | 43 | # Dynamic title 44 | dynamic_title = true # Default: true 45 | 46 | # Window class (Linux/BSD only) 47 | class = { instance = "Alacritty", general = "Alacritty" } # Default: instance = "Alacritty", general = "Alacritty" 48 | 49 | # Decorations theme variant 50 | decorations_theme_variant = "None" # Default: "None" 51 | 52 | # Resize increments 53 | resize_increments = false # Default: false 54 | 55 | # Option as Alt (macOS only) 56 | option_as_alt = "None" # Default: "None" 57 | 58 | ############# 59 | # SCROLLING # 60 | ############# 61 | 62 | [scrolling] 63 | 64 | # Maximum number of lines in the scrollback buffer 65 | history = 10000 # Default: 10000 66 | 67 | # Number of lines scrolled for every input scroll increment 68 | multiplier = 1 # Default: 3 69 | 70 | ######## 71 | # FONT # 72 | ######## 73 | 74 | [font] 75 | 76 | # Normal font style 77 | normal = { family = "JetBrainsMono NF", style = "Regular" } # Default for Linux/BSD: "monospace", Regular 78 | 79 | # Bold font style 80 | bold = { style = "Bold" } # Inherits family from normal, Default style: Bold 81 | 82 | # Italic font style 83 | italic = { style = "Italic" } # Inherits family from normal, Default style: Italic 84 | 85 | # Bold Italic font style 86 | bold_italic = { style = "Bold Italic" } # Inherits family from normal, Default style: Bold Italic 87 | 88 | # Font size in points 89 | size = 12 # Default: 11.25 90 | 91 | # Offset is extra space around each character 92 | offset = { x = 0, y = 0 } # Default: x = 0, y = 0 93 | 94 | # Glyph offset determines the locations of the glyphs within their cells 95 | glyph_offset = { x = 0, y = 0 } # Default: x = 0, y = 0 96 | 97 | # Use built-in font for box drawing characters 98 | builtin_box_drawing = true # Default: true 99 | 100 | ########## 101 | # COLORS # 102 | ########## 103 | 104 | [colors] 105 | 106 | # Transparent background colors 107 | transparent_background_colors = true # Default 108 | 109 | # Draw bold text with bright colors 110 | draw_bold_text_with_bright_colors = false # Default 111 | 112 | ######## 113 | # BELL # 114 | ######## 115 | 116 | [bell] 117 | 118 | # Visual bell animation effect 119 | animation = "Linear" # Default: "Linear" 120 | 121 | # Duration of the visual bell flash in milliseconds 122 | duration = 0 # Default: 0 123 | 124 | # Visual bell animation color 125 | color = "#ffffff" # Default: "#ffffff" 126 | 127 | # Command executed when the bell is rung 128 | command = "None" # Default: "None" 129 | 130 | ############# 131 | # SELECTION # 132 | ############# 133 | 134 | [selection] 135 | 136 | # Characters that are used as separators for "semantic words" in Alacritty 137 | semantic_escape_chars = ",│`|:\"' ()[]{}<>\t" # Default: ",│`|:\"' ()[]{}<>\t" 138 | 139 | # When set to true, selected text will be copied to the primary clipboard 140 | save_to_clipboard = false # Default: false 141 | 142 | ########## 143 | # CURSOR # 144 | ########## 145 | 146 | [cursor] 147 | 148 | # Cursor style 149 | style = { shape = "Block", blinking = "On" } # Default: shape = "Block", blinking = "Off" 150 | 151 | # Vi mode cursor style (falls back to the active value of the normal cursor if "None") 152 | vi_mode_style = "None" # Default: "None" 153 | 154 | # Cursor blinking interval in milliseconds 155 | blink_interval = 750 # Default: 750 156 | 157 | # Time after which cursor stops blinking, in seconds 158 | blink_timeout = 0 # Default: 5 159 | 160 | # When true, the cursor will be rendered as a hollow box when the window is not focused 161 | unfocused_hollow = true # Default: true 162 | 163 | # Thickness of the cursor relative to the cell width 164 | thickness = 0.15 # Default: 0.15 165 | 166 | ############ 167 | # TERMINAL # 168 | ############ 169 | 170 | [terminal] 171 | 172 | # Controls the OSC 52 behavior for clipboard interactions 173 | osc52 = "CopyPaste" # Default: "OnlyCopy" 174 | 175 | ######### 176 | # MOUSE # 177 | ######### 178 | 179 | [mouse] 180 | 181 | # When true, the cursor is temporarily hidden when typing 182 | hide_when_typing = true # Default: false 183 | 184 | # Mouse bindings (actual bindings need to be defined as per user preference) 185 | # Example: bindings = [{ mouse = "Left", action = "Paste" }] 186 | bindings = [] 187 | 188 | ######### 189 | # HINTS # 190 | ######### 191 | 192 | [hints] 193 | 194 | # Define the keys used for hint labels 195 | alphabet = "jfkdls;ahgurieowpq" # Default: "jfkdls;ahgurieowpq" 196 | 197 | # Enable specific hints 198 | #[[hints.enabled]] 199 | # Example configuration (actual settings to be defined based on user preference) 200 | # regex = "..." 201 | # hyperlinks = true 202 | # post_processing = true 203 | # persist = false 204 | # action = "..." 205 | # command = "..." 206 | # binding = { key = "...", mods = "...", mode = "..." } 207 | # mouse = { mods = "...", enabled = true } 208 | 209 | # KEYBOARD section of Alacritty configuration 210 | 211 | [keyboard] 212 | 213 | # Define keyboard bindings here 214 | # Example placeholder (actual bindings need to be defined based on user preference) 215 | bindings = [ 216 | # { key = "Key", mods = "Modifiers", action = "Action" }, 217 | # { key = "Key", mods = "Modifiers", chars = "Characters to send" }, 218 | # ... 219 | ] 220 | 221 | [general] 222 | 223 | # Live config reload (changes require restart) 224 | live_config_reload = true # Default: true 225 | 226 | # Shell program and its arguments 227 | # Default for Linux/BSD/macOS is $SHELL or user's login shell 228 | # Default for Windows is "powershell" 229 | #[shell] 230 | #program = "/bin/zsh" # Example for Linux/BSD/macOS 231 | #args = ["-l"] 232 | 233 | # Working directory 234 | working_directory = "None" # Default: "None" 235 | 236 | # Offer IPC using alacritty msg (unix only) 237 | ipc_socket = true # Default: true 238 | # https://alacritty.org/config-alacritty.html 239 | 240 | ########### 241 | # GENERAL # 242 | ########### 243 | 244 | # Import additional configuration files 245 | import = [ 246 | "~/.config/alacritty/gruvbox_material_medium_dark.toml" 247 | ] 248 | -------------------------------------------------------------------------------- /alacritty/gruvbox_material_medium_dark.toml: -------------------------------------------------------------------------------- 1 | # https://github.com/alacritty/alacritty-theme/blob/master/themes/gruvbox_material_medium_dark.toml 2 | 3 | # Colors (Gruvbox Material Medium Dark) 4 | 5 | # Default colors 6 | [colors.primary] 7 | background = '#282828' 8 | foreground = '#d4be98' 9 | 10 | # Normal colors 11 | [colors.normal] 12 | black = '#3c3836' 13 | red = '#ea6962' 14 | green = '#a9b665' 15 | yellow = '#d8a657' 16 | blue = '#7daea3' 17 | magenta = '#d3869b' 18 | cyan = '#89b482' 19 | white = '#d4be98' 20 | 21 | # Bright colors (same as normal colors) 22 | [colors.bright] 23 | black = '#3c3836' 24 | red = '#ea6962' 25 | green = '#a9b665' 26 | yellow = '#d8a657' 27 | blue = '#7daea3' 28 | magenta = '#d3869b' 29 | cyan = '#89b482' 30 | white = '#d4be98' 31 | -------------------------------------------------------------------------------- /bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # window rules: {{{ 4 | win_width=$((1920 * 2 / 5)) 5 | win_height=$((1080 * 3 / 5)) 6 | rule_medium_wo_float="center=true rectangle=$win_width""x""$win_height+0+0" 7 | rule_medium="state=floating $rule_medium_wo_float" 8 | 9 | bspc rule -a Lxappearance $rule_medium 10 | bspc rule -a Pavucontrol $rule_medium 11 | bspc rule -a Arandr $rule_medium 12 | bspc rule -a Nm-connection-editor $rule_medium 13 | # bspc rule -a kitty $rule_medium_wo_float 14 | # bspc rule -a kitty-float $rule_medium 15 | bspc rule -a alacritty $rule_medium_wo_float 16 | bspc rule -a alacritty-float $rule_medium 17 | bspc rule -a Thunar $rule_medium_wo_float 18 | bspc rule -a *:*:"Select file to open" $rule_medium 19 | # }}} 20 | 21 | # startup: {{{ 22 | # at start: 23 | [ "$1" -eq 0 ] && xsetroot -cursor_name left_ptr & 24 | [ "$1" -eq 0 ] && redshift -l "$(cat ~/.redshift-coord)" >/dev/null & 25 | [ "$1" -eq 0 ] && xset s 600 600 dpms 0 0 660 & 26 | [ "$1" -eq 0 ] && xss-lock -- ~/.scripts/i3lock_launch & 27 | [ "$1" -eq 0 ] && caffeine & 28 | # [ "$1" -eq 0 ] && pulseaudio & 29 | [ "$1" -eq 0 ] && picom & 30 | [ "$1" -eq 0 ] && udiskie --no-automount --no-notify --tray & 31 | [ "$1" -eq 0 ] && nm-applet & 32 | # [ "$1" -eq 0 ] && /usr/libexec/polkit-gnome-authentication-agent-1 & 33 | [ "$1" -eq 0 ] && /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & 34 | [ "$1" -eq 0 ] && (while true; do [ "$(cat /sys/class/power_supply/BAT0/status)" != "Charging" ] && [ "$(cat /sys/class/power_supply/BAT0/capacity)" -le 10 ] && ~/.config/dunst/dunstify/bat_notif; sleep 30; done &) 35 | # [ "$1" -eq 0 ] && kitty --title 'todo' -e ~/.scripts/todo & 36 | # [ "$1" -eq 0 ] && alacritty --title 'todo' -e ~/.scripts/todo & 37 | 38 | # each successive restart: 39 | [ "$1" -gt 0 ] && ~/.config/dunst/dunstify/restarted_notif bspwm & 40 | 41 | # every restart: 42 | hsetroot -cover ~/Pictures/wallpapers/wallhaven-j5p23m.jpg >/dev/null & 43 | ( pkill -SIGKILL -x sxhkd; sxhkd >/dev/null &) 44 | ( pkill -SIGKILL -x polybar; polybar --log=warning >/dev/null &) 45 | ~/.config/dunst/dunstify/updates_notif & 46 | 47 | # setup monitors 48 | for monitor in $(bspc query -M); do 49 | bspc monitor "$monitor" -d 1 2 3 4 5 6 7 8 9 10 50 | done 51 | # }}} 52 | 53 | # setup options: {{{ 54 | bspc config remove_disabled_monitors true 55 | bspc config remove_unplugged_monitors true 56 | bspc config merge_overlapping_monitors true 57 | 58 | highlight_color="#d4be98" 59 | bspc config focused_border_color $highlight_color 60 | bspc config active_border_color $highlight_color 61 | bspc config presel_feedback_color $highlight_color 62 | bspc config border_width 2 63 | 64 | bspc config window_gap 10 65 | bspc config top_padding -10 66 | bspc config top_monocle_padding 10 67 | 68 | bspc config single_monocle true 69 | bspc config borderless_monocle true 70 | bspc config gapless_monocle true 71 | 72 | bspc config focus_follows_pointer true 73 | #bspc config click_to_focus any 74 | bspc config pointer_follows_monitor true 75 | bspc config pointer_modifier mod4 76 | bspc config pointer_action1 move 77 | bspc config pointer_action2 resize_side 78 | bspc config pointer_action3 resize_corner 79 | # }}} 80 | 81 | # vim: fdm=marker 82 | -------------------------------------------------------------------------------- /dunst/dunstify/bat_notif: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | icon_theme_path="/home/$USER/.local/share/icons/Gruvbox-Material-Dark-OneColored" 4 | 5 | tag="string:x-dunst-stack-tag:battery" 6 | icon="$icon_theme_path/16x16/panel/battery-010.svg" 7 | 8 | dunstify -h $tag \ 9 | -u critical \ 10 | -i "$icon" \ 11 | -t 30000 \ 12 | "Warning" \ 13 | "Battery is getting low!" 14 | -------------------------------------------------------------------------------- /dunst/dunstify/br_notif: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | icon_theme_path="/home/$USER/.local/share/icons/Gruvbox-Material-Dark-OneColored" 4 | 5 | path="/sys/class/backlight/amdgpu_bl1" 6 | icon="$icon_theme_path/16x16/actions/brightnesssettings.svg" 7 | 8 | tag="string:x-dunst-stack-tag:brightness" 9 | 10 | bar_color="#d4be98" 11 | 12 | val=$(brightnessctl g) 13 | max=$(brightnessctl max) 14 | 15 | dunstify -h int:value:$(($val * 100 / $max)) \ 16 | -h string:hlcolor:$bar_color \ 17 | -h $tag \ 18 | -i "$icon" \ 19 | "Brightness:" \ 20 | "$val" 21 | -------------------------------------------------------------------------------- /dunst/dunstify/restarted_notif: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | icon_theme_path="/home/$USER/.local/share/icons/Gruvbox-Material-Dark-OneColored" 4 | 5 | desc="$1" 6 | desc=${desc:-"x"} 7 | 8 | icon="$icon_theme_path/16x16/apps/system-restart.svg" 9 | 10 | dunstify \ 11 | -i "$icon" \ 12 | "Restarted:" \ 13 | "$desc" 14 | -------------------------------------------------------------------------------- /dunst/dunstify/sink_notif: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | sink_name="$1" 4 | sink_name=${sink_name:-"@DEFAULT_SINK@"} 5 | 6 | vol_max=153 7 | 8 | bar_color="#d4be98" 9 | muted_bar_color="$bar_color"70 10 | 11 | muted=$(pactl get-sink-mute $sink_name | awk '{print $2}') 12 | volume=$(pactl get-sink-volume $sink_name | awk '{print $5}' | cut -d '%' -f 1) 13 | 14 | icon_theme_path="/home/$USER/.local/share/icons/Gruvbox-Material-Dark-OneColored" 15 | 16 | tag="string:x-dunst-stack-tag:sink" 17 | icon_path="$icon_theme_path/16x16/panel/" 18 | 19 | if [[ "$muted" == "yes" ]]; then 20 | icon=$icon_path'audio-volume-muted.svg' 21 | bar_color=$muted_bar_color 22 | else 23 | if [[ "$volume" -lt 34 ]]; then 24 | icon=$icon_path'audio-volume-low.svg' 25 | elif [[ "$volume" -lt 67 ]]; then 26 | icon=$icon_path'audio-volume-medium.svg' 27 | else 28 | icon=$icon_path'audio-volume-high.svg' 29 | fi 30 | fi 31 | 32 | dunstify -h int:value:$(($volume * 100 / $vol_max)) \ 33 | -h string:hlcolor:$bar_color \ 34 | -h $tag \ 35 | -i "$icon" \ 36 | "Volume:" \ 37 | "$volume%" 38 | -------------------------------------------------------------------------------- /dunst/dunstify/source_notif: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source_name="$1" 4 | source_name=${source_name:-"@DEFAULT_SOURCE@"} 5 | 6 | icon_theme_path="/home/$USER/.local/share/icons/Gruvbox-Material-Dark-OneColored" 7 | 8 | tag="string:x-dunst-stack-tag:source" 9 | icon_path="$icon_theme_path/16x16/panel/" 10 | 11 | vol_max=153 12 | 13 | bar_color="#d4be98" 14 | muted_bar_color="$bar_color"70 15 | 16 | muted=$(pactl get-source-mute $source_name | awk '{print $2}') 17 | 18 | if [ $muted == "yes" ]; then 19 | icon=$icon_path'audio-input-microphone-muted.svg' 20 | notif_desc="Muted" 21 | else 22 | icon=$icon_path'audio-input-microphone-none-panel.svg' 23 | notif_desc="Unmuted" 24 | fi 25 | 26 | dunstify \ 27 | -h $tag \ 28 | -i "$icon" \ 29 | "Microphone" \ 30 | "$notif_desc" 31 | -------------------------------------------------------------------------------- /dunst/dunstify/updates_notif: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ip_to_ping="1.1.1.1" 4 | 5 | icon_theme_path="/home/$USER/.local/share/icons/Gruvbox-Material-Dark-OneColored" 6 | 7 | tag="string:x-dunst-stack-tag:updates" 8 | icon="$icon_theme_path/16x16/panel/updates-notifier.svg" 9 | icon_alt="$icon_theme_path/16x16/panel/updates-notifier-inactive.svg" 10 | 11 | while ! ping -c 1 -n $ip_to_ping &>/dev/null; do 12 | sleep 10 13 | done 14 | 15 | source /etc/os-release 16 | case $NAME in 17 | "Arch Linux") 18 | count=$(checkupdates | wc -l) 19 | count_aur=$(paru -Qau | wc -l) 20 | 21 | if ((count == 0 && count_aur == 0)); then 22 | count='no' 23 | icon=$icon_alt 24 | else 25 | count="$count+$count_aur" 26 | fi 27 | ;; 28 | "Void") 29 | count=$(xbps-install --memory-sync --dry-run --update | grep -Fe update -e install | wc -l) 30 | if ((count == 0)); then 31 | count='no' 32 | icon=$icon_alt 33 | fi 34 | ;; 35 | *) 36 | count='?' 37 | ;; 38 | esac 39 | 40 | dunstify \ 41 | -h $tag \ 42 | -i "$icon" \ 43 | -t 12000 \ 44 | "Updates:" \ 45 | "$count updates" 46 | -------------------------------------------------------------------------------- /dunst/dunstrc: -------------------------------------------------------------------------------- 1 | # See dunst(5) for all configuration options 2 | 3 | # Note: do a `diff /etc/dunst/dunstrc/ dunstrc` to see 4 | # the differences in configs. 5 | 6 | [global] 7 | ### Display ### 8 | 9 | # Which monitor should the notifications be displayed on. 10 | monitor = 0 11 | 12 | # Display notification on focused monitor. Possible modes are: 13 | # mouse: follow mouse pointer 14 | # keyboard: follow window with keyboard focus 15 | # none: don't follow anything 16 | # 17 | # "keyboard" needs a window manager that exports the 18 | # _NET_ACTIVE_WINDOW property. 19 | # This should be the case for almost all modern window managers. 20 | # 21 | # If this option is set to mouse or keyboard, the monitor option 22 | # will be ignored. 23 | follow = none 24 | 25 | ### Geometry ### 26 | 27 | # dynamic width from 0 to 300 28 | # width = (0, 300) 29 | # constant width of 300 30 | width = 300 31 | 32 | # The maximum height of a single notification, excluding the frame. 33 | height = 300 34 | 35 | # Position the notification in the top right corner 36 | origin = top-right 37 | 38 | # Offset from the origin 39 | offset = 22x48 40 | 41 | # Scale factor. It is auto-detected if value is 0. 42 | scale = 0 43 | 44 | # Maximum number of notification (0 means no limit) 45 | notification_limit = 20 46 | 47 | ### Progress bar ### 48 | 49 | # Turn on the progess bar. It appears when a progress hint is passed with 50 | # for example dunstify -h int:value:12 51 | progress_bar = true 52 | 53 | # Set the progress bar height. This includes the frame, so make sure 54 | # it's at least twice as big as the frame width. 55 | progress_bar_height = 14 56 | 57 | # Set the frame width of the progress bar 58 | progress_bar_frame_width = 0 59 | 60 | # Set the minimum width for the progress bar 61 | progress_bar_min_width = 150 62 | 63 | # Set the maximum width for the progress bar 64 | progress_bar_max_width = 300 65 | 66 | # Corner radius for the progress bar. 0 disables rounded corners. 67 | progress_bar_corner_radius = 0 68 | 69 | # Corner radius for the icon image. 70 | icon_corner_radius = 0 71 | 72 | # Show how many messages are currently hidden (because of 73 | # notification_limit). 74 | indicate_hidden = yes 75 | 76 | # The transparency of the window. Range: [0; 100]. 77 | # This option will only work if a compositing window manager is 78 | # present (e.g. xcompmgr, compiz, etc.). (X11 only) 79 | transparency = 5 80 | 81 | # Draw a line of "separator_height" pixel height between two 82 | # notifications. 83 | # Set to 0 to disable. 84 | # If gap_size is greater than 0, this setting will be ignored. 85 | separator_height = 2 86 | 87 | # Padding between text and separator. 88 | padding = 16 89 | 90 | # Horizontal padding. 91 | horizontal_padding = 16 92 | 93 | # Padding between text and icon. 94 | text_icon_padding = 0 95 | 96 | # Defines width in pixels of frame around the notification window. 97 | # Set to 0 to disable. 98 | frame_width = 2 99 | 100 | # Defines color of the frame around the notification window. 101 | frame_color = "#d4be98" 102 | 103 | # Size of gap to display between notifications - requires a compositor. 104 | # If value is greater than 0, separator_height will be ignored and a border 105 | # of size frame_width will be drawn around each notification instead. 106 | # Click events on gaps do not currently propagate to applications below. 107 | gap_size = 0 108 | 109 | # Define a color for the separator. 110 | # possible values are: 111 | # * auto: dunst tries to find a color fitting to the background; 112 | # * foreground: use the same color as the foreground; 113 | # * frame: use the same color as the frame; 114 | # * anything else will be interpreted as a X color. 115 | separator_color = frame 116 | 117 | # Sort messages by urgency. 118 | sort = yes 119 | 120 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 121 | # for longer than idle_threshold seconds. 122 | # Set to 0 to disable. 123 | # A client can set the 'transient' hint to bypass this. See the rules 124 | # section for how to disable this if necessary 125 | # idle_threshold = 120 126 | 127 | ### Text ### 128 | 129 | font = JetBrainsMono NF 12 130 | 131 | # The spacing between lines. If the height is smaller than the 132 | # font height, it will get raised to the font height. 133 | line_height = 0 134 | 135 | # Possible values are: 136 | # full: Allow a small subset of html markup in notifications: 137 | # bold 138 | # italic 139 | # strikethrough 140 | # underline 141 | # 142 | # For a complete reference see 143 | # . 144 | # 145 | # strip: This setting is provided for compatibility with some broken 146 | # clients that send markup even though it's not enabled on the 147 | # server. Dunst will try to strip the markup but the parsing is 148 | # simplistic so using this option outside of matching rules for 149 | # specific applications *IS GREATLY DISCOURAGED*. 150 | # 151 | # no: Disable markup parsing, incoming notifications will be treated as 152 | # plain text. Dunst will not advertise that it has the body-markup 153 | # capability if this is set as a global setting. 154 | # 155 | # It's important to note that markup inside the format option will be parsed 156 | # regardless of what this is set to. 157 | markup = full 158 | 159 | # The format of the message. Possible variables are: 160 | # %a appname 161 | # %s summary 162 | # %b body 163 | # %i iconname (including its path) 164 | # %I iconname (without its path) 165 | # %p progress value if set ([ 0%] to [100%]) or nothing 166 | # %n progress value if set without any extra characters 167 | # %% Literal % 168 | # Markup is allowed 169 | format = "%s\n%b" 170 | 171 | # Alignment of message text. 172 | # Possible values are "left", "center" and "right". 173 | alignment = left 174 | 175 | # Vertical alignment of message text and icon. 176 | # Possible values are "top", "center" and "bottom". 177 | vertical_alignment = center 178 | 179 | # Show age of message if message is older than show_age_threshold 180 | # seconds. 181 | # Set to -1 to disable. 182 | show_age_threshold = 60 183 | 184 | # Specify where to make an ellipsis in long lines. 185 | # Possible values are "start", "middle" and "end". 186 | ellipsize = middle 187 | 188 | # Ignore newlines '\n' in notifications. 189 | ignore_newline = no 190 | 191 | # Stack together notifications with the same content 192 | stack_duplicates = true 193 | 194 | # Hide the count of stacked notifications with the same content 195 | hide_duplicate_count = false 196 | 197 | # Display indicators for URLs (U) and actions (A). 198 | show_indicators = yes 199 | 200 | ### Icons ### 201 | 202 | # Recursive icon lookup. You can set a single theme, instead of having to 203 | # define all lookup paths. 204 | enable_recursive_icon_lookup = true 205 | 206 | # Set icon theme (only used for recursive icon lookup) 207 | # icon_theme = Adwaita 208 | # You can also set multiple icon themes, with the leftmost one being used first. 209 | icon_theme = "Gruvbox-Material-Dark-OneColored, Adwaita" 210 | 211 | # Align icons left/right/top/off 212 | icon_position = left 213 | 214 | # Scale small icons up to this size, set to 0 to disable. Helpful 215 | # for e.g. small files or high-dpi screens. In case of conflict, 216 | # max_icon_size takes precedence over this. 217 | min_icon_size = 25 218 | 219 | # Scale larger icons down to this size, set to 0 to disable 220 | max_icon_size = 128 221 | 222 | # Paths to default icons (only neccesary when not using recursive icon lookup) 223 | icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ 224 | 225 | ### History ### 226 | 227 | # Should a notification popped up from history be sticky or timeout 228 | # as if it would normally do. 229 | sticky_history = yes 230 | 231 | # Maximum amount of notifications kept in history 232 | history_length = 20 233 | 234 | ### Misc/Advanced ### 235 | 236 | # dmenu path. 237 | dmenu = /usr/bin/dmenu -p dunst: 238 | 239 | # Browser for opening urls in context menu. 240 | browser = /usr/bin/xdg-open 241 | 242 | # Always run rule-defined scripts, even if the notification is suppressed 243 | always_run_script = true 244 | 245 | # Define the title of the windows spawned by dunst 246 | title = Dunst 247 | 248 | # Define the class of the windows spawned by dunst 249 | class = Dunst 250 | 251 | # Define the corner radius of the notification window 252 | # in pixel size. If the radius is 0, you have no rounded 253 | # corners. 254 | # The radius will be automatically lowered if it exceeds half of the 255 | # notification height to avoid clipping text and/or icons. 256 | corner_radius = 0 257 | 258 | # Ignore the dbus closeNotification message. 259 | # Useful to enforce the timeout set by dunst configuration. Without this 260 | # parameter, an application may close the notification sent before the 261 | # user defined timeout. 262 | ignore_dbusclose = false 263 | 264 | ### Wayland ### 265 | # These settings are Wayland-specific. They have no effect when using X11 266 | 267 | # Uncomment this if you want to let notications appear under fullscreen 268 | # applications (default: overlay) 269 | # layer = top 270 | 271 | # Set this to true to use X11 output on Wayland. 272 | force_xwayland = false 273 | 274 | ### Legacy 275 | 276 | # Use the Xinerama extension instead of RandR for multi-monitor support. 277 | # This setting is provided for compatibility with older nVidia drivers that 278 | # do not support RandR and using it on systems that support RandR is highly 279 | # discouraged. 280 | # 281 | # By enabling this setting dunst will not be able to detect when a monitor 282 | # is connected or disconnected which might break follow mode if the screen 283 | # layout changes. 284 | force_xinerama = false 285 | 286 | ### mouse 287 | 288 | # Defines list of actions for each mouse event 289 | # Possible values are: 290 | # * none: Don't do anything. 291 | # * do_action: Invoke the action determined by the action_name rule. If there is no 292 | # such action, open the context menu. 293 | # * open_url: If the notification has exactly one url, open it. If there are multiple 294 | # ones, open the context menu. 295 | # * close_current: Close current notification. 296 | # * close_all: Close all notifications. 297 | # * context: Open context menu for the notification. 298 | # * context_all: Open context menu for all notifications. 299 | # These values can be strung together for each mouse event, and 300 | # will be executed in sequence. 301 | mouse_left_click = close_current 302 | mouse_middle_click = do_action, close_current 303 | mouse_right_click = close_all 304 | 305 | # Experimental features that may or may not work correctly. Do not expect them 306 | # to have a consistent behaviour across releases. 307 | [experimental] 308 | # Calculate the dpi to use on a per-monitor basis. 309 | # If this setting is enabled the Xft.dpi value will be ignored and instead 310 | # dunst will attempt to calculate an appropriate dpi value for each monitor 311 | # using the resolution and physical size. This might be useful in setups 312 | # where there are multiple screens with very different dpi values. 313 | per_monitor_dpi = false 314 | 315 | 316 | [urgency_low] 317 | # IMPORTANT: colors have to be defined in quotation marks. 318 | # Otherwise the "#" and following would be interpreted as a comment. 319 | background = "#282828" 320 | foreground = "#ebdbb2" 321 | timeout = 10 322 | # Icon for notifications with low urgency, uncomment to enable 323 | #default_icon = /path/to/icon 324 | 325 | [urgency_normal] 326 | background = "#282828" 327 | foreground = "#ebdbb2" 328 | timeout = 10 329 | # Icon for notifications with normal urgency, uncomment to enable 330 | #default_icon = /path/to/icon 331 | 332 | [urgency_critical] 333 | background = "#900000" 334 | foreground = "#ffffff" 335 | frame_color = "#ff0000" 336 | timeout = 0 337 | # Icon for notifications with critical urgency, uncomment to enable 338 | #default_icon = /path/to/icon 339 | 340 | # Every section that isn't one of the above is interpreted as a rules to 341 | # override settings for certain messages. 342 | # 343 | # Messages can be matched by 344 | # appname (discouraged, see desktop_entry) 345 | # body 346 | # category 347 | # desktop_entry 348 | # icon 349 | # match_transient 350 | # msg_urgency 351 | # stack_tag 352 | # summary 353 | # 354 | # and you can override the 355 | # background 356 | # foreground 357 | # format 358 | # frame_color 359 | # fullscreen 360 | # new_icon 361 | # set_stack_tag 362 | # set_transient 363 | # set_category 364 | # timeout 365 | # urgency 366 | # icon_position 367 | # skip_display 368 | # history_ignore 369 | # action_name 370 | # word_wrap 371 | # ellipsize 372 | # alignment 373 | # hide_text 374 | # 375 | # Shell-like globbing will get expanded. 376 | # 377 | # Instead of the appname filter, it's recommended to use the desktop_entry filter. 378 | # GLib based applications export their desktop-entry name. In comparison to the appname, 379 | # the desktop-entry won't get localized. 380 | # 381 | # SCRIPTING 382 | # You can specify a script that gets run when the rule matches by 383 | # setting the "script" option. 384 | # The script will be called as follows: 385 | # script appname summary body icon urgency 386 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 387 | # 388 | # NOTE: It might be helpful to run dunst -print in a terminal in order 389 | # to find fitting options for rules. 390 | 391 | # Disable the transient hint so that idle_threshold cannot be bypassed from the 392 | # client 393 | #[transient_disable] 394 | # match_transient = yes 395 | # set_transient = no 396 | # 397 | # Make the handling of transient notifications more strict by making them not 398 | # be placed in history. 399 | #[transient_history_ignore] 400 | # match_transient = yes 401 | # history_ignore = yes 402 | 403 | # fullscreen values 404 | # show: show the notifications, regardless if there is a fullscreen window opened 405 | # delay: displays the new notification, if there is no fullscreen window active 406 | # If the notification is already drawn, it won't get undrawn. 407 | # pushback: same as delay, but when switching into fullscreen, the notification will get 408 | # withdrawn from screen again and will get delayed like a new notification 409 | #[fullscreen_delay_everything] 410 | # fullscreen = delay 411 | #[fullscreen_show_critical] 412 | # msg_urgency = critical 413 | # fullscreen = show 414 | 415 | #[espeak] 416 | # summary = "*" 417 | # script = dunst_espeak.sh 418 | 419 | #[script-test] 420 | # summary = "*script*" 421 | # script = dunst_test.sh 422 | 423 | #[ignore] 424 | # # This notification will not be displayed 425 | # summary = "foobar" 426 | # skip_display = true 427 | 428 | #[history-ignore] 429 | # # This notification will not be saved in history 430 | # summary = "foobar" 431 | # history_ignore = yes 432 | 433 | #[skip-display] 434 | # # This notification will not be displayed, but will be included in the history 435 | # summary = "foobar" 436 | # skip_display = yes 437 | 438 | #[signed_on] 439 | # appname = Pidgin 440 | # summary = "*signed on*" 441 | # urgency = low 442 | # 443 | #[signed_off] 444 | # appname = Pidgin 445 | # summary = *signed off* 446 | # urgency = low 447 | # 448 | #[says] 449 | # appname = Pidgin 450 | # summary = *says* 451 | # urgency = critical 452 | # 453 | #[twitter] 454 | # appname = Pidgin 455 | # summary = *twitter.com* 456 | # urgency = normal 457 | # 458 | #[stack-volumes] 459 | # appname = "some_volume_notifiers" 460 | # set_stack_tag = "volume" 461 | # 462 | # vim: ft=cfg 463 | -------------------------------------------------------------------------------- /kitty/gruvbox-material-dark-medium.conf: -------------------------------------------------------------------------------- 1 | # source: 2 | # https://github.com/rsaihe/gruvbox-material-kitty/tree/main/colors 3 | 4 | background #282828 5 | foreground #d4be98 6 | 7 | selection_background #d4be98 8 | selection_foreground #282828 9 | 10 | cursor #a89984 11 | cursor_text_color background 12 | 13 | active_tab_background #282828 14 | active_tab_foreground #d4be98 15 | active_tab_font_style bold 16 | inactive_tab_background #282828 17 | inactive_tab_foreground #a89984 18 | inactive_tab_font_style normal 19 | 20 | # Black 21 | color0 #665c54 22 | color8 #928374 23 | 24 | # Red 25 | color1 #ea6962 26 | color9 #ea6962 27 | 28 | # Green 29 | color2 #a9b665 30 | color10 #a9b665 31 | 32 | # Yellow 33 | color3 #e78a4e 34 | color11 #d8a657 35 | 36 | # Blue 37 | color4 #7daea3 38 | color12 #7daea3 39 | 40 | # Magenta 41 | color5 #d3869b 42 | color13 #d3869b 43 | 44 | # Cyan 45 | color6 #89b482 46 | color14 #89b482 47 | 48 | # White 49 | color7 #d4be98 50 | color15 #d4be98 51 | -------------------------------------------------------------------------------- /kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:foldmethod=marker 2 | 3 | # do a `diff /usr/share/doc/kitty/kitty.conf kitty.conf` to see 4 | # the differences in configs. 5 | 6 | include gruvbox-material-dark-medium.conf 7 | 8 | #: Fonts {{{ 9 | 10 | #: kitty has very powerful font management. You can configure 11 | #: individual font faces and even specify special fonts for particular 12 | #: characters. 13 | 14 | font_family JetBrainsMono NF 15 | # bold_font auto 16 | # italic_font auto 17 | # bold_italic_font auto 18 | 19 | #: You can specify different fonts for the bold/italic/bold-italic 20 | #: variants. To get a full list of supported fonts use the `kitty 21 | #: +list-fonts` command. By default they are derived automatically, by 22 | #: the OSes font system. When bold_font or bold_italic_font is set to 23 | #: auto on macOS, the priority of bold fonts is semi-bold, bold, 24 | #: heavy. Setting them manually is useful for font families that have 25 | #: many weight variants like Book, Medium, Thick, etc. For example:: 26 | 27 | #: font_family Operator Mono Book 28 | #: bold_font Operator Mono Medium 29 | #: italic_font Operator Mono Book Italic 30 | #: bold_italic_font Operator Mono Medium Italic 31 | 32 | font_size 13.0 33 | 34 | #: Font size (in pts) 35 | 36 | # force_ltr no 37 | 38 | #: kitty does not support BIDI (bidirectional text), however, for RTL 39 | #: scripts, words are automatically displayed in RTL. That is to say, 40 | #: in an RTL script, the words "HELLO WORLD" display in kitty as 41 | #: "WORLD HELLO", and if you try to select a substring of an RTL- 42 | #: shaped string, you will get the character that would be there had 43 | #: the string been LTR. For example, assuming the Hebrew word ירושלים, 44 | #: selecting the character that on the screen appears to be ם actually 45 | #: writes into the selection buffer the character י. kitty's default 46 | #: behavior is useful in conjunction with a filter to reverse the word 47 | #: order, however, if you wish to manipulate RTL glyphs, it can be 48 | #: very challenging to work with, so this option is provided to turn 49 | #: it off. Furthermore, this option can be used with the command line 50 | #: program GNU FriBidi 51 | #: to get BIDI support, because it will force kitty to always treat 52 | #: the text as LTR, which FriBidi expects for terminals. 53 | 54 | # symbol_map 55 | 56 | #: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols 57 | 58 | #: Map the specified Unicode codepoints to a particular font. Useful 59 | #: if you need special rendering for some symbols, such as for 60 | #: Powerline. Avoids the need for patched fonts. Each Unicode code 61 | #: point is specified in the form `U+`. You 62 | #: can specify multiple code points, separated by commas and ranges 63 | #: separated by hyphens. This option can be specified multiple times. 64 | #: The syntax is:: 65 | 66 | #: symbol_map codepoints Font Family Name 67 | 68 | # narrow_symbols 69 | 70 | #: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 71 | 72 | #: Usually, for Private Use Unicode characters and some symbol/dingbat 73 | #: characters, if the character is followed by one or more spaces, 74 | #: kitty will use those extra cells to render the character larger, if 75 | #: the character in the font has a wide aspect ratio. Using this 76 | #: option you can force kitty to restrict the specified code points to 77 | #: render in the specified number of cells (defaulting to one cell). 78 | #: This option can be specified multiple times. The syntax is:: 79 | 80 | #: narrow_symbols codepoints [optionally the number of cells] 81 | 82 | # disable_ligatures never 83 | 84 | #: Choose how you want to handle multi-character ligatures. The 85 | #: default is to always render them. You can tell kitty to not render 86 | #: them when the cursor is over them by using cursor to make editing 87 | #: easier, or have kitty never render them at all by using always, if 88 | #: you don't like them. The ligature strategy can be set per-window 89 | #: either using the kitty remote control facility or by defining 90 | #: shortcuts for it in kitty.conf, for example:: 91 | 92 | #: map alt+1 disable_ligatures_in active always 93 | #: map alt+2 disable_ligatures_in all never 94 | #: map alt+3 disable_ligatures_in tab cursor 95 | 96 | #: Note that this refers to programming ligatures, typically 97 | #: implemented using the calt OpenType feature. For disabling general 98 | #: ligatures, use the font_features option. 99 | 100 | # font_features 101 | 102 | #: E.g. font_features none 103 | 104 | #: Choose exactly which OpenType features to enable or disable. This 105 | #: is useful as some fonts might have features worthwhile in a 106 | #: terminal. For example, Fira Code includes a discretionary feature, 107 | #: zero, which in that font changes the appearance of the zero (0), to 108 | #: make it more easily distinguishable from Ø. Fira Code also includes 109 | #: other discretionary features known as Stylistic Sets which have the 110 | #: tags ss01 through ss20. 111 | 112 | #: For the exact syntax to use for individual features, see the 113 | #: HarfBuzz documentation . 115 | 116 | #: Note that this code is indexed by PostScript name, and not the font 117 | #: family. This allows you to define very precise feature settings; 118 | #: e.g. you can disable a feature in the italic font but not in the 119 | #: regular font. 120 | 121 | #: On Linux, font features are first read from the FontConfig database 122 | #: and then this option is applied, so they can be configured in a 123 | #: single, central place. 124 | 125 | #: To get the PostScript name for a font, use `kitty +list-fonts 126 | #: --psnames`: 127 | 128 | #: .. code-block:: sh 129 | 130 | #: $ kitty +list-fonts --psnames | grep Fira 131 | #: Fira Code 132 | #: Fira Code Bold (FiraCode-Bold) 133 | #: Fira Code Light (FiraCode-Light) 134 | #: Fira Code Medium (FiraCode-Medium) 135 | #: Fira Code Regular (FiraCode-Regular) 136 | #: Fira Code Retina (FiraCode-Retina) 137 | 138 | #: The part in brackets is the PostScript name. 139 | 140 | #: Enable alternate zero and oldstyle numerals:: 141 | 142 | #: font_features FiraCode-Retina +zero +onum 143 | 144 | #: Enable only alternate zero in the bold font:: 145 | 146 | #: font_features FiraCode-Bold +zero 147 | 148 | #: Disable the normal ligatures, but keep the calt feature which (in 149 | #: this font) breaks up monotony:: 150 | 151 | #: font_features TT2020StyleB-Regular -liga +calt 152 | 153 | #: In conjunction with force_ltr, you may want to disable Arabic 154 | #: shaping entirely, and only look at their isolated forms if they 155 | #: show up in a document. You can do this with e.g.:: 156 | 157 | #: font_features UnifontMedium +isol -medi -fina -init 158 | 159 | # modify_font 160 | 161 | #: Modify font characteristics such as the position or thickness of 162 | #: the underline and strikethrough. The modifications can have the 163 | #: suffix px for pixels or % for percentage of original value. No 164 | #: suffix means use pts. For example:: 165 | 166 | #: modify_font underline_position -2 167 | #: modify_font underline_thickness 150% 168 | #: modify_font strikethrough_position 2px 169 | 170 | #: Additionally, you can modify the size of the cell in which each 171 | #: font glyph is rendered and the baseline at which the glyph is 172 | #: placed in the cell. For example:: 173 | 174 | #: modify_font cell_width 80% 175 | #: modify_font cell_height -2px 176 | #: modify_font baseline 3 177 | 178 | #: Note that modifying the baseline will automatically adjust the 179 | #: underline and strikethrough positions by the same amount. 180 | #: Increasing the baseline raises glyphs inside the cell and 181 | #: decreasing it lowers them. Decreasing the cell size might cause 182 | #: rendering artifacts, so use with care. 183 | 184 | # box_drawing_scale 0.001, 1, 1.5, 2 185 | 186 | #: The sizes of the lines used for the box drawing Unicode characters. 187 | #: These values are in pts. They will be scaled by the monitor DPI to 188 | #: arrive at a pixel value. There must be four values corresponding to 189 | #: thin, normal, thick, and very thick lines. 190 | 191 | # undercurl_style thin-sparse 192 | 193 | #: The style with which undercurls are rendered. This option takes the 194 | #: form (thin|thick)-(sparse|dense). Thin and thick control the 195 | #: thickness of the undercurl. Sparse and dense control how often the 196 | #: curl oscillates. With sparse the curl will peak once per character, 197 | #: with dense twice. 198 | 199 | # text_composition_strategy platform 200 | 201 | #: Control how kitty composites text glyphs onto the background color. 202 | #: The default value of platform tries for text rendering as close to 203 | #: "native" for the platform kitty is running on as possible. 204 | 205 | #: A value of legacy uses the old (pre kitty 0.28) strategy for how 206 | #: glyphs are composited. This will make dark text on light 207 | #: backgrounds look thicker and light text on dark backgrounds 208 | #: thinner. It might also make some text appear like the strokes are 209 | #: uneven. 210 | 211 | #: You can fine tune the actual contrast curve used for glyph 212 | #: composition by specifying up to two space-separated numbers for 213 | #: this setting. 214 | 215 | #: The first number is the gamma adjustment, which controls the 216 | #: thickness of dark text on light backgrounds. Increasing the value 217 | #: will make text appear thicker. The default value for this is 1.0 on 218 | #: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result 219 | #: is scaled based on the luminance difference between the background 220 | #: and the foreground. Dark text on light backgrounds receives the 221 | #: full impact of the curve while light text on dark backgrounds is 222 | #: affected very little. 223 | 224 | #: The second number is an additional multiplicative contrast. It is 225 | #: percentage ranging from 0 to 100. The default value is 0 on Linux 226 | #: and 30 on macOS. 227 | 228 | #: If you wish to achieve similar looking thickness in light and dark 229 | #: themes, a good way to experiment is start by setting the value to 230 | #: 1.0 0 and use a dark theme. Then adjust the second parameter until 231 | #: it looks good. Then switch to a light theme and adjust the first 232 | #: parameter until the perceived thickness matches the dark theme. 233 | 234 | # text_fg_override_threshold 0 235 | 236 | #: The minimum accepted difference in luminance between the foreground 237 | #: and background color, below which kitty will override the 238 | #: foreground color. It is percentage ranging from 0 to 100. If the 239 | #: difference in luminance of the foreground and background is below 240 | #: this threshold, the foreground color will be set to white if the 241 | #: background is dark or black if the background is light. The default 242 | #: value is 0, which means no overriding is performed. Useful when 243 | #: working with applications that use colors that do not contrast well 244 | #: with your preferred color scheme. 245 | 246 | #: WARNING: Some programs use characters (such as block characters) 247 | #: for graphics display and may expect to be able to set the 248 | #: foreground and background to the same color (or similar colors). 249 | #: If you see unexpected stripes, dots, lines, incorrect color, no 250 | #: color where you expect color, or any kind of graphic display 251 | #: problem try setting text_fg_override_threshold to 0 to see if this 252 | #: is the cause of the problem. 253 | 254 | #: }}} 255 | 256 | #: Cursor customization {{{ 257 | 258 | # cursor #cccccc 259 | 260 | #: Default cursor color. If set to the special value none the cursor 261 | #: will be rendered with a "reverse video" effect. It's color will be 262 | #: the color of the text in the cell it is over and the text will be 263 | #: rendered with the background color of the cell. Note that if the 264 | #: program running in the terminal sets a cursor color, this takes 265 | #: precedence. Also, the cursor colors are modified if the cell 266 | #: background and foreground colors have very low contrast. 267 | 268 | # cursor_text_color #111111 269 | 270 | #: The color of text under the cursor. If you want it rendered with 271 | #: the background color of the cell underneath instead, use the 272 | #: special keyword: background. Note that if cursor is set to none 273 | #: then this option is ignored. 274 | 275 | # cursor_shape block 276 | 277 | #: The cursor shape can be one of block, beam, underline. Note that 278 | #: when reloading the config this will be changed only if the cursor 279 | #: shape has not been set by the program running in the terminal. This 280 | #: sets the default cursor shape, applications running in the terminal 281 | #: can override it. In particular, shell integration 282 | #: in kitty sets 283 | #: the cursor shape to beam at shell prompts. You can avoid this by 284 | #: setting shell_integration to no-cursor. 285 | 286 | # cursor_beam_thickness 1.5 287 | 288 | #: The thickness of the beam cursor (in pts). 289 | 290 | # cursor_underline_thickness 2.0 291 | 292 | #: The thickness of the underline cursor (in pts). 293 | 294 | # cursor_blink_interval -1 295 | 296 | #: The interval to blink the cursor (in seconds). Set to zero to 297 | #: disable blinking. Negative values mean use system default. Note 298 | #: that the minimum interval will be limited to repaint_delay. 299 | 300 | # cursor_stop_blinking_after 15.0 301 | 302 | #: Stop blinking cursor after the specified number of seconds of 303 | #: keyboard inactivity. Set to zero to never stop blinking. 304 | 305 | #: }}} 306 | 307 | #: Scrollback {{{ 308 | 309 | # scrollback_lines 2000 310 | 311 | #: Number of lines of history to keep in memory for scrolling back. 312 | #: Memory is allocated on demand. Negative numbers are (effectively) 313 | #: infinite scrollback. Note that using very large scrollback is not 314 | #: recommended as it can slow down performance of the terminal and 315 | #: also use large amounts of RAM. Instead, consider using 316 | #: scrollback_pager_history_size. Note that on config reload if this 317 | #: is changed it will only affect newly created windows, not existing 318 | #: ones. 319 | 320 | # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 321 | 322 | #: Program with which to view scrollback in a new window. The 323 | #: scrollback buffer is passed as STDIN to this program. If you change 324 | #: it, make sure the program you use can handle ANSI escape sequences 325 | #: for colors and text formatting. INPUT_LINE_NUMBER in the command 326 | #: line above will be replaced by an integer representing which line 327 | #: should be at the top of the screen. Similarly CURSOR_LINE and 328 | #: CURSOR_COLUMN will be replaced by the current cursor position or 329 | #: set to 0 if there is no cursor, for example, when showing the last 330 | #: command output. 331 | 332 | # scrollback_pager_history_size 0 333 | 334 | #: Separate scrollback history size (in MB), used only for browsing 335 | #: the scrollback buffer with pager. This separate buffer is not 336 | #: available for interactive scrolling but will be piped to the pager 337 | #: program when viewing scrollback buffer in a separate window. The 338 | #: current implementation stores the data in UTF-8, so approximately 339 | #: 10000 lines per megabyte at 100 chars per line, for pure ASCII, 340 | #: unformatted text. A value of zero or less disables this feature. 341 | #: The maximum allowed size is 4GB. Note that on config reload if this 342 | #: is changed it will only affect newly created windows, not existing 343 | #: ones. 344 | 345 | # scrollback_fill_enlarged_window no 346 | 347 | #: Fill new space with lines from the scrollback buffer after 348 | #: enlarging a window. 349 | 350 | # wheel_scroll_multiplier 5.0 351 | 352 | #: Multiplier for the number of lines scrolled by the mouse wheel. 353 | #: Note that this is only used for low precision scrolling devices, 354 | #: not for high precision scrolling devices on platforms such as macOS 355 | #: and Wayland. Use negative numbers to change scroll direction. See 356 | #: also wheel_scroll_min_lines. 357 | 358 | # wheel_scroll_min_lines 1 359 | 360 | #: The minimum number of lines scrolled by the mouse wheel. The scroll 361 | #: multiplier wheel_scroll_multiplier only takes effect after it 362 | #: reaches this number. Note that this is only used for low precision 363 | #: scrolling devices like wheel mice that scroll by very small amounts 364 | #: when using the wheel. With a negative number, the minimum number of 365 | #: lines will always be added. 366 | 367 | # touch_scroll_multiplier 1.0 368 | 369 | #: Multiplier for the number of lines scrolled by a touchpad. Note 370 | #: that this is only used for high precision scrolling devices on 371 | #: platforms such as macOS and Wayland. Use negative numbers to change 372 | #: scroll direction. 373 | 374 | #: }}} 375 | 376 | #: Mouse {{{ 377 | 378 | # mouse_hide_wait 3.0 379 | 380 | #: Hide mouse cursor after the specified number of seconds of the 381 | #: mouse not being used. Set to zero to disable mouse cursor hiding. 382 | #: Set to a negative value to hide the mouse cursor immediately when 383 | #: typing text. Disabled by default on macOS as getting it to work 384 | #: robustly with the ever-changing sea of bugs that is Cocoa is too 385 | #: much effort. 386 | 387 | # url_color #0087bd 388 | # url_style curly 389 | 390 | #: The color and style for highlighting URLs on mouse-over. url_style 391 | #: can be one of: none, straight, double, curly, dotted, dashed. 392 | 393 | # open_url_with default 394 | 395 | #: The program to open clicked URLs. The special value default with 396 | #: first look for any URL handlers defined via the open_actions 397 | #: facility and if non 398 | #: are found, it will use the Operating System's default URL handler 399 | #: (open on macOS and xdg-open on Linux). 400 | 401 | # url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh 402 | 403 | #: The set of URL prefixes to look for when detecting a URL under the 404 | #: mouse cursor. 405 | 406 | # detect_urls yes 407 | 408 | #: Detect URLs under the mouse. Detected URLs are highlighted with an 409 | #: underline and the mouse cursor becomes a hand over them. Even if 410 | #: this option is disabled, URLs are still clickable. See also the 411 | #: underline_hyperlinks option to control how hyperlinks (as opposed 412 | #: to plain text URLs) are displayed. 413 | 414 | # url_excluded_characters 415 | 416 | #: Additional characters to be disallowed from URLs, when detecting 417 | #: URLs under the mouse cursor. By default, all characters that are 418 | #: legal in URLs are allowed. Additionally, newlines are allowed (but 419 | #: stripped). This is to accommodate programs such as mutt that add 420 | #: hard line breaks even for continued lines. \n can be added to this 421 | #: option to disable this behavior. Special characters can be 422 | #: specified using backslash escapes, to specify a backslash use a 423 | #: double backslash. 424 | 425 | # show_hyperlink_targets no 426 | 427 | #: When the mouse hovers over a terminal hyperlink, show the actual 428 | #: URL that will be activated when the hyperlink is clicked. 429 | 430 | # underline_hyperlinks hover 431 | 432 | #: Control how hyperlinks are underlined. They can either be 433 | #: underlined on mouse hover, always (i.e. permanently underlined) or 434 | #: never which means that kitty will not apply any underline styling 435 | #: to hyperlinks. Uses the url_style and url_color settings for the 436 | #: underline style. Note that reloading the config and changing this 437 | #: value to/from always will only affect text subsequently received by 438 | #: kitty. 439 | 440 | # copy_on_select no 441 | 442 | #: Copy to clipboard or a private buffer on select. With this set to 443 | #: clipboard, selecting text with the mouse will cause the text to be 444 | #: copied to clipboard. Useful on platforms such as macOS that do not 445 | #: have the concept of primary selection. You can instead specify a 446 | #: name such as a1 to copy to a private kitty buffer. Map a shortcut 447 | #: with the paste_from_buffer action to paste from this private 448 | #: buffer. For example:: 449 | 450 | #: copy_on_select a1 451 | #: map shift+cmd+v paste_from_buffer a1 452 | 453 | #: Note that copying to the clipboard is a security risk, as all 454 | #: programs, including websites open in your browser can read the 455 | #: contents of the system clipboard. 456 | 457 | # paste_actions quote-urls-at-prompt,confirm 458 | 459 | #: A comma separated list of actions to take when pasting text into 460 | #: the terminal. The supported paste actions are: 461 | 462 | #: quote-urls-at-prompt: 463 | #: If the text being pasted is a URL and the cursor is at a shell prompt, 464 | #: automatically quote the URL (needs shell_integration). 465 | #: replace-dangerous-control-codes 466 | #: Replace dangerous control codes from pasted text, without confirmation. 467 | #: replace-newline 468 | #: Replace the newline character from pasted text, without confirmation. 469 | #: confirm: 470 | #: Confirm the paste if the text to be pasted contains any terminal control codes 471 | #: as this can be dangerous, leading to code execution if the shell/program running 472 | #: in the terminal does not properly handle these. 473 | #: confirm-if-large 474 | #: Confirm the paste if it is very large (larger than 16KB) as pasting 475 | #: large amounts of text into shells can be very slow. 476 | #: filter: 477 | #: Run the filter_paste() function from the file paste-actions.py in 478 | #: the kitty config directory on the pasted text. The text returned by the 479 | #: function will be actually pasted. 480 | 481 | # strip_trailing_spaces never 482 | 483 | #: Remove spaces at the end of lines when copying to clipboard. A 484 | #: value of smart will do it when using normal selections, but not 485 | #: rectangle selections. A value of always will always do it. 486 | 487 | # select_by_word_characters @-./_~?&=%+# 488 | 489 | #: Characters considered part of a word when double clicking. In 490 | #: addition to these characters any character that is marked as an 491 | #: alphanumeric character in the Unicode database will be matched. 492 | 493 | # select_by_word_characters_forward 494 | 495 | #: Characters considered part of a word when extending the selection 496 | #: forward on double clicking. In addition to these characters any 497 | #: character that is marked as an alphanumeric character in the 498 | #: Unicode database will be matched. 499 | 500 | #: If empty (default) select_by_word_characters will be used for both 501 | #: directions. 502 | 503 | # click_interval -1.0 504 | 505 | #: The interval between successive clicks to detect double/triple 506 | #: clicks (in seconds). Negative numbers will use the system default 507 | #: instead, if available, or fallback to 0.5. 508 | 509 | # focus_follows_mouse no 510 | 511 | #: Set the active window to the window under the mouse when moving the 512 | #: mouse around. On macOS, this will also cause the OS Window under 513 | #: the mouse to be focused automatically when the mouse enters it. 514 | 515 | # pointer_shape_when_grabbed arrow 516 | 517 | #: The shape of the mouse pointer when the program running in the 518 | #: terminal grabs the mouse. 519 | 520 | # default_pointer_shape beam 521 | 522 | #: The default shape of the mouse pointer. 523 | 524 | # pointer_shape_when_dragging beam 525 | 526 | #: The default shape of the mouse pointer when dragging across text. 527 | 528 | #: Mouse actions {{{ 529 | 530 | #: Mouse buttons can be mapped to perform arbitrary actions. The 531 | #: syntax is: 532 | 533 | #: .. code-block:: none 534 | 535 | #: mouse_map button-name event-type modes action 536 | 537 | #: Where button-name is one of left, middle, right, b1 ... b8 with 538 | #: added keyboard modifiers. For example: ctrl+shift+left refers to 539 | #: holding the Ctrl+Shift keys while clicking with the left mouse 540 | #: button. The value b1 ... b8 can be used to refer to up to eight 541 | #: buttons on a mouse. 542 | 543 | #: event-type is one of press, release, doublepress, triplepress, 544 | #: click, doubleclick. modes indicates whether the action is performed 545 | #: when the mouse is grabbed by the program running in the terminal, 546 | #: or not. The values are grabbed or ungrabbed or a comma separated 547 | #: combination of them. grabbed refers to when the program running in 548 | #: the terminal has requested mouse events. Note that the click and 549 | #: double click events have a delay of click_interval to disambiguate 550 | #: from double and triple presses. 551 | 552 | #: You can run kitty with the kitty --debug-input command line option 553 | #: to see mouse events. See the builtin actions below to get a sense 554 | #: of what is possible. 555 | 556 | #: If you want to unmap an action, map it to no_op. For example, to 557 | #: disable opening of URLs with a plain click:: 558 | 559 | #: mouse_map left click ungrabbed no_op 560 | 561 | #: See all the mappable actions including mouse actions here 562 | #: . 563 | 564 | #: .. note:: 565 | #: Once a selection is started, releasing the button that started it will 566 | #: automatically end it and no release event will be dispatched. 567 | 568 | # clear_all_mouse_actions no 569 | 570 | #: Remove all mouse action definitions up to this point. Useful, for 571 | #: instance, to remove the default mouse actions. 572 | 573 | #: Click the link under the mouse or move the cursor 574 | 575 | # mouse_map left click ungrabbed mouse_handle_click selection link prompt 576 | 577 | #:: First check for a selection and if one exists do nothing. Then 578 | #:: check for a link under the mouse cursor and if one exists, click 579 | #:: it. Finally check if the click happened at the current shell 580 | #:: prompt and if so, move the cursor to the click location. Note 581 | #:: that this requires shell integration 582 | #:: to work. 583 | 584 | #: Click the link under the mouse or move the cursor even when grabbed 585 | 586 | # mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt 587 | 588 | #:: Same as above, except that the action is performed even when the 589 | #:: mouse is grabbed by the program running in the terminal. 590 | 591 | #: Click the link under the mouse cursor 592 | 593 | # mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link 594 | 595 | #:: Variant with Ctrl+Shift is present because the simple click based 596 | #:: version has an unavoidable delay of click_interval, to 597 | #:: disambiguate clicks from double clicks. 598 | 599 | #: Discard press event for link click 600 | 601 | # mouse_map ctrl+shift+left press grabbed discard_event 602 | 603 | #:: Prevent this press event from being sent to the program that has 604 | #:: grabbed the mouse, as the corresponding release event is used to 605 | #:: open a URL. 606 | 607 | #: Paste from the primary selection 608 | 609 | # mouse_map middle release ungrabbed paste_from_selection 610 | 611 | #: Start selecting text 612 | 613 | # mouse_map left press ungrabbed mouse_selection normal 614 | 615 | #: Start selecting text in a rectangle 616 | 617 | # mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle 618 | 619 | #: Select a word 620 | 621 | # mouse_map left doublepress ungrabbed mouse_selection word 622 | 623 | #: Select a line 624 | 625 | # mouse_map left triplepress ungrabbed mouse_selection line 626 | 627 | #: Select line from point 628 | 629 | # mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point 630 | 631 | #:: Select from the clicked point to the end of the line. If you 632 | #:: would like to select the word at the point and then extend to the 633 | #:: rest of the line, change line_from_point to 634 | #:: word_and_line_from_point. 635 | 636 | #: Extend the current selection 637 | 638 | # mouse_map right press ungrabbed mouse_selection extend 639 | 640 | #:: If you want only the end of the selection to be moved instead of 641 | #:: the nearest boundary, use move-end instead of extend. 642 | 643 | #: Paste from the primary selection even when grabbed 644 | 645 | # mouse_map shift+middle release ungrabbed,grabbed paste_selection 646 | # mouse_map shift+middle press grabbed discard_event 647 | 648 | #: Start selecting text even when grabbed 649 | 650 | # mouse_map shift+left press ungrabbed,grabbed mouse_selection normal 651 | 652 | #: Start selecting text in a rectangle even when grabbed 653 | 654 | # mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle 655 | 656 | #: Select a word even when grabbed 657 | 658 | # mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word 659 | 660 | #: Select a line even when grabbed 661 | 662 | # mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line 663 | 664 | #: Select line from point even when grabbed 665 | 666 | # mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point 667 | 668 | #:: Select from the clicked point to the end of the line even when 669 | #:: grabbed. If you would like to select the word at the point and 670 | #:: then extend to the rest of the line, change line_from_point to 671 | #:: word_and_line_from_point. 672 | 673 | #: Extend the current selection even when grabbed 674 | 675 | # mouse_map shift+right press ungrabbed,grabbed mouse_selection extend 676 | 677 | #: Show clicked command output in pager 678 | 679 | # mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output 680 | 681 | #:: Requires shell integration 682 | #:: to work. 683 | 684 | #: }}} 685 | 686 | #: }}} 687 | 688 | #: Performance tuning {{{ 689 | 690 | # repaint_delay 10 691 | 692 | #: Delay between screen updates (in milliseconds). Decreasing it, 693 | #: increases frames-per-second (FPS) at the cost of more CPU usage. 694 | #: The default value yields ~100 FPS which is more than sufficient for 695 | #: most uses. Note that to actually achieve 100 FPS, you have to 696 | #: either set sync_to_monitor to no or use a monitor with a high 697 | #: refresh rate. Also, to minimize latency when there is pending input 698 | #: to be processed, this option is ignored. 699 | 700 | # input_delay 3 701 | 702 | #: Delay before input from the program running in the terminal is 703 | #: processed (in milliseconds). Note that decreasing it will increase 704 | #: responsiveness, but also increase CPU usage and might cause flicker 705 | #: in full screen programs that redraw the entire screen on each loop, 706 | #: because kitty is so fast that partial screen updates will be drawn. 707 | 708 | # sync_to_monitor yes 709 | 710 | #: Sync screen updates to the refresh rate of the monitor. This 711 | #: prevents screen tearing 712 | #: when scrolling. 713 | #: However, it limits the rendering speed to the refresh rate of your 714 | #: monitor. With a very high speed mouse/high keyboard repeat rate, 715 | #: you may notice some slight input latency. If so, set this to no. 716 | 717 | #: }}} 718 | 719 | #: Terminal bell {{{ 720 | 721 | enable_audio_bell false 722 | 723 | #: The audio bell. Useful to disable it in environments that require 724 | #: silence. 725 | 726 | # visual_bell_duration 0.0 727 | 728 | #: The visual bell duration (in seconds). Flash the screen when a bell 729 | #: occurs for the specified number of seconds. Set to zero to disable. 730 | 731 | # visual_bell_color none 732 | 733 | #: The color used by visual bell. Set to none will fall back to 734 | #: selection background color. If you feel that the visual bell is too 735 | #: bright, you can set it to a darker color. 736 | 737 | # window_alert_on_bell yes 738 | 739 | #: Request window attention on bell. Makes the dock icon bounce on 740 | #: macOS or the taskbar flash on linux. 741 | 742 | # bell_on_tab "🔔 " 743 | 744 | #: Some text or a Unicode symbol to show on the tab if a window in the 745 | #: tab that does not have focus has a bell. If you want to use leading 746 | #: or trailing spaces, surround the text with quotes. See 747 | #: tab_title_template for how this is rendered. 748 | 749 | #: For backwards compatibility, values of yes, y and true are 750 | #: converted to the default bell symbol and no, n, false and none are 751 | #: converted to the empty string. 752 | 753 | # command_on_bell none 754 | 755 | #: Program to run when a bell occurs. The environment variable 756 | #: KITTY_CHILD_CMDLINE can be used to get the program running in the 757 | #: window in which the bell occurred. 758 | 759 | # bell_path none 760 | 761 | #: Path to a sound file to play as the bell sound. If set to none, the 762 | #: system default bell sound is used. Must be in a format supported by 763 | #: the operating systems sound API, such as WAV or OGA on Linux 764 | #: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) 765 | 766 | # linux_bell_theme __custom 767 | 768 | #: The XDG Sound Theme kitty will use to play the bell sound. Defaults 769 | #: to the custom theme name used by GNOME and Budgie, falling back to 770 | #: the default freedesktop theme if it does not exist. This option may 771 | #: be removed if Linux ever provides desktop-agnostic support for 772 | #: setting system sound themes. 773 | 774 | #: }}} 775 | 776 | #: Window layout {{{ 777 | 778 | # remember_window_size yes 779 | # initial_window_width 640 780 | # initial_window_height 400 781 | 782 | #: If enabled, the OS Window size will be remembered so that new 783 | #: instances of kitty will have the same size as the previous 784 | #: instance. If disabled, the OS Window will initially have size 785 | #: configured by initial_window_width/height, in pixels. You can use a 786 | #: suffix of "c" on the width/height values to have them interpreted 787 | #: as number of cells instead of pixels. 788 | 789 | # enabled_layouts * 790 | 791 | #: The enabled window layouts. A comma separated list of layout names. 792 | #: The special value all means all layouts. The first listed layout 793 | #: will be used as the startup layout. Default configuration is all 794 | #: layouts in alphabetical order. For a list of available layouts, see 795 | #: the layouts . 796 | 797 | # window_resize_step_cells 2 798 | # window_resize_step_lines 2 799 | 800 | #: The step size (in units of cell width/cell height) to use when 801 | #: resizing kitty windows in a layout with the shortcut 802 | #: start_resizing_window. The cells value is used for horizontal 803 | #: resizing, and the lines value is used for vertical resizing. 804 | 805 | # window_border_width 0.5pt 806 | 807 | #: The width of window borders. Can be either in pixels (px) or pts 808 | #: (pt). Values in pts will be rounded to the nearest number of pixels 809 | #: based on screen resolution. If not specified, the unit is assumed 810 | #: to be pts. Note that borders are displayed only when more than one 811 | #: window is visible. They are meant to separate multiple windows. 812 | 813 | # draw_minimal_borders yes 814 | 815 | #: Draw only the minimum borders needed. This means that only the 816 | #: borders that separate the window from a neighbor are drawn. Note 817 | #: that setting a non-zero window_margin_width overrides this and 818 | #: causes all borders to be drawn. 819 | 820 | # window_margin_width 0 821 | 822 | #: The window margin (in pts) (blank area outside the border). A 823 | #: single value sets all four sides. Two values set the vertical and 824 | #: horizontal sides. Three values set top, horizontal and bottom. Four 825 | #: values set top, right, bottom and left. 826 | 827 | # single_window_margin_width -1 828 | 829 | #: The window margin to use when only a single window is visible (in 830 | #: pts). Negative values will cause the value of window_margin_width 831 | #: to be used instead. A single value sets all four sides. Two values 832 | #: set the vertical and horizontal sides. Three values set top, 833 | #: horizontal and bottom. Four values set top, right, bottom and left. 834 | 835 | window_padding_width 4 836 | 837 | #: The window padding (in pts) (blank area between the text and the 838 | #: window border). A single value sets all four sides. Two values set 839 | #: the vertical and horizontal sides. Three values set top, horizontal 840 | #: and bottom. Four values set top, right, bottom and left. 841 | 842 | # single_window_padding_width -1 843 | 844 | #: The window padding to use when only a single window is visible (in 845 | #: pts). Negative values will cause the value of window_padding_width 846 | #: to be used instead. A single value sets all four sides. Two values 847 | #: set the vertical and horizontal sides. Three values set top, 848 | #: horizontal and bottom. Four values set top, right, bottom and left. 849 | 850 | # placement_strategy center 851 | 852 | #: When the window size is not an exact multiple of the cell size, the 853 | #: cell area of the terminal window will have some extra padding on 854 | #: the sides. You can control how that padding is distributed with 855 | #: this option. Using a value of center means the cell area will be 856 | #: placed centrally. A value of top-left means the padding will be 857 | #: only at the bottom and right edges. 858 | 859 | # active_border_color #00ff00 860 | 861 | #: The color for the border of the active window. Set this to none to 862 | #: not draw borders around the active window. 863 | 864 | # inactive_border_color #cccccc 865 | 866 | #: The color for the border of inactive windows. 867 | 868 | # bell_border_color #ff5a00 869 | 870 | #: The color for the border of inactive windows in which a bell has 871 | #: occurred. 872 | 873 | # inactive_text_alpha 1.0 874 | 875 | #: Fade the text in inactive windows by the specified amount (a number 876 | #: between zero and one, with zero being fully faded). 877 | 878 | # hide_window_decorations no 879 | 880 | #: Hide the window decorations (title-bar and window borders) with 881 | #: yes. On macOS, titlebar-only and titlebar-and-corners can be used 882 | #: to only hide the titlebar and the rounded corners. Whether this 883 | #: works and exactly what effect it has depends on the window 884 | #: manager/operating system. Note that the effects of changing this 885 | #: option when reloading config are undefined. When using titlebar- 886 | #: only, it is useful to also set window_margin_width and 887 | #: placement_strategy to prevent the rounded corners from clipping 888 | #: text. Or use titlebar-and-corners. 889 | 890 | # window_logo_path none 891 | 892 | #: Path to a logo image. Must be in PNG format. Relative paths are 893 | #: interpreted relative to the kitty config directory. The logo is 894 | #: displayed in a corner of every kitty window. The position is 895 | #: controlled by window_logo_position. Individual windows can be 896 | #: configured to have different logos either using the launch action 897 | #: or the remote control facility. 899 | 900 | # window_logo_position bottom-right 901 | 902 | #: Where to position the window logo in the window. The value can be 903 | #: one of: top-left, top, top-right, left, center, right, bottom-left, 904 | #: bottom, bottom-right. 905 | 906 | # window_logo_alpha 0.5 907 | 908 | #: The amount the logo should be faded into the background. With zero 909 | #: being fully faded and one being fully opaque. 910 | 911 | # resize_debounce_time 0.1 0.5 912 | 913 | #: The time to wait before redrawing the screen during a live resize 914 | #: of the OS window, when no new resize events have been received, 915 | #: i.e. when resizing is either paused or finished. On platforms such 916 | #: as macOS, where the operating system sends events corresponding to 917 | #: the start and end of a live resize, the second number is used for 918 | #: redraw-after-pause since kitty can distinguish between a pause and 919 | #: end of resizing. On such systems the first number is ignored and 920 | #: redraw is immediate after end of resize. On other systems the 921 | #: first number is used so that kitty is "ready" quickly after the end 922 | #: of resizing, while not also continuously redrawing, to save energy. 923 | 924 | # resize_in_steps no 925 | 926 | #: Resize the OS window in steps as large as the cells, instead of 927 | #: with the usual pixel accuracy. Combined with initial_window_width 928 | #: and initial_window_height in number of cells, this option can be 929 | #: used to keep the margins as small as possible when resizing the OS 930 | #: window. Note that this does not currently work on Wayland. 931 | 932 | # visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 933 | 934 | #: The list of characters for visual window selection. For example, 935 | #: for selecting a window to focus on with focus_visible_window. The 936 | #: value should be a series of unique numbers or alphabets, case 937 | #: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your 938 | #: preference as a string of characters. 939 | 940 | confirm_os_window_close 0 941 | 942 | #: Ask for confirmation when closing an OS window or a tab with at 943 | #: least this number of kitty windows in it by window manager (e.g. 944 | #: clicking the window close button or pressing the operating system 945 | #: shortcut to close windows) or by the close_tab action. A value of 946 | #: zero disables confirmation. This confirmation also applies to 947 | #: requests to quit the entire application (all OS windows, via the 948 | #: quit action). Negative values are converted to positive ones, 949 | #: however, with shell_integration enabled, using negative values 950 | #: means windows sitting at a shell prompt are not counted, only 951 | #: windows where some command is currently running. Note that if you 952 | #: want confirmation when closing individual windows, you can map the 953 | #: close_window_with_confirmation action. 954 | 955 | #: }}} 956 | 957 | #: Tab bar {{{ 958 | 959 | # tab_bar_edge bottom 960 | 961 | #: The edge to show the tab bar on, top or bottom. 962 | 963 | # tab_bar_margin_width 0.0 964 | 965 | #: The margin to the left and right of the tab bar (in pts). 966 | 967 | # tab_bar_margin_height 0.0 0.0 968 | 969 | #: The margin above and below the tab bar (in pts). The first number 970 | #: is the margin between the edge of the OS Window and the tab bar. 971 | #: The second number is the margin between the tab bar and the 972 | #: contents of the current tab. 973 | 974 | # tab_bar_style fade 975 | 976 | #: The tab bar style, can be one of: 977 | 978 | #: fade 979 | #: Each tab's edges fade into the background color. (See also tab_fade) 980 | #: slant 981 | #: Tabs look like the tabs in a physical file. 982 | #: separator 983 | #: Tabs are separated by a configurable separator. (See also 984 | #: tab_separator) 985 | #: powerline 986 | #: Tabs are shown as a continuous line with "fancy" separators. 987 | #: (See also tab_powerline_style) 988 | #: custom 989 | #: A user-supplied Python function called draw_tab is loaded from the file 990 | #: tab_bar.py in the kitty config directory. For examples of how to 991 | #: write such a function, see the functions named draw_tab_with_* in 992 | #: kitty's source code: kitty/tab_bar.py. See also 993 | #: this discussion 994 | #: for examples from kitty users. 995 | #: hidden 996 | #: The tab bar is hidden. If you use this, you might want to create 997 | #: a mapping for the select_tab action which presents you with a list of 998 | #: tabs and allows for easy switching to a tab. 999 | 1000 | # tab_bar_align left 1001 | 1002 | #: The horizontal alignment of the tab bar, can be one of: left, 1003 | #: center, right. 1004 | 1005 | # tab_bar_min_tabs 2 1006 | 1007 | #: The minimum number of tabs that must exist before the tab bar is 1008 | #: shown. 1009 | 1010 | # tab_switch_strategy previous 1011 | 1012 | #: The algorithm to use when switching to a tab when the current tab 1013 | #: is closed. The default of previous will switch to the last used 1014 | #: tab. A value of left will switch to the tab to the left of the 1015 | #: closed tab. A value of right will switch to the tab to the right of 1016 | #: the closed tab. A value of last will switch to the right-most tab. 1017 | 1018 | # tab_fade 0.25 0.5 0.75 1 1019 | 1020 | #: Control how each tab fades into the background when using fade for 1021 | #: the tab_bar_style. Each number is an alpha (between zero and one) 1022 | #: that controls how much the corresponding cell fades into the 1023 | #: background, with zero being no fade and one being full fade. You 1024 | #: can change the number of cells used by adding/removing entries to 1025 | #: this list. 1026 | 1027 | # tab_separator " ┇" 1028 | 1029 | #: The separator between tabs in the tab bar when using separator as 1030 | #: the tab_bar_style. 1031 | 1032 | # tab_powerline_style angled 1033 | 1034 | #: The powerline separator style between tabs in the tab bar when 1035 | #: using powerline as the tab_bar_style, can be one of: angled, 1036 | #: slanted, round. 1037 | 1038 | # tab_activity_symbol none 1039 | 1040 | #: Some text or a Unicode symbol to show on the tab if a window in the 1041 | #: tab that does not have focus has some activity. If you want to use 1042 | #: leading or trailing spaces, surround the text with quotes. See 1043 | #: tab_title_template for how this is rendered. 1044 | 1045 | # tab_title_max_length 0 1046 | 1047 | #: The maximum number of cells that can be used to render the text in 1048 | #: a tab. A value of zero means that no limit is applied. 1049 | 1050 | # tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" 1051 | 1052 | #: A template to render the tab title. The default just renders the 1053 | #: title with optional symbols for bell and activity. If you wish to 1054 | #: include the tab-index as well, use something like: {index}:{title}. 1055 | #: Useful if you have shortcuts mapped for goto_tab N. If you prefer 1056 | #: to see the index as a superscript, use {sup.index}. All data 1057 | #: available is: 1058 | 1059 | #: title 1060 | #: The current tab title. 1061 | #: index 1062 | #: The tab index usable with goto_tab N goto_tab shortcuts. 1063 | #: layout_name 1064 | #: The current layout name. 1065 | #: num_windows 1066 | #: The number of windows in the tab. 1067 | #: num_window_groups 1068 | #: The number of window groups (a window group is a window and all of its overlay windows) in the tab. 1069 | #: tab.active_wd 1070 | #: The working directory of the currently active window in the tab 1071 | #: (expensive, requires syscall). Use active_oldest_wd to get 1072 | #: the directory of the oldest foreground process rather than the newest. 1073 | #: tab.active_exe 1074 | #: The name of the executable running in the foreground of the currently 1075 | #: active window in the tab (expensive, requires syscall). Use 1076 | #: active_oldest_exe for the oldest foreground process. 1077 | #: max_title_length 1078 | #: The maximum title length available. 1079 | 1080 | #: Note that formatting is done by Python's string formatting 1081 | #: machinery, so you can use, for instance, {layout_name[:2].upper()} 1082 | #: to show only the first two letters of the layout name, upper-cased. 1083 | #: If you want to style the text, you can use styling directives, for 1084 | #: example: 1085 | #: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. 1086 | #: Similarly, for bold and italic: 1087 | #: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. 1088 | #: Note that for backward compatibility, if {bell_symbol} or 1089 | #: {activity_symbol} are not present in the template, they are 1090 | #: prepended to it. 1091 | 1092 | # active_tab_title_template none 1093 | 1094 | #: Template to use for active tabs. If not specified falls back to 1095 | #: tab_title_template. 1096 | 1097 | # active_tab_foreground #000 1098 | # active_tab_background #eee 1099 | # active_tab_font_style bold-italic 1100 | # inactive_tab_foreground #444 1101 | # inactive_tab_background #999 1102 | # inactive_tab_font_style normal 1103 | 1104 | #: Tab bar colors and styles. 1105 | 1106 | # tab_bar_background none 1107 | 1108 | #: Background color for the tab bar. Defaults to using the terminal 1109 | #: background color. 1110 | 1111 | # tab_bar_margin_color none 1112 | 1113 | #: Color for the tab bar margin area. Defaults to using the terminal 1114 | #: background color for margins above and below the tab bar. For side 1115 | #: margins the default color is chosen to match the background color 1116 | #: of the neighboring tab. 1117 | 1118 | #: }}} 1119 | 1120 | #: Color scheme {{{ 1121 | 1122 | # foreground #dddddd 1123 | # background #000000 1124 | 1125 | #: The foreground and background colors. 1126 | 1127 | background_opacity 0.95 1128 | 1129 | #: The opacity of the background. A number between zero and one, where 1130 | #: one is opaque and zero is fully transparent. This will only work if 1131 | #: supported by the OS (for instance, when using a compositor under 1132 | #: X11). Note that it only sets the background color's opacity in 1133 | #: cells that have the same background color as the default terminal 1134 | #: background, so that things like the status bar in vim, powerline 1135 | #: prompts, etc. still look good. But it means that if you use a color 1136 | #: theme with a background color in your editor, it will not be 1137 | #: rendered as transparent. Instead you should change the default 1138 | #: background color in your kitty config and not use a background 1139 | #: color in the editor color scheme. Or use the escape codes to set 1140 | #: the terminals default colors in a shell script to launch your 1141 | #: editor. Be aware that using a value less than 1.0 is a (possibly 1142 | #: significant) performance hit. When using a low value for this 1143 | #: setting, it is desirable that you set the background color to a 1144 | #: color the matches the general color of the desktop background, for 1145 | #: best text rendering. If you want to dynamically change 1146 | #: transparency of windows, set dynamic_background_opacity to yes 1147 | #: (this is off by default as it has a performance cost). Changing 1148 | #: this option when reloading the config will only work if 1149 | #: dynamic_background_opacity was enabled in the original config. 1150 | 1151 | # background_blur 0 1152 | 1153 | #: Set to a positive value to enable background blur (blurring of the 1154 | #: visuals behind a transparent window) on platforms that support it. 1155 | #: Only takes effect when background_opacity is less than one. On 1156 | #: macOS, this will also control the blur radius (amount of blurring). 1157 | #: Setting it to too high a value will cause severe performance issues 1158 | #: and/or rendering artifacts. Usually, values up to 64 work well. 1159 | #: Note that this might cause performance issues, depending on how the 1160 | #: platform implements it, so use with care. Currently supported on 1161 | #: macOS and KDE under X11. 1162 | 1163 | # background_image none 1164 | 1165 | #: Path to a background image. Must be in PNG format. 1166 | 1167 | # background_image_layout tiled 1168 | 1169 | #: Whether to tile, scale or clamp the background image. The value can 1170 | #: be one of tiled, mirror-tiled, scaled, clamped, centered or 1171 | #: cscaled. The scaled and cscaled values scale the image to the 1172 | #: window size, with cscaled preserving the image aspect ratio. 1173 | 1174 | # background_image_linear no 1175 | 1176 | #: When background image is scaled, whether linear interpolation 1177 | #: should be used. 1178 | 1179 | # dynamic_background_opacity no 1180 | 1181 | #: Allow changing of the background_opacity dynamically, using either 1182 | #: keyboard shortcuts (increase_background_opacity and 1183 | #: decrease_background_opacity) or the remote control facility. 1184 | #: Changing this option by reloading the config is not supported. 1185 | 1186 | # background_tint 0.0 1187 | 1188 | #: How much to tint the background image by the background color. This 1189 | #: option makes it easier to read the text. Tinting is done using the 1190 | #: current background color for each window. This option applies only 1191 | #: if background_opacity is set and transparent windows are supported 1192 | #: or background_image is set. 1193 | 1194 | # background_tint_gaps 1.0 1195 | 1196 | #: How much to tint the background image at the window gaps by the 1197 | #: background color, after applying background_tint. Since this is 1198 | #: multiplicative with background_tint, it can be used to lighten the 1199 | #: tint over the window gaps for a *separated* look. 1200 | 1201 | # dim_opacity 0.4 1202 | 1203 | #: How much to dim text that has the DIM/FAINT attribute set. One 1204 | #: means no dimming and zero means fully dimmed (i.e. invisible). 1205 | 1206 | # selection_foreground #000000 1207 | # selection_background #fffacd 1208 | 1209 | #: The foreground and background colors for text selected with the 1210 | #: mouse. Setting both of these to none will cause a "reverse video" 1211 | #: effect for selections, where the selection will be the cell text 1212 | #: color and the text will become the cell background color. Setting 1213 | #: only selection_foreground to none will cause the foreground color 1214 | #: to be used unchanged. Note that these colors can be overridden by 1215 | #: the program running in the terminal. 1216 | 1217 | #: The color table {{{ 1218 | 1219 | #: The 256 terminal colors. There are 8 basic colors, each color has a 1220 | #: dull and bright version, for the first 16 colors. You can set the 1221 | #: remaining 240 colors as color16 to color255. 1222 | 1223 | # color0 #000000 1224 | # color8 #767676 1225 | 1226 | #: black 1227 | 1228 | # color1 #cc0403 1229 | # color9 #f2201f 1230 | 1231 | #: red 1232 | 1233 | # color2 #19cb00 1234 | # color10 #23fd00 1235 | 1236 | #: green 1237 | 1238 | # color3 #cecb00 1239 | # color11 #fffd00 1240 | 1241 | #: yellow 1242 | 1243 | # color4 #0d73cc 1244 | # color12 #1a8fff 1245 | 1246 | #: blue 1247 | 1248 | # color5 #cb1ed1 1249 | # color13 #fd28ff 1250 | 1251 | #: magenta 1252 | 1253 | # color6 #0dcdcd 1254 | # color14 #14ffff 1255 | 1256 | #: cyan 1257 | 1258 | # color7 #dddddd 1259 | # color15 #ffffff 1260 | 1261 | #: white 1262 | 1263 | # mark1_foreground black 1264 | 1265 | #: Color for marks of type 1 1266 | 1267 | # mark1_background #98d3cb 1268 | 1269 | #: Color for marks of type 1 (light steel blue) 1270 | 1271 | # mark2_foreground black 1272 | 1273 | #: Color for marks of type 2 1274 | 1275 | # mark2_background #f2dcd3 1276 | 1277 | #: Color for marks of type 1 (beige) 1278 | 1279 | # mark3_foreground black 1280 | 1281 | #: Color for marks of type 3 1282 | 1283 | # mark3_background #f274bc 1284 | 1285 | #: Color for marks of type 3 (violet) 1286 | 1287 | #: }}} 1288 | 1289 | #: }}} 1290 | 1291 | #: Advanced {{{ 1292 | 1293 | # shell . 1294 | 1295 | #: The shell program to execute. The default value of . means to use 1296 | #: whatever shell is set as the default shell for the current user. 1297 | #: Note that on macOS if you change this, you might need to add 1298 | #: --login and --interactive to ensure that the shell starts in 1299 | #: interactive mode and reads its startup rc files. Environment 1300 | #: variables are expanded in this setting. 1301 | 1302 | # editor . 1303 | 1304 | #: The terminal based text editor (such as vim or nano) to use when 1305 | #: editing the kitty config file or similar tasks. 1306 | 1307 | #: The default value of . means to use the environment variables 1308 | #: VISUAL and EDITOR in that order. If these variables aren't set, 1309 | #: kitty will run your shell ($SHELL -l -i -c env) to see if your 1310 | #: shell startup rc files set VISUAL or EDITOR. If that doesn't work, 1311 | #: kitty will cycle through various known editors (vim, emacs, etc.) 1312 | #: and take the first one that exists on your system. 1313 | 1314 | # close_on_child_death no 1315 | 1316 | #: Close the window when the child process (shell) exits. With the 1317 | #: default value no, the terminal will remain open when the child 1318 | #: exits as long as there are still processes outputting to the 1319 | #: terminal (for example disowned or backgrounded processes). When 1320 | #: enabled with yes, the window will close as soon as the child 1321 | #: process exits. Note that setting it to yes means that any 1322 | #: background processes still using the terminal can fail silently 1323 | #: because their stdout/stderr/stdin no longer work. 1324 | 1325 | # remote_control_password 1326 | 1327 | #: Allow other programs to control kitty using passwords. This option 1328 | #: can be specified multiple times to add multiple passwords. If no 1329 | #: passwords are present kitty will ask the user for permission if a 1330 | #: program tries to use remote control with a password. A password can 1331 | #: also *optionally* be associated with a set of allowed remote 1332 | #: control actions. For example:: 1333 | 1334 | #: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab 1335 | 1336 | #: Only the specified actions will be allowed when using this 1337 | #: password. Glob patterns can be used too, for example:: 1338 | 1339 | #: remote_control_password "my passphrase" set-tab-* resize-* 1340 | 1341 | #: To get a list of available actions, run:: 1342 | 1343 | #: kitten @ --help 1344 | 1345 | #: A set of actions to be allowed when no password is sent can be 1346 | #: specified by using an empty password. For example:: 1347 | 1348 | #: remote_control_password "" *-colors 1349 | 1350 | #: Finally, the path to a python module can be specified that provides 1351 | #: a function is_cmd_allowed that is used to check every remote 1352 | #: control command. For example:: 1353 | 1354 | #: remote_control_password "my passphrase" my_rc_command_checker.py 1355 | 1356 | #: Relative paths are resolved from the kitty configuration directory. 1357 | #: See rc_custom_auth for details. 1359 | 1360 | # allow_remote_control no 1361 | 1362 | #: Allow other programs to control kitty. If you turn this on, other 1363 | #: programs can control all aspects of kitty, including sending text 1364 | #: to kitty windows, opening new windows, closing windows, reading the 1365 | #: content of windows, etc. Note that this even works over SSH 1366 | #: connections. The default setting of no prevents any form of remote 1367 | #: control. The meaning of the various values are: 1368 | 1369 | #: password 1370 | #: Remote control requests received over both the TTY device and the socket 1371 | #: are confirmed based on passwords, see remote_control_password. 1372 | 1373 | #: socket-only 1374 | #: Remote control requests received over a socket are accepted 1375 | #: unconditionally. Requests received over the TTY are denied. 1376 | #: See listen_on. 1377 | 1378 | #: socket 1379 | #: Remote control requests received over a socket are accepted 1380 | #: unconditionally. Requests received over the TTY are confirmed based on 1381 | #: password. 1382 | 1383 | #: no 1384 | #: Remote control is completely disabled. 1385 | 1386 | #: yes 1387 | #: Remote control requests are always accepted. 1388 | 1389 | # listen_on none 1390 | 1391 | #: Listen to the specified socket for remote control connections. Note 1392 | #: that this will apply to all kitty instances. It can be overridden 1393 | #: by the kitty --listen-on command line option. For UNIX sockets, 1394 | #: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). 1395 | #: Environment variables are expanded and relative paths are resolved 1396 | #: with respect to the temporary directory. If {kitty_pid} is present, 1397 | #: then it is replaced by the PID of the kitty process, otherwise the 1398 | #: PID of the kitty process is appended to the value, with a hyphen. 1399 | #: For TCP sockets such as tcp:localhost:0 a random port is always 1400 | #: used even if a non-zero port number is specified. See the help for 1401 | #: kitty --listen-on for more details. Note that this will be ignored 1402 | #: unless allow_remote_control is set to either: yes, socket or 1403 | #: socket-only. Changing this option by reloading the config is not 1404 | #: supported. 1405 | 1406 | # env 1407 | 1408 | #: Specify the environment variables to be set in all child processes. 1409 | #: Using the name with an equal sign (e.g. env VAR=) will set it to 1410 | #: the empty string. Specifying only the name (e.g. env VAR) will 1411 | #: remove the variable from the child process' environment. Note that 1412 | #: environment variables are expanded recursively, for example:: 1413 | 1414 | #: env VAR1=a 1415 | #: env VAR2=${HOME}/${VAR1}/b 1416 | 1417 | #: The value of VAR2 will be /a/b. 1418 | 1419 | # watcher 1420 | 1421 | #: Path to python file which will be loaded for watchers 1422 | #: . Can be 1423 | #: specified more than once to load multiple watchers. The watchers 1424 | #: will be added to every kitty window. Relative paths are resolved 1425 | #: relative to the kitty config directory. Note that reloading the 1426 | #: config will only affect windows created after the reload. 1427 | 1428 | # exe_search_path 1429 | 1430 | #: Control where kitty finds the programs to run. The default search 1431 | #: order is: First search the system wide PATH, then ~/.local/bin and 1432 | #: ~/bin. If still not found, the PATH defined in the login shell 1433 | #: after sourcing all its startup files is tried. Finally, if present, 1434 | #: the PATH specified by the env option is tried. 1435 | 1436 | #: This option allows you to prepend, append, or remove paths from 1437 | #: this search order. It can be specified multiple times for multiple 1438 | #: paths. A simple path will be prepended to the search order. A path 1439 | #: that starts with the + sign will be append to the search order, 1440 | #: after ~/bin above. A path that starts with the - sign will be 1441 | #: removed from the entire search order. For example:: 1442 | 1443 | #: exe_search_path /some/prepended/path 1444 | #: exe_search_path +/some/appended/path 1445 | #: exe_search_path -/some/excluded/path 1446 | 1447 | # update_check_interval 24 1448 | 1449 | #: The interval to periodically check if an update to kitty is 1450 | #: available (in hours). If an update is found, a system notification 1451 | #: is displayed informing you of the available update. The default is 1452 | #: to check every 24 hours, set to zero to disable. Update checking is 1453 | #: only done by the official binary builds. Distro packages or source 1454 | #: builds do not do update checking. Changing this option by reloading 1455 | #: the config is not supported. 1456 | 1457 | # startup_session none 1458 | 1459 | #: Path to a session file to use for all kitty instances. Can be 1460 | #: overridden by using the kitty --session =none command line option 1461 | #: for individual instances. See sessions 1462 | #: in the kitty 1463 | #: documentation for details. Note that relative paths are interpreted 1464 | #: with respect to the kitty config directory. Environment variables 1465 | #: in the path are expanded. Changing this option by reloading the 1466 | #: config is not supported. 1467 | 1468 | # clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask 1469 | 1470 | #: Allow programs running in kitty to read and write from the 1471 | #: clipboard. You can control exactly which actions are allowed. The 1472 | #: possible actions are: write-clipboard, read-clipboard, write- 1473 | #: primary, read-primary, read-clipboard-ask, read-primary-ask. The 1474 | #: default is to allow writing to the clipboard and primary selection 1475 | #: and to ask for permission when a program tries to read from the 1476 | #: clipboard. Note that disabling the read confirmation is a security 1477 | #: risk as it means that any program, even the ones running on a 1478 | #: remote server via SSH can read your clipboard. See also 1479 | #: clipboard_max_size. 1480 | 1481 | # clipboard_max_size 512 1482 | 1483 | #: The maximum size (in MB) of data from programs running in kitty 1484 | #: that will be stored for writing to the system clipboard. A value of 1485 | #: zero means no size limit is applied. See also clipboard_control. 1486 | 1487 | # file_transfer_confirmation_bypass 1488 | 1489 | #: The password that can be supplied to the file transfer kitten 1490 | #: to skip the 1491 | #: transfer confirmation prompt. This should only be used when 1492 | #: initiating transfers from trusted computers, over trusted networks 1493 | #: or encrypted transports, as it allows any programs running on the 1494 | #: remote machine to read/write to the local filesystem, without 1495 | #: permission. 1496 | 1497 | # allow_hyperlinks yes 1498 | 1499 | #: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 1500 | #: escape sequences are ignored. Otherwise they become clickable 1501 | #: links, that you can click with the mouse or by using the hints 1502 | #: kitten . The 1503 | #: special value of ask means that kitty will ask before opening the 1504 | #: link when clicked. 1505 | 1506 | # shell_integration enabled 1507 | 1508 | #: Enable shell integration on supported shells. This enables features 1509 | #: such as jumping to previous prompts, browsing the output of the 1510 | #: previous command in a pager, etc. on supported shells. Set to 1511 | #: disabled to turn off shell integration, completely. It is also 1512 | #: possible to disable individual features, set to a space separated 1513 | #: list of these values: no-rc, no-cursor, no-title, no-cwd, no- 1514 | #: prompt-mark, no-complete, no-sudo. See Shell integration 1515 | #: for details. 1516 | 1517 | # allow_cloning ask 1518 | 1519 | #: Control whether programs running in the terminal can request new 1520 | #: windows to be created. The canonical example is clone-in-kitty 1521 | #: . 1522 | #: By default, kitty will ask for permission for each clone request. 1523 | #: Allowing cloning unconditionally gives programs running in the 1524 | #: terminal (including over SSH) permission to execute arbitrary code, 1525 | #: as the user who is running the terminal, on the computer that the 1526 | #: terminal is running on. 1527 | 1528 | # clone_source_strategies venv,conda,env_var,path 1529 | 1530 | #: Control what shell code is sourced when running clone-in-kitty in 1531 | #: the newly cloned window. The supported strategies are: 1532 | 1533 | #: venv 1534 | #: Source the file $VIRTUAL_ENV/bin/activate. This is used by the 1535 | #: Python stdlib venv module and allows cloning venvs automatically. 1536 | #: conda 1537 | #: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual 1538 | #: environments created by conda. 1539 | #: env_var 1540 | #: Execute the contents of the environment variable 1541 | #: KITTY_CLONE_SOURCE_CODE with eval. 1542 | #: path 1543 | #: Source the file pointed to by the environment variable 1544 | #: KITTY_CLONE_SOURCE_PATH. 1545 | 1546 | #: This option must be a comma separated list of the above values. 1547 | #: Only the first valid match, in the order specified, is sourced. 1548 | 1549 | # term xterm-kitty 1550 | 1551 | #: The value of the TERM environment variable to set. Changing this 1552 | #: can break many terminal programs, only change it if you know what 1553 | #: you are doing, not because you read some advice on "Stack Overflow" 1554 | #: to change it. The TERM variable is used by various programs to get 1555 | #: information about the capabilities and behavior of the terminal. If 1556 | #: you change it, depending on what programs you run, and how 1557 | #: different the terminal you are changing it to is, various things 1558 | #: from key-presses, to colors, to various advanced features may not 1559 | #: work. Changing this option by reloading the config will only affect 1560 | #: newly created windows. 1561 | 1562 | # forward_stdio no 1563 | 1564 | #: Forward STDOUT and STDERR of the kitty process to child processes 1565 | #: as file descriptors 3 and 4. This is useful for debugging as it 1566 | #: allows child processes to print to kitty's STDOUT directly. For 1567 | #: example, echo hello world >&3 in a shell will print to the parent 1568 | #: kitty's STDOUT. When enabled, this also sets the 1569 | #: KITTY_STDIO_FORWARDED=3 environment variable so child processes 1570 | #: know about the forwarding. 1571 | 1572 | # menu_map 1573 | 1574 | #: Specify entries for various menus in kitty. Currently only the 1575 | #: global menubar on macOS is supported. For example:: 1576 | 1577 | #: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" 1578 | 1579 | #: This will create a menu entry named "Launch something special" in 1580 | #: an "Actions" menu in the macOS global menubar. Sub-menus can be 1581 | #: created by adding more levels separated by ::. 1582 | 1583 | #: }}} 1584 | 1585 | #: OS specific tweaks {{{ 1586 | 1587 | # wayland_titlebar_color system 1588 | 1589 | #: The color of the kitty window's titlebar on Wayland systems with 1590 | #: client side window decorations such as GNOME. A value of system 1591 | #: means to use the default system color, a value of background means 1592 | #: to use the background color of the currently active window and 1593 | #: finally you can use an arbitrary color, such as #12af59 or red. 1594 | 1595 | # macos_titlebar_color system 1596 | 1597 | #: The color of the kitty window's titlebar on macOS. A value of 1598 | #: system means to use the default system color, light or dark can 1599 | #: also be used to set it explicitly. A value of background means to 1600 | #: use the background color of the currently active window and finally 1601 | #: you can use an arbitrary color, such as #12af59 or red. WARNING: 1602 | #: This option works by using a hack when arbitrary color (or 1603 | #: background) is configured, as there is no proper Cocoa API for it. 1604 | #: It sets the background color of the entire window and makes the 1605 | #: titlebar transparent. As such it is incompatible with 1606 | #: background_opacity. If you want to use both, you are probably 1607 | #: better off just hiding the titlebar with hide_window_decorations. 1608 | 1609 | # macos_option_as_alt no 1610 | 1611 | #: Use the Option key as an Alt key on macOS. With this set to no, 1612 | #: kitty will use the macOS native Option+Key to enter Unicode 1613 | #: character behavior. This will break any Alt+Key keyboard shortcuts 1614 | #: in your terminal programs, but you can use the macOS Unicode input 1615 | #: technique. You can use the values: left, right or both to use only 1616 | #: the left, right or both Option keys as Alt, instead. Note that 1617 | #: kitty itself always treats Option the same as Alt. This means you 1618 | #: cannot use this option to configure different kitty shortcuts for 1619 | #: Option+Key vs. Alt+Key. Also, any kitty shortcuts using 1620 | #: Option/Alt+Key will take priority, so that any such key presses 1621 | #: will not be passed to terminal programs running inside kitty. 1622 | #: Changing this option by reloading the config is not supported. 1623 | 1624 | # macos_hide_from_tasks no 1625 | 1626 | #: Hide the kitty window from running tasks on macOS (⌘+Tab and the 1627 | #: Dock). Changing this option by reloading the config is not 1628 | #: supported. 1629 | 1630 | # macos_quit_when_last_window_closed no 1631 | 1632 | #: Have kitty quit when all the top-level windows are closed on macOS. 1633 | #: By default, kitty will stay running, even with no open windows, as 1634 | #: is the expected behavior on macOS. 1635 | 1636 | # macos_window_resizable yes 1637 | 1638 | #: Disable this if you want kitty top-level OS windows to not be 1639 | #: resizable on macOS. 1640 | 1641 | # macos_thicken_font 0 1642 | 1643 | #: Draw an extra border around the font with the given width, to 1644 | #: increase legibility at small font sizes on macOS. For example, a 1645 | #: value of 0.75 will result in rendering that looks similar to sub- 1646 | #: pixel antialiasing at common font sizes. Note that in modern kitty, 1647 | #: this option is obsolete (although still supported). Consider using 1648 | #: text_composition_strategy instead. 1649 | 1650 | # macos_traditional_fullscreen no 1651 | 1652 | #: Use the macOS traditional full-screen transition, that is faster, 1653 | #: but less pretty. 1654 | 1655 | # macos_show_window_title_in all 1656 | 1657 | #: Control where the window title is displayed on macOS. A value of 1658 | #: window will show the title of the currently active window at the 1659 | #: top of the macOS window. A value of menubar will show the title of 1660 | #: the currently active window in the macOS global menu bar, making 1661 | #: use of otherwise wasted space. A value of all will show the title 1662 | #: in both places, and none hides the title. See 1663 | #: macos_menubar_title_max_length for how to control the length of the 1664 | #: title in the menu bar. 1665 | 1666 | # macos_menubar_title_max_length 0 1667 | 1668 | #: The maximum number of characters from the window title to show in 1669 | #: the macOS global menu bar. Values less than one means that there is 1670 | #: no maximum limit. 1671 | 1672 | # macos_custom_beam_cursor no 1673 | 1674 | #: Use a custom mouse cursor for macOS that is easier to see on both 1675 | #: light and dark backgrounds. Nowadays, the default macOS cursor 1676 | #: already comes with a white border. WARNING: this might make your 1677 | #: mouse cursor invisible on dual GPU machines. Changing this option 1678 | #: by reloading the config is not supported. 1679 | 1680 | # macos_colorspace srgb 1681 | 1682 | #: The colorspace in which to interpret terminal colors. The default 1683 | #: of srgb will cause colors to match those seen in web browsers. The 1684 | #: value of default will use whatever the native colorspace of the 1685 | #: display is. The value of displayp3 will use Apple's special 1686 | #: snowflake display P3 color space, which will result in over 1687 | #: saturated (brighter) colors with some color shift. Reloading 1688 | #: configuration will change this value only for newly created OS 1689 | #: windows. 1690 | 1691 | # linux_display_server auto 1692 | 1693 | #: Choose between Wayland and X11 backends. By default, an appropriate 1694 | #: backend based on the system state is chosen automatically. Set it 1695 | #: to x11 or wayland to force the choice. Changing this option by 1696 | #: reloading the config is not supported. 1697 | 1698 | #: }}} 1699 | 1700 | #: Keyboard shortcuts {{{ 1701 | 1702 | #: Keys are identified simply by their lowercase Unicode characters. 1703 | #: For example: a for the A key, [ for the left square bracket key, 1704 | #: etc. For functional keys, such as Enter or Escape, the names are 1705 | #: present at Functional key definitions 1706 | #: . 1707 | #: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt 1708 | #: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods 1709 | #: 1710 | 1711 | #: On Linux you can also use XKB key names to bind keys that are not 1712 | #: supported by GLFW. See XKB keys 1713 | #: for a list of key names. The name to use is the part 1715 | #: after the XKB_KEY_ prefix. Note that you can only use an XKB key 1716 | #: name for keys that are not known as GLFW keys. 1717 | 1718 | #: Finally, you can use raw system key codes to map keys, again only 1719 | #: for keys that are not known as GLFW keys. To see the system key 1720 | #: code for a key, start kitty with the kitty --debug-input option, 1721 | #: kitty will output some debug text for every key event. In that text 1722 | #: look for native_code, the value of that becomes the key name in the 1723 | #: shortcut. For example: 1724 | 1725 | #: .. code-block:: none 1726 | 1727 | #: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a' 1728 | 1729 | #: Here, the key name for the A key is 0x61 and you can use it with:: 1730 | 1731 | #: map ctrl+0x61 something 1732 | 1733 | #: to map Ctrl+A to something. 1734 | 1735 | #: You can use the special action no_op to unmap a keyboard shortcut 1736 | #: that is assigned in the default configuration:: 1737 | 1738 | #: map kitty_mod+space no_op 1739 | 1740 | #: If you would like kitty to completely ignore a key event, not even 1741 | #: sending it to the program running in the terminal, map it to 1742 | #: discard_event:: 1743 | 1744 | #: map kitty_mod+f1 discard_event 1745 | 1746 | #: You can combine multiple actions to be triggered by a single 1747 | #: shortcut with combine action, using the syntax below:: 1748 | 1749 | #: map key combine action1 action2 action3 ... 1750 | 1751 | #: For example:: 1752 | 1753 | #: map kitty_mod+e combine : new_window : next_layout 1754 | 1755 | #: This will create a new window and switch to the next available 1756 | #: layout. 1757 | 1758 | #: You can use multi-key shortcuts with the syntax shown below:: 1759 | 1760 | #: map key1>key2>key3 action 1761 | 1762 | #: For example:: 1763 | 1764 | #: map ctrl+f>2 set_font_size 20 1765 | 1766 | #: The full list of actions that can be mapped to key presses is 1767 | #: available here . 1768 | 1769 | # kitty_mod ctrl+shift 1770 | 1771 | #: Special modifier key alias for default shortcuts. You can change 1772 | #: the value of this option to alter all default shortcuts that use 1773 | #: kitty_mod. 1774 | 1775 | # clear_all_shortcuts no 1776 | 1777 | #: Remove all shortcut definitions up to this point. Useful, for 1778 | #: instance, to remove the default shortcuts. 1779 | 1780 | # action_alias 1781 | 1782 | #: E.g. action_alias launch_tab launch --type=tab --cwd=current 1783 | 1784 | #: Define action aliases to avoid repeating the same options in 1785 | #: multiple mappings. Aliases can be defined for any action and will 1786 | #: be expanded recursively. For example, the above alias allows you to 1787 | #: create mappings to launch a new tab in the current working 1788 | #: directory without duplication:: 1789 | 1790 | #: map f1 launch_tab vim 1791 | #: map f2 launch_tab emacs 1792 | 1793 | #: Similarly, to alias kitten invocation:: 1794 | 1795 | #: action_alias hints kitten hints --hints-offset=0 1796 | 1797 | # kitten_alias 1798 | 1799 | #: E.g. kitten_alias hints hints --hints-offset=0 1800 | 1801 | #: Like action_alias above, but specifically for kittens. Generally, 1802 | #: prefer to use action_alias. This option is a legacy version, 1803 | #: present for backwards compatibility. It causes all invocations of 1804 | #: the aliased kitten to be substituted. So the example above will 1805 | #: cause all invocations of the hints kitten to have the --hints- 1806 | #: offset=0 option applied. 1807 | 1808 | #: Clipboard {{{ 1809 | 1810 | #: Copy to clipboard 1811 | 1812 | # map kitty_mod+c copy_to_clipboard 1813 | # map cmd+c copy_to_clipboard 1814 | 1815 | #:: There is also a copy_or_interrupt action that can be optionally 1816 | #:: mapped to Ctrl+C. It will copy only if there is a selection and 1817 | #:: send an interrupt otherwise. Similarly, 1818 | #:: copy_and_clear_or_interrupt will copy and clear the selection or 1819 | #:: send an interrupt if there is no selection. 1820 | 1821 | #: Paste from clipboard 1822 | 1823 | # map kitty_mod+v paste_from_clipboard 1824 | # map cmd+v paste_from_clipboard 1825 | 1826 | #: Paste from selection 1827 | 1828 | # map kitty_mod+s paste_from_selection 1829 | # map shift+insert paste_from_selection 1830 | 1831 | #: Pass selection to program 1832 | 1833 | # map kitty_mod+o pass_selection_to_program 1834 | 1835 | #:: You can also pass the contents of the current selection to any 1836 | #:: program with pass_selection_to_program. By default, the system's 1837 | #:: open program is used, but you can specify your own, the selection 1838 | #:: will be passed as a command line argument to the program. For 1839 | #:: example:: 1840 | 1841 | #:: map kitty_mod+o pass_selection_to_program firefox 1842 | 1843 | #:: You can pass the current selection to a terminal program running 1844 | #:: in a new kitty window, by using the @selection placeholder:: 1845 | 1846 | #:: map kitty_mod+y new_window less @selection 1847 | 1848 | #: }}} 1849 | 1850 | #: Scrolling {{{ 1851 | 1852 | #: Scroll line up 1853 | 1854 | # map kitty_mod+up scroll_line_up 1855 | # map kitty_mod+k scroll_line_up 1856 | # map opt+cmd+page_up scroll_line_up 1857 | # map cmd+up scroll_line_up 1858 | 1859 | #: Scroll line down 1860 | 1861 | # map kitty_mod+down scroll_line_down 1862 | # map kitty_mod+j scroll_line_down 1863 | # map opt+cmd+page_down scroll_line_down 1864 | # map cmd+down scroll_line_down 1865 | 1866 | #: Scroll page up 1867 | 1868 | # map kitty_mod+page_up scroll_page_up 1869 | # map cmd+page_up scroll_page_up 1870 | 1871 | #: Scroll page down 1872 | 1873 | # map kitty_mod+page_down scroll_page_down 1874 | # map cmd+page_down scroll_page_down 1875 | 1876 | #: Scroll to top 1877 | 1878 | # map kitty_mod+home scroll_home 1879 | # map cmd+home scroll_home 1880 | 1881 | #: Scroll to bottom 1882 | 1883 | # map kitty_mod+end scroll_end 1884 | # map cmd+end scroll_end 1885 | 1886 | #: Scroll to previous shell prompt 1887 | 1888 | # map kitty_mod+z scroll_to_prompt -1 1889 | 1890 | #:: Use a parameter of 0 for scroll_to_prompt to scroll to the last 1891 | #:: jumped to or the last clicked position. Requires shell 1892 | #:: integration 1893 | #:: to work. 1894 | 1895 | #: Scroll to next shell prompt 1896 | 1897 | # map kitty_mod+x scroll_to_prompt 1 1898 | 1899 | #: Browse scrollback buffer in pager 1900 | 1901 | # map kitty_mod+h show_scrollback 1902 | 1903 | #:: You can pipe the contents of the current screen and history 1904 | #:: buffer as STDIN to an arbitrary program using launch --stdin- 1905 | #:: source. For example, the following opens the scrollback buffer in 1906 | #:: less in an overlay window:: 1907 | 1908 | #:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R 1909 | 1910 | #:: For more details on piping screen and buffer contents to external 1911 | #:: programs, see launch . 1912 | 1913 | #: Browse output of the last shell command in pager 1914 | 1915 | # map kitty_mod+g show_last_command_output 1916 | 1917 | #:: You can also define additional shortcuts to get the command 1918 | #:: output. For example, to get the first command output on screen:: 1919 | 1920 | #:: map f1 show_first_command_output_on_screen 1921 | 1922 | #:: To get the command output that was last accessed by a keyboard 1923 | #:: action or mouse action:: 1924 | 1925 | #:: map f1 show_last_visited_command_output 1926 | 1927 | #:: You can pipe the output of the last command run in the shell 1928 | #:: using the launch action. For example, the following opens the 1929 | #:: output in less in an overlay window:: 1930 | 1931 | #:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R 1932 | 1933 | #:: To get the output of the first command on the screen, use 1934 | #:: @first_cmd_output_on_screen. To get the output of the last jumped 1935 | #:: to command, use @last_visited_cmd_output. 1936 | 1937 | #:: Requires shell integration 1938 | #:: to work. 1939 | 1940 | #: }}} 1941 | 1942 | #: Window management {{{ 1943 | 1944 | #: New window 1945 | 1946 | # map kitty_mod+enter new_window 1947 | # map cmd+enter new_window 1948 | 1949 | #:: You can open a new kitty window running an arbitrary program, for 1950 | #:: example:: 1951 | 1952 | #:: map kitty_mod+y launch mutt 1953 | 1954 | #:: You can open a new window with the current working directory set 1955 | #:: to the working directory of the current window using:: 1956 | 1957 | #:: map ctrl+alt+enter launch --cwd=current 1958 | 1959 | #:: You can open a new window that is allowed to control kitty via 1960 | #:: the kitty remote control facility with launch --allow-remote- 1961 | #:: control. Any programs running in that window will be allowed to 1962 | #:: control kitty. For example:: 1963 | 1964 | #:: map ctrl+enter launch --allow-remote-control some_program 1965 | 1966 | #:: You can open a new window next to the currently active window or 1967 | #:: as the first window, with:: 1968 | 1969 | #:: map ctrl+n launch --location=neighbor 1970 | #:: map ctrl+f launch --location=first 1971 | 1972 | #:: For more details, see launch 1973 | #:: . 1974 | 1975 | #: New OS window 1976 | 1977 | # map kitty_mod+n new_os_window 1978 | # map cmd+n new_os_window 1979 | 1980 | #:: Works like new_window above, except that it opens a top-level OS 1981 | #:: window. In particular you can use new_os_window_with_cwd to open 1982 | #:: a window with the current working directory. 1983 | 1984 | #: Close window 1985 | 1986 | # map kitty_mod+w close_window 1987 | # map shift+cmd+d close_window 1988 | 1989 | #: Next window 1990 | 1991 | # map kitty_mod+] next_window 1992 | 1993 | #: Previous window 1994 | 1995 | # map kitty_mod+[ previous_window 1996 | 1997 | #: Move window forward 1998 | 1999 | # map kitty_mod+f move_window_forward 2000 | 2001 | #: Move window backward 2002 | 2003 | # map kitty_mod+b move_window_backward 2004 | 2005 | #: Move window to top 2006 | 2007 | # map kitty_mod+` move_window_to_top 2008 | 2009 | #: Start resizing window 2010 | 2011 | # map kitty_mod+r start_resizing_window 2012 | # map cmd+r start_resizing_window 2013 | 2014 | #: First window 2015 | 2016 | # map kitty_mod+1 first_window 2017 | # map cmd+1 first_window 2018 | 2019 | #: Second window 2020 | 2021 | # map kitty_mod+2 second_window 2022 | # map cmd+2 second_window 2023 | 2024 | #: Third window 2025 | 2026 | # map kitty_mod+3 third_window 2027 | # map cmd+3 third_window 2028 | 2029 | #: Fourth window 2030 | 2031 | # map kitty_mod+4 fourth_window 2032 | # map cmd+4 fourth_window 2033 | 2034 | #: Fifth window 2035 | 2036 | # map kitty_mod+5 fifth_window 2037 | # map cmd+5 fifth_window 2038 | 2039 | #: Sixth window 2040 | 2041 | # map kitty_mod+6 sixth_window 2042 | # map cmd+6 sixth_window 2043 | 2044 | #: Seventh window 2045 | 2046 | # map kitty_mod+7 seventh_window 2047 | # map cmd+7 seventh_window 2048 | 2049 | #: Eighth window 2050 | 2051 | # map kitty_mod+8 eighth_window 2052 | # map cmd+8 eighth_window 2053 | 2054 | #: Ninth window 2055 | 2056 | # map kitty_mod+9 ninth_window 2057 | # map cmd+9 ninth_window 2058 | 2059 | #: Tenth window 2060 | 2061 | # map kitty_mod+0 tenth_window 2062 | 2063 | #: Visually select and focus window 2064 | 2065 | # map kitty_mod+f7 focus_visible_window 2066 | 2067 | #:: Display overlay numbers and alphabets on the window, and switch 2068 | #:: the focus to the window when you press the key. When there are 2069 | #:: only two windows, the focus will be switched directly without 2070 | #:: displaying the overlay. You can change the overlay characters and 2071 | #:: their order with option visual_window_select_characters. 2072 | 2073 | #: Visually swap window with another 2074 | 2075 | # map kitty_mod+f8 swap_with_window 2076 | 2077 | #:: Works like focus_visible_window above, but swaps the window. 2078 | 2079 | #: }}} 2080 | 2081 | #: Tab management {{{ 2082 | 2083 | #: Next tab 2084 | 2085 | # map kitty_mod+right next_tab 2086 | # map shift+cmd+] next_tab 2087 | # map ctrl+tab next_tab 2088 | 2089 | #: Previous tab 2090 | 2091 | # map kitty_mod+left previous_tab 2092 | # map shift+cmd+[ previous_tab 2093 | # map ctrl+shift+tab previous_tab 2094 | 2095 | #: New tab 2096 | 2097 | # map kitty_mod+t new_tab 2098 | # map cmd+t new_tab 2099 | 2100 | #: Close tab 2101 | 2102 | # map kitty_mod+q close_tab 2103 | # map cmd+w close_tab 2104 | 2105 | #: Close OS window 2106 | 2107 | # map shift+cmd+w close_os_window 2108 | 2109 | #: Move tab forward 2110 | 2111 | # map kitty_mod+. move_tab_forward 2112 | 2113 | #: Move tab backward 2114 | 2115 | # map kitty_mod+, move_tab_backward 2116 | 2117 | #: Set tab title 2118 | 2119 | # map kitty_mod+alt+t set_tab_title 2120 | # map shift+cmd+i set_tab_title 2121 | 2122 | 2123 | #: You can also create shortcuts to go to specific tabs, with 1 being 2124 | #: the first tab, 2 the second tab and -1 being the previously active 2125 | #: tab, and any number larger than the last tab being the last tab:: 2126 | 2127 | #: map ctrl+alt+1 goto_tab 1 2128 | #: map ctrl+alt+2 goto_tab 2 2129 | 2130 | #: Just as with new_window above, you can also pass the name of 2131 | #: arbitrary commands to run when using new_tab and new_tab_with_cwd. 2132 | #: Finally, if you want the new tab to open next to the current tab 2133 | #: rather than at the end of the tabs list, use:: 2134 | 2135 | #: map ctrl+t new_tab !neighbor [optional cmd to run] 2136 | #: }}} 2137 | 2138 | #: Layout management {{{ 2139 | 2140 | #: Next layout 2141 | 2142 | # map kitty_mod+l next_layout 2143 | 2144 | 2145 | #: You can also create shortcuts to switch to specific layouts:: 2146 | 2147 | #: map ctrl+alt+t goto_layout tall 2148 | #: map ctrl+alt+s goto_layout stack 2149 | 2150 | #: Similarly, to switch back to the previous layout:: 2151 | 2152 | #: map ctrl+alt+p last_used_layout 2153 | 2154 | #: There is also a toggle_layout action that switches to the named 2155 | #: layout or back to the previous layout if in the named layout. 2156 | #: Useful to temporarily "zoom" the active window by switching to the 2157 | #: stack layout:: 2158 | 2159 | #: map ctrl+alt+z toggle_layout stack 2160 | #: }}} 2161 | 2162 | #: Font sizes {{{ 2163 | 2164 | #: You can change the font size for all top-level kitty OS windows at 2165 | #: a time or only the current one. 2166 | 2167 | #: Increase font size 2168 | 2169 | # map kitty_mod+equal change_font_size all +2.0 2170 | # map kitty_mod+plus change_font_size all +2.0 2171 | # map kitty_mod+kp_add change_font_size all +2.0 2172 | # map cmd+plus change_font_size all +2.0 2173 | # map cmd+equal change_font_size all +2.0 2174 | # map shift+cmd+equal change_font_size all +2.0 2175 | 2176 | #: Decrease font size 2177 | 2178 | # map kitty_mod+minus change_font_size all -2.0 2179 | # map kitty_mod+kp_subtract change_font_size all -2.0 2180 | # map cmd+minus change_font_size all -2.0 2181 | # map shift+cmd+minus change_font_size all -2.0 2182 | 2183 | #: Reset font size 2184 | 2185 | # map kitty_mod+backspace change_font_size all 0 2186 | # map cmd+0 change_font_size all 0 2187 | 2188 | 2189 | #: To setup shortcuts for specific font sizes:: 2190 | 2191 | #: map kitty_mod+f6 change_font_size all 10.0 2192 | 2193 | #: To setup shortcuts to change only the current OS window's font 2194 | #: size:: 2195 | 2196 | #: map kitty_mod+f6 change_font_size current 10.0 2197 | #: }}} 2198 | 2199 | #: Select and act on visible text {{{ 2200 | 2201 | #: Use the hints kitten to select text and either pass it to an 2202 | #: external program or insert it into the terminal or copy it to the 2203 | #: clipboard. 2204 | 2205 | #: Open URL 2206 | 2207 | # map kitty_mod+e open_url_with_hints 2208 | 2209 | #:: Open a currently visible URL using the keyboard. The program used 2210 | #:: to open the URL is specified in open_url_with. 2211 | 2212 | #: Insert selected path 2213 | 2214 | # map kitty_mod+p>f kitten hints --type path --program - 2215 | 2216 | #:: Select a path/filename and insert it into the terminal. Useful, 2217 | #:: for instance to run git commands on a filename output from a 2218 | #:: previous git command. 2219 | 2220 | #: Open selected path 2221 | 2222 | # map kitty_mod+p>shift+f kitten hints --type path 2223 | 2224 | #:: Select a path/filename and open it with the default open program. 2225 | 2226 | #: Insert selected line 2227 | 2228 | # map kitty_mod+p>l kitten hints --type line --program - 2229 | 2230 | #:: Select a line of text and insert it into the terminal. Useful for 2231 | #:: the output of things like: `ls -1`. 2232 | 2233 | #: Insert selected word 2234 | 2235 | # map kitty_mod+p>w kitten hints --type word --program - 2236 | 2237 | #:: Select words and insert into terminal. 2238 | 2239 | #: Insert selected hash 2240 | 2241 | # map kitty_mod+p>h kitten hints --type hash --program - 2242 | 2243 | #:: Select something that looks like a hash and insert it into the 2244 | #:: terminal. Useful with git, which uses SHA1 hashes to identify 2245 | #:: commits. 2246 | 2247 | #: Open the selected file at the selected line 2248 | 2249 | # map kitty_mod+p>n kitten hints --type linenum 2250 | 2251 | #:: Select something that looks like filename:linenum and open it in 2252 | #:: vim at the specified line number. 2253 | 2254 | #: Open the selected hyperlink 2255 | 2256 | # map kitty_mod+p>y kitten hints --type hyperlink 2257 | 2258 | #:: Select a hyperlink (i.e. a URL that has been marked as such by 2259 | #:: the terminal program, for example, by `ls --hyperlink=auto`). 2260 | 2261 | 2262 | #: The hints kitten has many more modes of operation that you can map 2263 | #: to different shortcuts. For a full description see hints kitten 2264 | #: . 2265 | #: }}} 2266 | 2267 | #: Miscellaneous {{{ 2268 | 2269 | #: Show documentation 2270 | 2271 | # map kitty_mod+f1 show_kitty_doc overview 2272 | 2273 | #: Toggle fullscreen 2274 | 2275 | # map kitty_mod+f11 toggle_fullscreen 2276 | # map ctrl+cmd+f toggle_fullscreen 2277 | 2278 | #: Toggle maximized 2279 | 2280 | # map kitty_mod+f10 toggle_maximized 2281 | 2282 | #: Toggle macOS secure keyboard entry 2283 | 2284 | # map opt+cmd+s toggle_macos_secure_keyboard_entry 2285 | 2286 | #: Unicode input 2287 | 2288 | # map kitty_mod+u kitten unicode_input 2289 | # map ctrl+cmd+space kitten unicode_input 2290 | 2291 | #: Edit config file 2292 | 2293 | # map kitty_mod+f2 edit_config_file 2294 | # map cmd+, edit_config_file 2295 | 2296 | #: Open the kitty command shell 2297 | 2298 | # map kitty_mod+escape kitty_shell window 2299 | 2300 | #:: Open the kitty shell in a new window / tab / overlay / os_window 2301 | #:: to control kitty using commands. 2302 | 2303 | #: Increase background opacity 2304 | 2305 | # map kitty_mod+a>m set_background_opacity +0.1 2306 | 2307 | #: Decrease background opacity 2308 | 2309 | # map kitty_mod+a>l set_background_opacity -0.1 2310 | 2311 | #: Make background fully opaque 2312 | 2313 | # map kitty_mod+a>1 set_background_opacity 1 2314 | 2315 | #: Reset background opacity 2316 | 2317 | # map kitty_mod+a>d set_background_opacity default 2318 | 2319 | #: Reset the terminal 2320 | 2321 | # map kitty_mod+delete clear_terminal reset active 2322 | # map opt+cmd+r clear_terminal reset active 2323 | 2324 | #:: You can create shortcuts to clear/reset the terminal. For 2325 | #:: example:: 2326 | 2327 | #:: # Reset the terminal 2328 | #:: map f1 clear_terminal reset active 2329 | #:: # Clear the terminal screen by erasing all contents 2330 | #:: map f1 clear_terminal clear active 2331 | #:: # Clear the terminal scrollback by erasing it 2332 | #:: map f1 clear_terminal scrollback active 2333 | #:: # Scroll the contents of the screen into the scrollback 2334 | #:: map f1 clear_terminal scroll active 2335 | #:: # Clear everything up to the line with the cursor 2336 | #:: map f1 clear_terminal to_cursor active 2337 | 2338 | #:: If you want to operate on all kitty windows instead of just the 2339 | #:: current one, use all instead of active. 2340 | 2341 | #:: Some useful functions that can be defined in the shell rc files 2342 | #:: to perform various kinds of clearing of the current window: 2343 | 2344 | #:: .. code-block:: sh 2345 | 2346 | #:: clear-only-screen() { 2347 | #:: printf "\e[H\e[2J" 2348 | #:: } 2349 | 2350 | #:: clear-screen-and-scrollback() { 2351 | #:: printf "\e[H\e[3J" 2352 | #:: } 2353 | 2354 | #:: clear-screen-saving-contents-in-scrollback() { 2355 | #:: printf "\e[H\e[22J" 2356 | #:: } 2357 | 2358 | #:: For instance, using these escape codes, it is possible to remap 2359 | #:: Ctrl+L to both scroll the current screen contents into the 2360 | #:: scrollback buffer and clear the screen, instead of just clearing 2361 | #:: the screen. For ZSH, in ~/.zshrc, add: 2362 | 2363 | #:: .. code-block:: zsh 2364 | 2365 | #:: ctrl_l() { 2366 | #:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" 2367 | #:: builtin zle .reset-prompt 2368 | #:: builtin zle -R 2369 | #:: } 2370 | #:: zle -N ctrl_l 2371 | #:: bindkey '^l' ctrl_l 2372 | 2373 | #: Clear up to cursor line 2374 | 2375 | # map cmd+k clear_terminal to_cursor active 2376 | 2377 | #: Reload kitty.conf 2378 | 2379 | # map kitty_mod+f5 load_config_file 2380 | # map ctrl+cmd+, load_config_file 2381 | 2382 | #:: Reload kitty.conf, applying any changes since the last time it 2383 | #:: was loaded. Note that a handful of options cannot be dynamically 2384 | #:: changed and require a full restart of kitty. Particularly, when 2385 | #:: changing shortcuts for actions located on the macOS global menu 2386 | #:: bar, a full restart is needed. You can also map a keybinding to 2387 | #:: load a different config file, for example:: 2388 | 2389 | #:: map f5 load_config /path/to/alternative/kitty.conf 2390 | 2391 | #:: Note that all options from the original kitty.conf are discarded, 2392 | #:: in other words the new configuration *replace* the old ones. 2393 | 2394 | #: Debug kitty configuration 2395 | 2396 | # map kitty_mod+f6 debug_config 2397 | # map opt+cmd+, debug_config 2398 | 2399 | #:: Show details about exactly what configuration kitty is running 2400 | #:: with and its host environment. Useful for debugging issues. 2401 | 2402 | #: Send arbitrary text on key presses 2403 | 2404 | #:: E.g. map ctrl+shift+alt+h send_text all Hello World 2405 | 2406 | #:: You can tell kitty to send arbitrary (UTF-8) encoded text to the 2407 | #:: client program when pressing specified shortcut keys. For 2408 | #:: example:: 2409 | 2410 | #:: map ctrl+alt+a send_text all Special text 2411 | 2412 | #:: This will send "Special text" when you press the Ctrl+Alt+A key 2413 | #:: combination. The text to be sent decodes ANSI C escapes 2414 | #:: so you can use escapes like \e to send control 2416 | #:: codes or \u21fb to send Unicode characters (or you can just input 2417 | #:: the Unicode characters directly as UTF-8 text). You can use 2418 | #:: `kitten show_key` to get the key escape codes you want to 2419 | #:: emulate. 2420 | 2421 | #:: The first argument to send_text is the keyboard modes in which to 2422 | #:: activate the shortcut. The possible values are normal, 2423 | #:: application, kitty or a comma separated combination of them. The 2424 | #:: modes normal and application refer to the DECCKM cursor key mode 2425 | #:: for terminals, and kitty refers to the kitty extended keyboard 2426 | #:: protocol. The special value all means all of them. 2427 | 2428 | #:: Some more examples:: 2429 | 2430 | #:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) 2431 | #:: map ctrl+alt+a send_text normal Word\e[H 2432 | #:: map ctrl+alt+a send_text application Word\eOH 2433 | #:: # Run a command at a shell prompt (like typing the command and pressing Enter) 2434 | #:: map ctrl+alt+a send_text normal,application some command with arguments\r 2435 | 2436 | #: Open kitty Website 2437 | 2438 | # map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ 2439 | 2440 | #: Hide macOS kitty application 2441 | 2442 | # map cmd+h hide_macos_app 2443 | 2444 | #: Hide macOS other applications 2445 | 2446 | # map opt+cmd+h hide_macos_other_apps 2447 | 2448 | #: Minimize macOS window 2449 | 2450 | # map cmd+m minimize_macos_window 2451 | 2452 | #: Quit kitty 2453 | 2454 | # map cmd+q quit 2455 | 2456 | #: }}} 2457 | 2458 | #: }}} 2459 | 2460 | -------------------------------------------------------------------------------- /mpv/mpv.conf: -------------------------------------------------------------------------------- 1 | # better quality 2 | profile=gpu-hq 3 | scale=ewa_lanczossharp 4 | cscale=ewa_lanczossharp 5 | 6 | # hardware acceleration: 7 | hwdec=vaapi # using vaapi for amd gpu. Use `auto` instead if it works better for you. 8 | -------------------------------------------------------------------------------- /picom/picom.conf: -------------------------------------------------------------------------------- 1 | # vim: ft=conf fdm=marker 2 | 3 | # the relevant stuff for prettiness: 4 | 5 | # opacity-rule = [ "95:class_g = 'kitty' && !focused && !I3_FLOATING_WINDOW@:c"]; 6 | # using transparency setting from kitty itself. 7 | 8 | backend = "glx"; 9 | vsync = true; 10 | use-damage = true; 11 | # xrender-sync-fence = true; 12 | 13 | blur-kern = "3x3box"; 14 | blur-method = "dual_kawase" 15 | blur-size = 10 16 | blur-deviation = 5.0 17 | blur-background-exclude = [ 18 | "window_type = 'dock'", 19 | "window_type = 'desktop'", 20 | "window_type = 'menu'", 21 | "window_type = 'dropdown_menu'", 22 | "window_type = 'popup_menu'", 23 | "window_type = 'tooltip'", 24 | "_GTK_FRAME_EXTENTS@:c", 25 | "class_g = 'slop'", 26 | "class_g ?= 'Peek'" 27 | ]; 28 | 29 | fading = true; 30 | fade-in-step = 0.1; 31 | fade-out-step = 0.1; 32 | # fade-delta = 0; 33 | fade-exclude = [ 34 | "class_g = 'i3lock'", 35 | ] 36 | # no-fading-open-close = true; 37 | 38 | shadow = true; 39 | shadow-radius = 7; 40 | shadow-offset-x = -7; 41 | shadow-offset-y = -7; 42 | shadow-exclude = [ 43 | "name = 'Notification'", 44 | "class_g ?= 'Notify-osd'", 45 | "_GTK_FRAME_EXTENTS@:c", 46 | "class_g ?= 'Peek'" 47 | ]; 48 | 49 | mark-wmwin-focused = true; 50 | mark-ovredir-focused = true; 51 | 52 | detect-client-opacity = true; 53 | detect-transient = true; 54 | 55 | log-level = "warn"; 56 | 57 | wintypes: 58 | { 59 | menu = { shadow = false; }; 60 | dropdown_menu = { shadow = false; }; 61 | popup_menu = { shadow = false; }; 62 | tooltip = { shadow = false; fade = true; focus = true; }; 63 | dock = { shadow = false; }; 64 | dnd = { shadow = false; }; 65 | }; 66 | -------------------------------------------------------------------------------- /polybar/config.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background = #00000000 3 | foreground = #d4be98 4 | 5 | background-alt = #d4be98 6 | foreground-alt = #282828 7 | 8 | urgent = #ea6962 9 | notice = #d8a657 10 | 11 | [bar/main] 12 | width = 100% 13 | height = 24pt 14 | 15 | dpi = 120 16 | 17 | background = ${colors.background} 18 | foreground = ${colors.foreground} 19 | 20 | border-top-size = 10px 21 | border-bottom-size = 10px 22 | 23 | padding-left = 9px 24 | padding-right = 16px 25 | module-margin = 12px 26 | 27 | separator = | 28 | separator-foreground = ${colors.foreground} 29 | 30 | font-0 = JetBrainsMono Nerd Font:size=12;4pt 31 | font-1 = Font Awesome 6 Free:pixelsize=12;4pt 32 | 33 | modules-left = bpswm 34 | modules-center = xwindow 35 | modules-right = battery date systray 36 | 37 | enable-ipc = true 38 | wm-restack = bspwm 39 | 40 | [module/systray] 41 | type = internal/tray 42 | 43 | tray-size = 60% 44 | tray-spacing = 8px 45 | 46 | [module/bpswm] 47 | type = internal/bspwm 48 | 49 | label-focused = %name% 50 | label-focused-background = ${colors.background-alt} 51 | label-focused-foreground = ${colors.foreground-alt} 52 | label-focused-padding = 6pt 53 | label-focused-margin = 1pt 54 | 55 | label-occupied = %name% 56 | label-occupied-padding = 6pt 57 | label-occupied-margin = 1pt 58 | 59 | label-urgent = %name% 60 | label-urgent-background = ${colors.urgent} 61 | label-urgent-padding = 6pt 62 | label-urgent-margin = 1pt 63 | 64 | label-empty = "" 65 | 66 | [module/xwindow] 67 | type = internal/xwindow 68 | label = %title:0:60:…% 69 | 70 | [module/battery] 71 | type = internal/battery 72 | full-at = 98 73 | 74 | format-charging = 75 | format-discharging = 76 | format-full = 77 | 78 | ramp-capacity-0 =  79 | ramp-capacity-0-foreground = ${colors.urgent} 80 | ramp-capacity-1 =  81 | ramp-capacity-2 =  82 | ramp-capacity-3 =  83 | ramp-capacity-4 =  84 | animation-charging-0 =  85 | animation-charging-1 =  86 | animation-charging-2 =  87 | animation-charging-3 =  88 | animation-charging-4 =  89 | 90 | [module/date] 91 | type = internal/date 92 | interval = 1 93 | 94 | date = %d %b %Y %H:%M 95 | date-alt = %a, %d %b %Y %H:%M:%S 96 | 97 | label = %{T2} %{T-}%date% 98 | label-foreground = ${colors.foreground} 99 | 100 | [settings] 101 | screenchange-reload = true 102 | pseudo-transparency = true 103 | 104 | ; vim:ft=dosini 105 | -------------------------------------------------------------------------------- /qutebrowser/config.py: -------------------------------------------------------------------------------- 1 | # vim: fdm=marker 2 | 3 | config.load_autoconfig() 4 | 5 | c.tabs.background = True 6 | c.new_instance_open_target = "window" 7 | c.downloads.position = "bottom" 8 | # c.spellcheck.languages = ['en-US'] 9 | 10 | # css = '~/.config/qutebrowser/solarized-everything-css/css/gruvbox/gruvbox-all-sites.css' 11 | # config.bind(',n', f'config-cycle content.user_stylesheets {css} ""') 12 | 13 | c.fonts.default_family = "JetBrainsMono NF" 14 | c.fonts.default_size = "11pt" 15 | # c.fonts.web.family.standard = 'Clear Sans' 16 | 17 | c.search.incremental = False 18 | # c.editor.command = ["code", "-nw", "{}"] 19 | 20 | # c.content.javascript.enabled = False 21 | 22 | config.source("gruvbox.py") 23 | 24 | # set dark mode 25 | c.colors.webpage.bg = "black" # "black" get's rid of flashes, but does seem to break certain websites 26 | c.colors.webpage.preferred_color_scheme = "dark" 27 | c.colors.webpage.darkmode.enabled = True 28 | c.colors.webpage.darkmode.algorithm = "lightness-cielab" 29 | # c.colors.webpage.darkmode.threshold.foreground = 150 30 | # c.colors.webpage.darkmode.threshold.background = 100 31 | c.colors.webpage.darkmode.policy.images = 'never' # 'smart-simple' 32 | # c.colors.webpage.darkmode.grayscale.images = 0.35 33 | 34 | c.qt.args = ["blink-settings=darkMode=4"] 35 | 36 | # always restore open sites when qutebrowser is reopened 37 | c.auto_save.session = True 38 | 39 | # bind M to hinting and showing a video via mpv 40 | config.bind("M", "hint links spawn mpv {hint-url}") 41 | -------------------------------------------------------------------------------- /qutebrowser/gruvbox.py: -------------------------------------------------------------------------------- 1 | # source: 2 | # https://github.com/The-Compiler/dotfiles/blob/master/qutebrowser/gruvbox.py 3 | 4 | # gruvbox dark hard qutebrowser theme by Florian Bruhin 5 | # 6 | # Originally based on: 7 | # base16-qutebrowser (https://github.com/theova/base16-qutebrowser) 8 | # Base16 qutebrowser template by theova and Daniel Mulford 9 | # Gruvbox dark, hard scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) 10 | 11 | bg0_hard = "#1d2021" 12 | bg0_soft = '#32302f' 13 | bg0_normal = '#282828' 14 | 15 | bg0 = bg0_normal 16 | bg1 = "#3c3836" 17 | bg2 = "#504945" 18 | bg3 = "#665c54" 19 | bg4 = "#7c6f64" 20 | 21 | fg0 = "#fbf1c7" 22 | fg1 = "#ebdbb2" 23 | fg2 = "#d5c4a1" 24 | fg3 = "#bdae93" 25 | fg4 = "#a89984" 26 | 27 | bright_red = "#fb4934" 28 | bright_green = "#b8bb26" 29 | bright_yellow = "#fabd2f" 30 | bright_blue = "#83a598" 31 | bright_purple = "#d3869b" 32 | bright_aqua = "#8ec07c" 33 | bright_gray = "#928374" 34 | bright_orange = "#fe8019" 35 | 36 | dark_red = "#cc241d" 37 | dark_green = "#98971a" 38 | dark_yellow = "#d79921" 39 | dark_blue = "#458588" 40 | dark_purple = "#b16286" 41 | dark_aqua = "#689d6a" 42 | dark_gray = "#a89984" 43 | dark_orange = "#d65d0e" 44 | 45 | ### Completion 46 | 47 | # Text color of the completion widget. May be a single color to use for 48 | # all columns or a list of three colors, one for each column. 49 | c.colors.completion.fg = [fg1, bright_aqua, bright_yellow] 50 | 51 | # Background color of the completion widget for odd rows. 52 | c.colors.completion.odd.bg = bg0 53 | 54 | # Background color of the completion widget for even rows. 55 | c.colors.completion.even.bg = c.colors.completion.odd.bg 56 | 57 | # Foreground color of completion widget category headers. 58 | c.colors.completion.category.fg = bright_blue 59 | 60 | # Background color of the completion widget category headers. 61 | c.colors.completion.category.bg = bg1 62 | 63 | # Top border color of the completion widget category headers. 64 | c.colors.completion.category.border.top = c.colors.completion.category.bg 65 | 66 | # Bottom border color of the completion widget category headers. 67 | c.colors.completion.category.border.bottom = c.colors.completion.category.bg 68 | 69 | # Foreground color of the selected completion item. 70 | c.colors.completion.item.selected.fg = fg0 71 | 72 | # Background color of the selected completion item. 73 | c.colors.completion.item.selected.bg = bg4 74 | 75 | # Top border color of the selected completion item. 76 | c.colors.completion.item.selected.border.top = bg2 77 | 78 | # Bottom border color of the selected completion item. 79 | c.colors.completion.item.selected.border.bottom = c.colors.completion.item.selected.border.top 80 | 81 | # Foreground color of the matched text in the selected completion item. 82 | c.colors.completion.item.selected.match.fg = bright_orange 83 | 84 | # Foreground color of the matched text in the completion. 85 | c.colors.completion.match.fg = c.colors.completion.item.selected.match.fg 86 | 87 | # Color of the scrollbar handle in the completion view. 88 | c.colors.completion.scrollbar.fg = c.colors.completion.item.selected.fg 89 | 90 | # Color of the scrollbar in the completion view. 91 | c.colors.completion.scrollbar.bg = c.colors.completion.category.bg 92 | 93 | ### Context menu 94 | 95 | # Background color of disabled items in the context menu. 96 | c.colors.contextmenu.disabled.bg = bg3 97 | 98 | # Foreground color of disabled items in the context menu. 99 | c.colors.contextmenu.disabled.fg = fg3 100 | 101 | # Background color of the context menu. If set to null, the Qt default is used. 102 | c.colors.contextmenu.menu.bg = bg0 103 | 104 | # Foreground color of the context menu. If set to null, the Qt default is used. 105 | c.colors.contextmenu.menu.fg = fg2 106 | 107 | # Background color of the context menu’s selected item. If set to null, the Qt default is used. 108 | c.colors.contextmenu.selected.bg = bg2 109 | 110 | #Foreground color of the context menu’s selected item. If set to null, the Qt default is used. 111 | c.colors.contextmenu.selected.fg = c.colors.contextmenu.menu.fg 112 | 113 | ### Downloads 114 | 115 | # Background color for the download bar. 116 | c.colors.downloads.bar.bg = bg0 117 | 118 | # Color gradient start for download text. 119 | c.colors.downloads.start.fg = bg0 120 | 121 | # Color gradient start for download backgrounds. 122 | c.colors.downloads.start.bg = bright_blue 123 | 124 | # Color gradient end for download text. 125 | c.colors.downloads.stop.fg = c.colors.downloads.start.fg 126 | 127 | # Color gradient stop for download backgrounds. 128 | c.colors.downloads.stop.bg = bright_aqua 129 | 130 | # Foreground color for downloads with errors. 131 | c.colors.downloads.error.fg = bright_red 132 | 133 | ### Hints 134 | 135 | # Font color for hints. 136 | c.colors.hints.fg = bg0 137 | 138 | # Background color for hints. 139 | c.colors.hints.bg = 'rgba(250, 191, 47, 200)' # bright_yellow 140 | 141 | # Font color for the matched part of hints. 142 | c.colors.hints.match.fg = bg4 143 | 144 | ### Keyhint widget 145 | 146 | # Text color for the keyhint widget. 147 | c.colors.keyhint.fg = fg4 148 | 149 | # Highlight color for keys to complete the current keychain. 150 | c.colors.keyhint.suffix.fg = fg0 151 | 152 | # Background color of the keyhint widget. 153 | c.colors.keyhint.bg = bg0 154 | 155 | ### Messages 156 | 157 | # Foreground color of an error message. 158 | c.colors.messages.error.fg = bg0 159 | 160 | # Background color of an error message. 161 | c.colors.messages.error.bg = bright_red 162 | 163 | # Border color of an error message. 164 | c.colors.messages.error.border = c.colors.messages.error.bg 165 | 166 | # Foreground color of a warning message. 167 | c.colors.messages.warning.fg = bg0 168 | 169 | # Background color of a warning message. 170 | c.colors.messages.warning.bg = bright_purple 171 | 172 | # Border color of a warning message. 173 | c.colors.messages.warning.border = c.colors.messages.warning.bg 174 | 175 | # Foreground color of an info message. 176 | c.colors.messages.info.fg = fg2 177 | 178 | # Background color of an info message. 179 | c.colors.messages.info.bg = bg0 180 | 181 | # Border color of an info message. 182 | c.colors.messages.info.border = c.colors.messages.info.bg 183 | 184 | ### Prompts 185 | 186 | # Foreground color for prompts. 187 | c.colors.prompts.fg = fg2 188 | 189 | # Border used around UI elements in prompts. 190 | c.colors.prompts.border = f'1px solid {bg1}' 191 | 192 | # Background color for prompts. 193 | c.colors.prompts.bg = bg3 194 | 195 | # Background color for the selected item in filename prompts. 196 | c.colors.prompts.selected.bg = bg2 197 | 198 | ### Statusbar 199 | 200 | # Foreground color of the statusbar. 201 | c.colors.statusbar.normal.fg = fg2 202 | 203 | # Background color of the statusbar. 204 | c.colors.statusbar.normal.bg = bg0 205 | 206 | # Foreground color of the statusbar in insert mode. 207 | c.colors.statusbar.insert.fg = bg0 208 | 209 | # Background color of the statusbar in insert mode. 210 | c.colors.statusbar.insert.bg = dark_aqua 211 | 212 | # Foreground color of the statusbar in passthrough mode. 213 | c.colors.statusbar.passthrough.fg = bg0 214 | 215 | # Background color of the statusbar in passthrough mode. 216 | c.colors.statusbar.passthrough.bg = dark_blue 217 | 218 | # Foreground color of the statusbar in private browsing mode. 219 | c.colors.statusbar.private.fg = bright_purple 220 | 221 | # Background color of the statusbar in private browsing mode. 222 | c.colors.statusbar.private.bg = bg0 223 | 224 | # Foreground color of the statusbar in command mode. 225 | c.colors.statusbar.command.fg = fg3 226 | 227 | # Background color of the statusbar in command mode. 228 | c.colors.statusbar.command.bg = bg1 229 | 230 | # Foreground color of the statusbar in private browsing + command mode. 231 | c.colors.statusbar.command.private.fg = c.colors.statusbar.private.fg 232 | 233 | # Background color of the statusbar in private browsing + command mode. 234 | c.colors.statusbar.command.private.bg = c.colors.statusbar.command.bg 235 | 236 | # Foreground color of the statusbar in caret mode. 237 | c.colors.statusbar.caret.fg = bg0 238 | 239 | # Background color of the statusbar in caret mode. 240 | c.colors.statusbar.caret.bg = dark_purple 241 | 242 | # Foreground color of the statusbar in caret mode with a selection. 243 | c.colors.statusbar.caret.selection.fg = c.colors.statusbar.caret.fg 244 | 245 | # Background color of the statusbar in caret mode with a selection. 246 | c.colors.statusbar.caret.selection.bg = bright_purple 247 | 248 | # Background color of the progress bar. 249 | c.colors.statusbar.progress.bg = bright_blue 250 | 251 | # Default foreground color of the URL in the statusbar. 252 | c.colors.statusbar.url.fg = fg4 253 | 254 | # Foreground color of the URL in the statusbar on error. 255 | c.colors.statusbar.url.error.fg = dark_red 256 | 257 | # Foreground color of the URL in the statusbar for hovered links. 258 | c.colors.statusbar.url.hover.fg = bright_orange 259 | 260 | # Foreground color of the URL in the statusbar on successful load 261 | # (http). 262 | c.colors.statusbar.url.success.http.fg = bright_red 263 | 264 | # Foreground color of the URL in the statusbar on successful load 265 | # (https). 266 | c.colors.statusbar.url.success.https.fg = fg0 267 | 268 | # Foreground color of the URL in the statusbar when there's a warning. 269 | c.colors.statusbar.url.warn.fg = bright_purple 270 | 271 | ### tabs 272 | 273 | # Background color of the tab bar. 274 | c.colors.tabs.bar.bg = bg0 275 | 276 | # Color gradient start for the tab indicator. 277 | c.colors.tabs.indicator.start = bright_blue 278 | 279 | # Color gradient end for the tab indicator. 280 | c.colors.tabs.indicator.stop = bright_aqua 281 | 282 | # Color for the tab indicator on errors. 283 | c.colors.tabs.indicator.error = bright_red 284 | 285 | # Foreground color of unselected odd tabs. 286 | c.colors.tabs.odd.fg = fg2 287 | 288 | # Background color of unselected odd tabs. 289 | c.colors.tabs.odd.bg = bg2 290 | 291 | # Foreground color of unselected even tabs. 292 | c.colors.tabs.even.fg = c.colors.tabs.odd.fg 293 | 294 | # Background color of unselected even tabs. 295 | c.colors.tabs.even.bg = bg3 296 | 297 | # Foreground color of selected odd tabs. 298 | c.colors.tabs.selected.odd.fg = fg2 299 | 300 | # Background color of selected odd tabs. 301 | c.colors.tabs.selected.odd.bg = bg0 302 | 303 | # Foreground color of selected even tabs. 304 | c.colors.tabs.selected.even.fg = c.colors.tabs.selected.odd.fg 305 | 306 | # Background color of selected even tabs. 307 | c.colors.tabs.selected.even.bg = bg0 308 | 309 | # Background color of pinned unselected even tabs. 310 | c.colors.tabs.pinned.even.bg = bright_green 311 | 312 | # Foreground color of pinned unselected even tabs. 313 | c.colors.tabs.pinned.even.fg = bg2 314 | 315 | # Background color of pinned unselected odd tabs. 316 | c.colors.tabs.pinned.odd.bg = bright_green 317 | 318 | # Foreground color of pinned unselected odd tabs. 319 | c.colors.tabs.pinned.odd.fg = c.colors.tabs.pinned.even.fg 320 | 321 | # Background color of pinned selected even tabs. 322 | c.colors.tabs.pinned.selected.even.bg = bg0 323 | 324 | # Foreground color of pinned selected even tabs. 325 | c.colors.tabs.pinned.selected.even.fg = c.colors.tabs.selected.odd.fg 326 | 327 | # Background color of pinned selected odd tabs. 328 | c.colors.tabs.pinned.selected.odd.bg = c.colors.tabs.pinned.selected.even.bg 329 | 330 | # Foreground color of pinned selected odd tabs. 331 | c.colors.tabs.pinned.selected.odd.fg = c.colors.tabs.selected.odd.fg 332 | 333 | # Background color for webpages if unset (or empty to use the theme's 334 | # color). 335 | # c.colors.webpage.bg = bg4 336 | -------------------------------------------------------------------------------- /rofi/config.rasi: -------------------------------------------------------------------------------- 1 | // vim: fdm=marker 2 | 3 | configuration { 4 | modes: "window,drun,run,ssh"; 5 | font: "JetBrainsMono NF 18"; 6 | drun-display-format: "{name}"; 7 | } 8 | 9 | * { 10 | // general 11 | bg: #282828; 12 | bgt: #28282895; 13 | t: transparent; 14 | fg: #d4be98; 15 | 16 | selected-bg: @fg; 17 | selected-fg: @bg; 18 | 19 | // for windows 20 | active: #a9b665; 21 | urgent: #fb4934; 22 | } 23 | 24 | window { 25 | fullscreen: true; 26 | padding: 35% 30%; // you might want to ajust these to resize rofi. 27 | transparency: "real"; 28 | background-color: @bgt; 29 | border-color: @t; 30 | } 31 | 32 | listview { 33 | border: 0 0 0 0; 34 | padding: 23 0 0; 35 | scrollbar: true; 36 | } 37 | 38 | scrollbar { 39 | width: 4px; 40 | border: 0; 41 | handle-color: @fg; 42 | handle-width: 8px; 43 | padding: 0 5; 44 | } 45 | 46 | entry { 47 | placeholder: ""; 48 | } 49 | 50 | // less interesting stuff {{{ 51 | 52 | // using elements from: 53 | // https://github.com/bardisty/gruvbox-rofi/blob/master/gruvbox-common.rasi 54 | 55 | textbox { 56 | text-color: @fg; 57 | } 58 | 59 | element { 60 | border: 0; 61 | padding: 2px; 62 | } 63 | element.normal.normal { 64 | background-color: @t; 65 | text-color: @fg; 66 | } 67 | element.normal.urgent { 68 | background-color: @t; 69 | text-color: @urgent; 70 | } 71 | element.normal.active { 72 | background-color: @t; 73 | text-color: @active; 74 | } 75 | element.selected.normal { 76 | background-color: @selected-bg; 77 | text-color: @selected-fg; 78 | } 79 | element.selected.urgent { 80 | background-color: @selected-bg; 81 | text-color: @urgent; 82 | } 83 | element.selected.active { 84 | background-color: @selected-bg; 85 | text-color: @selected-fg; 86 | } 87 | element.alternate.normal { 88 | background-color: @t; 89 | text-color: @fg; 90 | } 91 | element.alternate.urgent { 92 | background-color: @t; 93 | text-color: @urgent; 94 | } 95 | element.alternate.active { 96 | background-color: @t; 97 | text-color: @active; 98 | } 99 | 100 | sidebar { 101 | border: 2px 0 0; 102 | border-color: @fg; 103 | } 104 | 105 | inputbar { 106 | spacing: 0; 107 | text-color: @fg; 108 | padding: 2px; 109 | children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; 110 | } 111 | 112 | case-indicator, 113 | entry, 114 | prompt, 115 | button { 116 | spacing: 0; 117 | text-color: @fg; 118 | } 119 | 120 | button.selected { 121 | background-color: @bg; 122 | text-color: @fg; 123 | } 124 | 125 | textbox-prompt-sep { 126 | expand: false; 127 | str: ":"; 128 | text-color: @fg; 129 | margin: 0 0.3em 0 0; 130 | } 131 | // }}} 132 | -------------------------------------------------------------------------------- /rofi/scripts/system_prompt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | res=$(echo \ 4 | "lock 5 | exit 6 | poweroff 7 | reboot 8 | suspend" \ 9 | | rofi -dmenu -p "system") 10 | 11 | which systemctl &>/dev/null 12 | if [ "$?" -eq 0 ]; then 13 | login_manager="systemctl" 14 | else 15 | login_manager="loginctl" 16 | fi 17 | 18 | case $res in 19 | "lock") 20 | sleep 0.5; # wait for picom fade --- not sure how to do this via script 21 | ~/.scripts/i3lock_launch;; 22 | "exit") 23 | xdotool search "" windowkill %@ --maxdepth; bspc quit;; 24 | "poweroff") 25 | $login_manager poweroff;; 26 | "reboot") 27 | $login_manager reboot;; 28 | "suspend") 29 | $login_manager suspend;; 30 | esac 31 | -------------------------------------------------------------------------------- /scripts/i3lock_launch: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # dependencies: 4 | # i3lock-color 5 | 6 | dark_shade='#000000dd' 7 | darker_shade='#000000dd' 8 | green='#a9b665' 9 | yellow='#d8a657' 10 | red='#ea6962' 11 | white='#d4be98' 12 | black='#3c3836' 13 | blacker='#282828' 14 | 15 | font='JetBrainsMonoNF' 16 | font_size=32 17 | font_size_small=17 18 | 19 | time_str='%H:%M:%S' 20 | date_str='%d %b %Y' 21 | 22 | modif_pos='ix:iy-50' 23 | time_pos='ix:iy' 24 | status_pos='ix:iy' 25 | date_pos='ix:iy+40' 26 | 27 | one_word_args=( 28 | '--nofork' 29 | '--ignore-empty-password' 30 | 31 | '--indicator' 32 | '--clock' 33 | 34 | '--blur 10' 35 | '--radius 120' 36 | '--ring-width 12.0' 37 | 38 | # the idle color for the interior circle and ring 39 | "--inside-color=$dark_shade" 40 | "--ring-color=$green" 41 | 42 | # the interior circle and ring color while the 43 | # password is being verified 44 | "--insidever-color=$dark_shade" 45 | "--ringver-color=$yellow" 46 | 47 | # the interior circle and ring color for during 48 | # incorrect password flashes. 49 | "--insidewrong-color=$dark_shade" 50 | "--ringwrong-color=$red" 51 | 52 | # the color for the line separating the inside circle 53 | # and the outer ring. 54 | "--line-color=$darker_shade" 55 | 56 | # the color of highlight arcs on the ring upon 57 | # keypress and backspace. 58 | "--keyhl-color=$white" 59 | "--bshl-color=$black" 60 | 61 | # the color of the seperators at both ends of the 62 | # highlight arcs on the ring. 63 | "--separator-color=$blacker" 64 | 65 | # the color of the status text while verifying and 66 | # when password is wrong and others. 67 | "--verif-color=$white" 68 | "--wrong-color=$white" 69 | "--modif-color=$white" 70 | "--layout-color=$white" 71 | "--time-color=$white" 72 | "--date-color=$white" 73 | "--greeter-color=$white" 74 | 75 | # set font sizes" 76 | "--time-size=$font_size" 77 | "--layout-size=$font_size" 78 | "--verif-size=$font_size" 79 | "--wrong-size=$font_size" 80 | "--greeter-size=$font_size" 81 | "--date-size=$font_size_small" 82 | 83 | # set positions 84 | "--time-pos=$time_pos" 85 | "--date-pos=$date_pos" 86 | "--status-pos=$status_pos" 87 | "--modif-pos=$modif_pos" 88 | ) 89 | 90 | i3lock ${one_word_args[@]} \ 91 | --time-font="$font" \ 92 | --date-font="$font" \ 93 | --layout-font="$font" \ 94 | --verif-font="$font" \ 95 | --wrong-font="$font" \ 96 | --greeter-font="$font" \ 97 | \ 98 | --time-str="$time_str" \ 99 | --date-str="$date_str" 100 | -------------------------------------------------------------------------------- /scripts/todo: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | $EDITOR $(xdg-user-dir DESKTOP)/todo 4 | -------------------------------------------------------------------------------- /stow.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$1" = "-c" ]; then 4 | echo "[status] fixing broken symlinks..." 5 | find ~ -xtype l -print -delete | sed -e 's/^/[fixing] /;' 6 | 7 | echo "[status] removing empty directories in ~/.config" 8 | find ~/.config -empty -type d -print -delete | sed -e 's/^/[rmdir] /;' 9 | fi 10 | 11 | echo "[status] running gnu stow..." 12 | 13 | HOME_DOTFILES=( 14 | 'xorg' 15 | 'xinit-bspwm' 16 | 'zsh' 17 | ) 18 | 19 | for dir in "${HOME_DOTFILES[@]}"; do 20 | stow --restow --target=$HOME $dir \ 21 | 2> >(grep -v 'BUG in find_stowed_path? Absolute/relative mismatch' 1>&2) # bugfix 22 | done 23 | 24 | mkdir -p $HOME/.scripts 25 | stow --restow --target=$HOME/.scripts scripts 26 | 27 | CONFIG_DOTFILES=( 28 | 'bspwm' 29 | 'sxhkd' 30 | 31 | 'polybar' 32 | 'picom' 33 | 34 | # 'kitty' 35 | 'alacritty' 36 | 'rofi' 37 | 'dunst' 38 | # 'nvim' 39 | 40 | #'qutebrowser' 41 | 'zathura' 42 | 'mpv' 43 | ) 44 | 45 | for dir in "${CONFIG_DOTFILES[@]}"; do 46 | target="$HOME/.config/$dir" 47 | if [ ! -d "$target" ]; then 48 | echo "[mkdir] $target" 49 | mkdir -p "$target" 50 | fi 51 | stow --restow --target=$target $dir 52 | done 53 | -------------------------------------------------------------------------------- /sxhkd/sxhkdrc: -------------------------------------------------------------------------------- 1 | super + {_, shift} + Return 2 | {alacritty, alacritty --class "alacritty-float"} 3 | # {kitty, kitty --class "kitty-float"} 4 | 5 | {super + d, alt + Tab} 6 | rofi -show {drun, window -show-icons} 7 | 8 | super + shift + e 9 | ~/.config/rofi/scripts/system_prompt 10 | 11 | super + shift + r 12 | bspc wm -r 13 | 14 | super + shift + q 15 | bspc node --close 16 | 17 | super + shift + {space,f} 18 | bspc node -t {\~floating,\~fullscreen} 19 | 20 | super + {_,shift + }{h,j,k,l} 21 | bspc node -{f,s} {west,south,north,east} 22 | 23 | super + {_,shift + }{1-9,0} 24 | bspc {desktop -f,node -d} '^{1-9,10}' 25 | 26 | super + ctrl + {h,j,k,l} 27 | bspc node -z {\ 28 | left -20 0 || bspc node -z right -20 0,\ 29 | bottom 0 20 || bspc node -z top 0 20,\ 30 | top 0 -20 || bspc node -z bottom 0 -20,\ 31 | right 20 0 || bspc node -z left 20 0 } 32 | # or better, use the mouse for resizing. 33 | 34 | super + Tab 35 | bspc node -f next.local.!hidden.window 36 | 37 | super + shift + Tab 38 | bspc desktop -f last 39 | 40 | @Print 41 | scrot \ 42 | -a $(slop -f '%x,%y,%w,%h') \ 43 | "$(xdg-user-dir PICTURES)/screenshots/"'%d-%m-%y_$wx$h.png' \ 44 | -e 'xclip -selection clipboard -t image/png -i $f' 45 | 46 | # super + x 47 | # xkb-switch --next; ~/.config/dunst/dunstify/key_notif 48 | 49 | {XF86MonBrightnessUp, XF86MonBrightnessDown} 50 | brightnessctl set {+15, 15-}; ~/.config/dunst/dunstify/br_notif 51 | 52 | {XF86AudioRaiseVolume, XF86AudioLowerVolume} 53 | pactl set-sink-volume @DEFAULT_SINK@ {+10%,-10%}; ~/.config/dunst/dunstify/sink_notif @DEFAULT_SINK@ 54 | 55 | XF86AudioMute 56 | pactl set-sink-mute @DEFAULT_SINK@ toggle; ~/.config/dunst/dunstify/sink_notif @DEFAULT_SINK@ 57 | 58 | XF86AudioMicMute 59 | pactl set-source-mute @DEFAULT_SOURCE@ toggle; ~/.config/dunst/dunstify/source_notif @DEFAULT_SOURCE@ 60 | 61 | XF86Display 62 | xdotool search --class arandr windowclose || arandr 63 | 64 | XF86Tools 65 | xdotool search --class nm-connection-e windowclose || nm-connection-editor 66 | #xdotool search --name iwctl windowclose || kitty --title 'iwctl' -e iwctl 67 | 68 | XF86Favorites 69 | xdotool search --name todo windowclose || alacritty --title 'todo' -e ~/.scripts/todo 70 | # xdotool search --name todo windowclose || kitty --title 'todo' -e ~/.scripts/todo 71 | 72 | # vim: ft=sxhkd 73 | -------------------------------------------------------------------------------- /xinit-bspwm/.xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # defaults {{{ 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/etc/X11/xinit/.Xresources 7 | sysmodmap=/etc/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | if [ -d /etc/X11/xinit/xinitrc.d ] ; then 28 | for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do 29 | [ -x "$f" ] && . "$f" 30 | done 31 | unset f 32 | fi 33 | # }}} 34 | 35 | which systemctl &>/dev/null 36 | if [ "$?" -eq 0 ]; then 37 | exec bspwm 38 | else 39 | exec dbus-run-session bspwm 40 | fi 41 | 42 | 43 | # vim: fdm=marker 44 | -------------------------------------------------------------------------------- /xorg/.Xresources: -------------------------------------------------------------------------------- 1 | ! overall scaling 2 | ! 3 | ! read the following for more info: 4 | ! https://wiki.archlinux.org/title/HiDPI#X_Resources 5 | 6 | Xft.dpi: 120 7 | 8 | ! font options 9 | ! 10 | ! read following for more info: 11 | ! https://wiki.archlinux.org/title/font_configuration#LCD_filter 12 | 13 | Xft.autohint: 0 14 | Xft.hinting: 1 15 | Xft.antialias: 1 16 | Xft.hintstyle: hintslight 17 | Xft.rgba: rgb 18 | Xft.lcdfilter: lcddefault 19 | -------------------------------------------------------------------------------- /zathura/zathura-gruvbox-dark: -------------------------------------------------------------------------------- 1 | # source: 2 | # https://github.com/eastack/zathura-gruvbox 3 | 4 | set notification-error-bg "#282828" # bg 5 | set notification-error-fg "#fb4934" # bright:red 6 | set notification-warning-bg "#282828" # bg 7 | set notification-warning-fg "#fabd2f" # bright:yellow 8 | set notification-bg "#282828" # bg 9 | set notification-fg "#b8bb26" # bright:green 10 | 11 | set completion-bg "#504945" # bg2 12 | set completion-fg "#ebdbb2" # fg 13 | set completion-group-bg "#3c3836" # bg1 14 | set completion-group-fg "#928374" # gray 15 | set completion-highlight-bg "#83a598" # bright:blue 16 | set completion-highlight-fg "#504945" # bg2 17 | 18 | # Define the color in index mode 19 | set index-bg "#504945" # bg2 20 | set index-fg "#ebdbb2" # fg 21 | set index-active-bg "#83a598" # bright:blue 22 | set index-active-fg "#504945" # bg2 23 | 24 | set inputbar-bg "#282828" # bg 25 | set inputbar-fg "#ebdbb2" # fg 26 | 27 | set statusbar-bg "#504945" # bg2 28 | set statusbar-fg "#ebdbb2" # fg 29 | 30 | set highlight-color "#fabd2f" # bright:yellow 31 | set highlight-active-color "#fe8019" # bright:orange 32 | 33 | set default-bg "#282828" # bg 34 | set default-fg "#ebdbb2" # fg 35 | set render-loading true 36 | set render-loading-bg "#282828" # bg 37 | set render-loading-fg "#ebdbb2" # fg 38 | 39 | # Recolor book content's color 40 | set recolor-lightcolor "#282828" # bg 41 | set recolor-darkcolor "#ebdbb2" # fg 42 | set recolor "true" 43 | # set recolor-keephue true # keep original color 44 | -------------------------------------------------------------------------------- /zathura/zathurarc: -------------------------------------------------------------------------------- 1 | 2 | set window-title-basename "true" 3 | set selection-clipboard "clipboard" 4 | 5 | include zathura-gruvbox-dark 6 | 7 | map recolor 8 | 9 | # vim: ft=conf 10 | -------------------------------------------------------------------------------- /zsh/.zprofile: -------------------------------------------------------------------------------- 1 | # start xinit after zsh is started (when logged in) 2 | # and save the xorg log to ~/.xorg.log 3 | 4 | if [ "$(tty)" = "/dev/tty1" ]; then 5 | exec startx -- -keeptty > ~/.xorg.log 2>&1 6 | fi 7 | -------------------------------------------------------------------------------- /zsh/.zshenv: -------------------------------------------------------------------------------- 1 | # vim: foldmethod=marker 2 | 3 | # gnu-utils with colors: {{{ 4 | export LESS='-R --use-color -Dd+r$Du+b$' 5 | export MANPAGER="less -R --use-color -Dd+r -Du+b" 6 | export MANROFFOPT="-P -c" 7 | 8 | eval "$(dircolors)" 9 | LS_COLORS=$LS_COLORS:'tw=00;33:ow=01;33:' # highlight dirs without background. 10 | export LS_COLORS 11 | # }}} 12 | 13 | # append extra paths in PATH variable: 14 | typeset -U path PATH 15 | path=( 16 | #/opt/texlive/*/bin/x86_64-linux 17 | ~/.local/bin 18 | $path 19 | ) 20 | export PATH 21 | 22 | # default editor 23 | export EDITOR=nvim 24 | -------------------------------------------------------------------------------- /zsh/.zshrc: -------------------------------------------------------------------------------- 1 | # vim: foldmethod=marker 2 | 3 | # options {{{ 4 | 5 | # default directory {{{ 6 | DEFAULT_DIR="$(xdg-user-dir DESKTOP)" 7 | # }}} 8 | 9 | # history file {{{ 10 | HISTFILE=~/.histfile 11 | HISTSIZE=1000 12 | SAVEHIST=1000 13 | # }}} 14 | 15 | # emacs bindings {{{ 16 | bindkey -e 17 | # }}} 18 | 19 | # shell options. {{{ 20 | # See 'man zsh-options' for more information. 21 | # setopt autocd 22 | # }}} 23 | 24 | # namespaced properties.{{{ 25 | # See 'man zshmodules' for more information. 26 | zstyle :compinstall filename "$HOME/.zshrc" 27 | # }}} 28 | 29 | # set custom prompt {{{ 30 | 31 | setopt PROMPT_SUBST 32 | autoload -U colors && colors 33 | __blue='%{$fg[blue]%}' 34 | __green='%{$fg[green]%}' 35 | __reset_color='%{$reset_color%}' 36 | __user='%m' 37 | __percent_symbol='%%' 38 | __git_branch () { b=$(git symbolic-ref --short HEAD 2> /dev/null); [ ! "$b" ] || echo "($b) "; } 39 | 40 | __dir='%~' 41 | PROMPT=$__green'$(__git_branch)'$__reset_color'${__user}''${__percent_symbol} ' 42 | RPROMPT=$__blue'${__dir}'$__reset_color 43 | # }}} 44 | 45 | # autocompletion {{{ 46 | autoload -Uz compinit 47 | compinit 48 | # }}} 49 | 50 | # autosuggestions {{{ 51 | export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#6c6c6c" 52 | export ZSH_AUTOSUGGEST_STRATEGY="completion" 53 | 54 | source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 55 | # }}} 56 | 57 | # history-substring-search {{{ 58 | export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND="fg=red" 59 | export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND="fg=magenta" 60 | 61 | bindkey '^[[A' history-substring-search-up 62 | bindkey '^[[B' history-substring-search-down 63 | 64 | source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh 65 | # }}} 66 | # }}} 67 | 68 | # aliases {{{ 69 | 70 | alias cd="HOME=$DEFAULT_DIR cd" 71 | 72 | # confirm before replacing 73 | alias cp='cp -i' 74 | alias mv='mv -i' 75 | 76 | # shiny colors 77 | alias diff='diff --color=auto' 78 | alias grep='grep --color=auto' 79 | alias cat='bat --paging=never --theme=base16' 80 | 81 | # trash-cli 82 | alias rm='echo "Use dl instead."; false' 83 | alias dl='trash-put' 84 | alias dl-remove='trash-empty' 85 | alias dl-list='trash-list' 86 | alias dl-restore='trash-restore' 87 | 88 | # ls variations 89 | alias ls='ls --color=auto -v --group-directories-first' 90 | alias la='ls -lAGh' 91 | alias lst='tree -v --dirsfirst' 92 | alias lsta="lst -a --gitignore -I .git" 93 | 94 | # handy shorthands 95 | function pdf() {(zathura "$@" &;)} 96 | 97 | # gcc variations 98 | alias gcc='gcc -Wall -Wextra -Wshadow -Wconversion -pedantic -g -ggdb3' 99 | alias gccs='gcc -fsanitize=address -fsanitize=undefined'\ 100 | '-fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment' 101 | alias gcco='/usr/bin/gcc -O3 -march=native' 102 | alias gcc_preprocessed='/usr/bin/gcc -E "$@"' 103 | alias gcc_compile='/usr/bin/gcc -S -masm=intel -fverbose-asm' 104 | alias gcc_assemble='/usr/bin/gcc -c' 105 | 106 | alias nasm_elf64='nasm -f elf64 -g' 107 | alias objdump_intel='objdump -drwC -S -M intel' 108 | # }}} 109 | 110 | # keybindings {{{ 111 | # ctrl+g -> clear-screen 112 | bindkey '^g' clear-screen 113 | # ctrl+e -> find files and edit with vim 114 | bindkey -s '^e' ';vim $(fd --type f --strip-cwd-prefix -L | fzf)^M' 115 | # ctrl+f -> find dirs and cd to dir 116 | bindkey -s '^f' ';cd $(fd --type directory --strip-cwd-prefix -L | fzf)^M' 117 | # }}} 118 | 119 | # reset to $DEFAULT_DIR 120 | [ "$(pwd)" = "$HOME" ] && cd 121 | --------------------------------------------------------------------------------