From 30542228ee04001cc9edb9cc75ddf356e63e098f Mon Sep 17 00:00:00 2001 From: RafayAhmad7548 Date: Sat, 26 Jul 2025 20:13:37 +0500 Subject: [PATCH] clean files --- .config/eww/brightnessShow | 1 + .config/eww/eww.scss | 7 + .config/eww/eww.yuck | 21 + .config/fastfetch/config.jsonc | 38 + .config/fontconfig/fonts.conf | 73 + .config/hypr/hyprbinds.conf | 153 + .config/hypr/hypridle.conf | 13 + .config/hypr/hyprland.conf | 149 + .config/hypr/hyprlandd.conf | 261 ++ .config/hypr/hyprlock/1.conf | 56 + .config/hypr/hyprlock/2.conf | 56 + .config/hypr/hyprpaper.conf | 4 + .config/hypr/pauseMod3.xkb | 15 + .config/kitty/kitty.conf | 2491 +++++++++++++++++ .config/kitty/kitty.conf.bak | 2484 ++++++++++++++++ .config/lf/icons | 377 +++ .config/lf/lf_kitty_clean | 3 + .config/lf/lf_kitty_preview | 13 + .config/lf/lfrc | 81 + .config/nvim/init.lua | 1 + .config/nvim/lazy-lock.json | 27 + .config/nvim/lua/config/autocmds.lua | 22 + .config/nvim/lua/config/init.lua | 4 + .config/nvim/lua/config/keymaps.lua | 217 ++ .config/nvim/lua/config/options.lua | 52 + .../nvim/lua/config/plugins/autosession.lua | 38 + .config/nvim/lua/config/plugins/blinkcmp.lua | 72 + .config/nvim/lua/config/plugins/git.lua | 154 + .config/nvim/lua/config/plugins/harpoon.lua | 29 + .config/nvim/lua/config/plugins/init.lua | 40 + .../lua/config/plugins/languages/flutter.lua | 13 + .../nvim/lua/config/plugins/languages/lsp.lua | 124 + .../lua/config/plugins/languages/markdown.lua | 9 + .../lua/config/plugins/languages/molten.lua | 27 + .../config/plugins/languages/treesitter.lua | 42 + .config/nvim/lua/config/plugins/mini.lua | 34 + .config/nvim/lua/config/plugins/snacks.lua | 135 + .config/nvim/lua/config/plugins/ui.lua | 20 + .config/nvim/old.lua | 777 +++++ .config/nvim/plugin/floater.lua | 142 + .config/rofi/color.rasi | 166 ++ .config/rofi/config.rasi | 107 + .config/rofi/config1.rasi | 101 + .config/rofi/config2.rasi | 76 + .config/rofi/werid.rasi | 246 ++ .config/starship.toml | 46 + .config/swaync/config.json | 93 + .config/waybar/config.jsonc | 42 + .config/waybar/modules.jsonc | 148 + .config/waybar/style.css | 298 ++ .config/zed/keymap.json | 137 + .config/zed/keymap_backup.json | 135 + .config/zed/settings.json | 85 + .config/zed/settings_backup.json | 78 + .gitignore | 37 + .gitignore1 | 15 + README.md | 2 + bgs/1.png | Bin 0 -> 2888963 bytes bgs/2.png | Bin 0 -> 2936885 bytes bgs/3.png | Bin 0 -> 2888963 bytes scripts/battWarning.sh | 37 + scripts/battery-alert.svg | 1 + scripts/brightnessWidget.sh | 22 + scripts/changeWallpaper.sh | 28 + scripts/currentWallpaperHyprlock.sh | 8 + scripts/reloadwaybar | 3 + scripts/startWin11.sh | 8 + scripts/youtubeBlocker.py | 67 + scripts/youtubeData | 2 + sddm-theme/AUTHORS | 10 + sddm-theme/COPYING | 380 +++ sddm-theme/Main.qml | 335 +++ sddm-theme/TRADEMARKS | 3 + sddm-theme/angle-down.png | Bin 0 -> 196 bytes sddm-theme/archlinux.png | Bin 0 -> 27182 bytes sddm-theme/background.png | Bin 0 -> 2888963 bytes sddm-theme/metadata.desktop | 13 + sddm-theme/reboot.png | Bin 0 -> 24257 bytes sddm-theme/screenshot.png | Bin 0 -> 6146 bytes sddm-theme/shutdown.png | Bin 0 -> 24418 bytes sddm-theme/test.qml | 279 ++ sddm-theme/theme.conf | 2 + 82 files changed, 11285 insertions(+) create mode 100644 .config/eww/brightnessShow create mode 100644 .config/eww/eww.scss create mode 100644 .config/eww/eww.yuck create mode 100644 .config/fastfetch/config.jsonc create mode 100644 .config/fontconfig/fonts.conf create mode 100644 .config/hypr/hyprbinds.conf create mode 100644 .config/hypr/hypridle.conf create mode 100644 .config/hypr/hyprland.conf create mode 100644 .config/hypr/hyprlandd.conf create mode 100644 .config/hypr/hyprlock/1.conf create mode 100644 .config/hypr/hyprlock/2.conf create mode 100644 .config/hypr/hyprpaper.conf create mode 100644 .config/hypr/pauseMod3.xkb create mode 100644 .config/kitty/kitty.conf create mode 100644 .config/kitty/kitty.conf.bak create mode 100644 .config/lf/icons create mode 100755 .config/lf/lf_kitty_clean create mode 100755 .config/lf/lf_kitty_preview create mode 100644 .config/lf/lfrc create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lazy-lock.json create mode 100644 .config/nvim/lua/config/autocmds.lua create mode 100644 .config/nvim/lua/config/init.lua create mode 100644 .config/nvim/lua/config/keymaps.lua create mode 100644 .config/nvim/lua/config/options.lua create mode 100644 .config/nvim/lua/config/plugins/autosession.lua create mode 100644 .config/nvim/lua/config/plugins/blinkcmp.lua create mode 100644 .config/nvim/lua/config/plugins/git.lua create mode 100644 .config/nvim/lua/config/plugins/harpoon.lua create mode 100644 .config/nvim/lua/config/plugins/init.lua create mode 100644 .config/nvim/lua/config/plugins/languages/flutter.lua create mode 100644 .config/nvim/lua/config/plugins/languages/lsp.lua create mode 100644 .config/nvim/lua/config/plugins/languages/markdown.lua create mode 100644 .config/nvim/lua/config/plugins/languages/molten.lua create mode 100644 .config/nvim/lua/config/plugins/languages/treesitter.lua create mode 100644 .config/nvim/lua/config/plugins/mini.lua create mode 100644 .config/nvim/lua/config/plugins/snacks.lua create mode 100644 .config/nvim/lua/config/plugins/ui.lua create mode 100644 .config/nvim/old.lua create mode 100644 .config/nvim/plugin/floater.lua create mode 100644 .config/rofi/color.rasi create mode 100644 .config/rofi/config.rasi create mode 100644 .config/rofi/config1.rasi create mode 100644 .config/rofi/config2.rasi create mode 100644 .config/rofi/werid.rasi create mode 100644 .config/starship.toml create mode 100644 .config/swaync/config.json create mode 100644 .config/waybar/config.jsonc create mode 100644 .config/waybar/modules.jsonc create mode 100644 .config/waybar/style.css create mode 100644 .config/zed/keymap.json create mode 100644 .config/zed/keymap_backup.json create mode 100644 .config/zed/settings.json create mode 100644 .config/zed/settings_backup.json create mode 100644 .gitignore create mode 100644 .gitignore1 create mode 100644 README.md create mode 100644 bgs/1.png create mode 100644 bgs/2.png create mode 100644 bgs/3.png create mode 100755 scripts/battWarning.sh create mode 100644 scripts/battery-alert.svg create mode 100755 scripts/brightnessWidget.sh create mode 100755 scripts/changeWallpaper.sh create mode 100755 scripts/currentWallpaperHyprlock.sh create mode 100755 scripts/reloadwaybar create mode 100755 scripts/startWin11.sh create mode 100755 scripts/youtubeBlocker.py create mode 100644 scripts/youtubeData create mode 100644 sddm-theme/AUTHORS create mode 100644 sddm-theme/COPYING create mode 100644 sddm-theme/Main.qml create mode 100644 sddm-theme/TRADEMARKS create mode 100644 sddm-theme/angle-down.png create mode 100644 sddm-theme/archlinux.png create mode 100644 sddm-theme/background.png create mode 100644 sddm-theme/metadata.desktop create mode 100644 sddm-theme/reboot.png create mode 100644 sddm-theme/screenshot.png create mode 100644 sddm-theme/shutdown.png create mode 100644 sddm-theme/test.qml create mode 100644 sddm-theme/theme.conf diff --git a/.config/eww/brightnessShow b/.config/eww/brightnessShow new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/.config/eww/brightnessShow @@ -0,0 +1 @@ +false diff --git a/.config/eww/eww.scss b/.config/eww/eww.scss new file mode 100644 index 0000000..8229cb2 --- /dev/null +++ b/.config/eww/eww.scss @@ -0,0 +1,7 @@ +.brightnessWin{ + border-radius: 20px; +} +.label{ + font-size: 20px; +} + diff --git a/.config/eww/eww.yuck b/.config/eww/eww.yuck new file mode 100644 index 0000000..7dd4d92 --- /dev/null +++ b/.config/eww/eww.yuck @@ -0,0 +1,21 @@ +(defpoll brightness + :interval "30ms" + `brightnessctl g | awk -v max=$(brightnessctl m) '{print int($1/max * 100)}'`) + +(defwidget brightness [] + (box :orientation "h" :halign "center" :valign "center" :space-evenly false :spacing 15 + (label :class "label" :text "") + (label :class "label" :text brightness) + (progress :class "progress" :value brightness :valign "center" :width 275))) + +(defwindow brightnessWin + :class "brightnessWin" + :monitor 0 + :geometry (geometry + :x "0%" + :y "50px" + :width "20%" + :height "50px" + :anchor "bottom center") + :stacking "fg" + (brightness)) diff --git a/.config/fastfetch/config.jsonc b/.config/fastfetch/config.jsonc new file mode 100644 index 0000000..40740e4 --- /dev/null +++ b/.config/fastfetch/config.jsonc @@ -0,0 +1,38 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [ + "title", + "separator", + "os", + "host", + "kernel", + "uptime", + "packages", + "shell", + "display", + "de", + "wm", + "wmtheme", + "theme", + "icons", + "font", + "cursor", + "terminal", + "cpu", + "gpu", + "memory", + // "swap", + "disk", + "localip", + "battery", + "poweradapter", + { + "type": "command", + "key": "Lifetime", + "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" + }, + // "locale", + "break", + "colors" + ] +} diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf new file mode 100644 index 0000000..3fe0bd3 --- /dev/null +++ b/.config/fontconfig/fonts.conf @@ -0,0 +1,73 @@ + + + + + + + + ur + + + sans-serif + + + Jameel Noori Nastaleeq + + + + + + ur + + + serif + + + Jameel Noori Nastaleeq + + + + + + + en + + + sans-serif + + + HackNerdFont + + + + + + en + + + serif + + + HackNerdFont + + + + + sans-serif + + HackNerdFont + Jameel Noori Nastaleeq + + + + + monospace + + HackNerdFont + Jameel Noori Nastaleeq + + + + + + diff --git a/.config/hypr/hyprbinds.conf b/.config/hypr/hyprbinds.conf new file mode 100644 index 0000000..4f6f60a --- /dev/null +++ b/.config/hypr/hyprbinds.conf @@ -0,0 +1,153 @@ +plugin { + morebinds { + shift_double = hyprctl dispatch submap moveFocus + esc_double = hyprctl dispatch submap reset + } +} + +# ----------------Submaps----------------- # + +# Empty Map # +submap = disableOtherKeyBinds +bind = SUPER, escape, submap, reset + + + +# Normal # +submap = reset +bind = SUPER, F, submap, disableOtherKeyBinds + +# Application Binds +bind = ALT, T, exec, kitty +bind = ALT, E, exec, nautilus +bind = ALT, F, exec, librewolf +bind = ALT, V, exec, code +bind = ALT, Z, exec, zeditor +bind = ALT, M, exec, prismlauncher +bind = ALT, D, exec, discord +bind = ALT, W, exec, flatpak run com.rtosta.zapzap +bind = SUPER, SUPER_L, exec, rofi -show drun -sort -matching fuzzy + +# Windows VM +bind = CTRL ALT SHIFT, W, exec, /home/rafayahmad/dotfiles/scripts/startWin11.sh + +# Window movement +bind = SUPER, V, togglefloating, +bind = SUPER, H, togglesplit, # dwindle +bind = CTRL, Q, killactive, +bind = ALT, TAB, cyclenext, +bind = SUPER, TAB, swapnext, +bind = SUPER, N, exec, swaync-client -t -sw + +# Move focus +bind = CTRL ALT, L, movefocus, r +bind = CTRL ALT, J, movefocus, l +bind = CTRL ALT, I, movefocus, u +bind = CTRL ALT, K, movefocus, d + +# Fullscreen +bind = , F11, fullscreen, 0 +bind = SUPER, F11, fullscreen, 1 +# bind = ALT, F11, fakefullscreen, + +# Hyprlock +bind = SUPER CTRL, L, exec, ~/dotfiles/scripts/currentWallpaperHyprlock.sh + +# bind = SUPER, M, exec, ~/scripts/killhypr +bind = SUPER, M, exit, +bind = SUPER, F4, exec, ~/dotfiles/scripts/blurWlogout.sh +bind = SUPER, R, exec, ~/dotfiles/scripts/reloadwaybar +bind = SUPER CTRL, R, exec, killall waybar + +# Screenshots +bind = , Print, exec, grim -g "$(slurp)" - | wl-copy +bind = SUPER, Print, exec, grim - | wl-copy +bind = CTRL, Print, exec, grim -g "$(slurp)" +bind = CTRL SUPER, Print, exec, grim + +# Clipboard +bind = SUPER SHIFT, V, exec, kitty --class clipse -e clipse + +# Color Picker +bind = ALT, P, exec, hyprpicker --format=hex -a + +# Audio Controls +bindel=, code:123, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel=, code:122, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl=, code:121, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +# Brightness Controls +bindel = , code:233, exec, brightnessctl s 1%+ && echo true > /home/rafayahmad/dotfiles/.config/eww/brightnessShow +bindel = , code:232, exec, brightnessctl s 1%- && echo true > /home/rafayahmad/dotfiles/.config/eww/brightnessShow + +# Resize windows +binde = ALT, L, resizeactive, 50 0 +binde = ALT, J, resizeactive, -50 0 +binde = ALT, I, resizeactive, 0 -50 +binde = ALT, K, resizeactive, 0 50 + +# Center floating window +bind = SUPER, C, centerwindow, + +# Move windows in tile +bind = SUPER, L, movewindow, r +bind = SUPER, J, movewindow, l +bind = SUPER, I, movewindow, u +bind = SUPER, K, movewindow, d + +# Switch workspaces with mainMod + [0-9] +bind = SUPER, 1, workspace, 1 +bind = SUPER, 2, workspace, 2 +bind = SUPER, 3, workspace, 3 +bind = SUPER, Q, workspace, 4 +bind = SUPER, W, workspace, 5 +bind = SUPER, E, workspace, 6 +bind = SUPER, A, workspace, 7 +bind = SUPER, S, workspace, 8 +bind = SUPER, D, workspace, 9 +bind = SUPER, 0, workspace, 10 +bind = ALT, 1, togglespecialworkspace, whatsapp +bind = ALT, 2, togglespecialworkspace, thunderbird + +# Move active window to a workspace and switch with mainMod + SHIFT + [0-9] +bind = SUPER SHIFT, 1, movetoworkspace, 1 +bind = SUPER SHIFT, 2, movetoworkspace, 2 +bind = SUPER SHIFT, 3, movetoworkspace, 3 +bind = SUPER SHIFT, Q, movetoworkspace, 4 +bind = SUPER SHIFT, W, movetoworkspace, 5 +bind = SUPER SHIFT, E, movetoworkspace, 6 +bind = SUPER SHIFT, A, movetoworkspace, 7 +bind = SUPER SHIFT, S, movetoworkspace, 8 +bind = SUPER SHIFT, D, movetoworkspace, 9 +bind = SUPER SHIFT, 0, movetoworkspace, 10 +bind = ALT SHIFT, 1, movetoworkspace, special:whatsapp +bind = ALT SHIFT, 2, movetoworkspace, special:thunderbird + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = SUPER CTRL, 1, movetoworkspacesilent, 1 +bind = SUPER CTRL, 2, movetoworkspacesilent, 2 +bind = SUPER CTRL, 3, movetoworkspacesilent, 3 +bind = SUPER CTRL, Q, movetoworkspacesilent, 4 +bind = SUPER CTRL, W, movetoworkspacesilent, 5 +bind = SUPER CTRL, E, movetoworkspacesilent, 6 +bind = SUPER CTRL, A, movetoworkspacesilent, 7 +bind = SUPER CTRL, S, movetoworkspacesilent, 8 +bind = SUPER CTRL, D, movetoworkspacesilent, 9 +bind = SUPER CTRL, 0, movetoworkspacesilent, 10 +bind = ALT CTRL, 1, movetoworkspacesilent, special:whatsapp +bind = ALT CTRL, 2, movetoworkspacesilent, special:thunderbird + +# Example special workspace (scratchpad) +# bind = SUPER, S, togglespecialworkspace, magic +# bind = SUPER SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = SUPER, mouse_down, workspace, e+1 +bind = SUPER, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = SUPER, mouse:272, movewindow +bindm = ALT, mouse:272, resizewindow + +# Shutdown/Reboot +bind = CTRL ALT, Z, exec, reboot +bind = CTRL ALT, X, exec, shutdown now diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..279dc1b --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -0,0 +1,13 @@ +listener { + timeout = 300 + on-timeout = ~/dotfiles/scripts/currentWallpaperHyprlock.sh +} +listener { + timeout = 460 + on-timeout = hyprctl dispatch dpms off + on-resume = hyprctl dispatch dpms on +} +listener { + timeout = 600 + on-timeout = systemctl suspend +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..9a7e007 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,149 @@ +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +#autogenerated = 1 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=eDP-1,1920x1080@60,0x0,1 +monitor=HDMI-A-1,1920x1080@60,0x0,1,mirror,eDP-1 + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +exec-once = hypridle +exec-once = waybar +exec-once = clipse -listen +exec-once = swaync +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = /home/rafayahmad/eww/target/release/eww daemon + +exec-once = hyprpaper && ~/dotfiles/scripts/currentWallpaperHyprlock.sh +exec-once = /home/rafayahmad/dotfiles/scripts/brightnessWidget.sh +exec-once = ~/dotfiles/scripts/battWarning.sh +exec-once = ~/dotfiles/scripts/youtubeBlocker.py + +exec-once = [workspace special:whatsapp silent] flatpak run com.rtosta.zapzap +exec-once = [workspace special:thunderbird silent] thunderbird + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf +source = ~/.config/hypr/hyprbinds.conf + +# Set programs that you use +$menu = ~/Stuff/scripts/rofiFocus.sh + +# Some default env vars. +env = XCURSOR_SIZE,24 +env = XCURSOR_THEME,mytheme +env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that +env = GTK_THEME, Adwaita-dark + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = + kb_variant = + kb_model = + kb_options = + kb_rules = + kb_file = /home/rafayahmad/.config/hypr/pauseMod3.xkb + numlock_by_default = true + + follow_mouse = 1 + + touchpad { + natural_scroll = yes + } + + sensitivity = 0.25 # -1.0 - 1.0, 0 means no modification. + + repeat_rate = 30 + repeat_delay = 200 +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 10 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + inactive_opacity = 0.8 + blur { + enabled = true + size = 4 + passes = 2 + ignore_opacity=true + } + +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default + animation = specialWorkspace, 1, 7, myBezier, slidefadevert +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + # new_is_master = true +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = on +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers + enable_anr_dialog = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +# device:epic-mouse-v1 { +# sensitivity = -0.5 +# } + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# windowrulev2 = nomaximizerequest, class:.* # You'll probably like this. + +windowrulev2 = pin, class:(Rofi) +windowrulev2 = float, class:(clipse) +windowrulev2 = size 700 600, class:(clipse) +windowrulev2 = float, class:^(xdg-desktop-portal-gtk|gtk3-filechooser-dialog)$ +windowrulev2 = size 900 600, class:^(xdg-desktop-portal-gtk|gtk3-filechooser-dialog)$ diff --git a/.config/hypr/hyprlandd.conf b/.config/hypr/hyprlandd.conf new file mode 100644 index 0000000..8925578 --- /dev/null +++ b/.config/hypr/hyprlandd.conf @@ -0,0 +1,261 @@ +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +#autogenerated = 1 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,auto +monitor=,1920x1080@60,0x0,1 + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Set programs that you use +$terminal = kitty +# $fileManager = GTK_THEME="Adwaita:dark" nautilus +$fileManager = nautilus +$menu = ~/Stuff/scripts/rofiFocus.sh + +# Some default env vars. +env = XCURSOR_SIZE,24 +env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that +env = GTK_THEME, Adwaita-dark + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us,pk + kb_variant = + kb_model = + kb_options = grp:win_space_toggle , caps:swapescape + kb_rules = + numlock_by_default = true + + follow_mouse = 1 + + touchpad { + natural_scroll = yes + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 20 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + inactive_opacity = 0.8 + blur { + enabled = true + size = 4 + passes = 2 + ignore_opacity=true + } + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +# master { +# # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +# new_is_master = true +# } + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = on +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers +} + +plugin { + morebinds { + shift_single = nautilus + shift_double = kitty + esc_double = hyprctl dispatch killactive + } +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +# device:epic-mouse-v1 { +# sensitivity = -0.5 +# } + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# windowrulev2 = nomaximizerequest, class:.* # You'll probably like this. +windowrule = float, title:nmtui +windowrule = float, title:UltimMC +windowrule = size 800 650, title:UltimMC +# windowrule = size 1320 880, floating + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Application Binds +bind = ALT, T, exec, $terminal +bind = ALT, E, exec, $fileManager +bind = ALT, F, exec, firefox +bind = ALT, V, exec, code +bind = ALT, M, exec, /opt/ultimmc/run.sh + +bind = $mainMod, V, togglefloating, +bind = $mainMod, H, togglesplit, # dwindle +bind = CTRL, Q, killactive, +bind = $mainMod, P, pseudo, # dwindle +bind = ALT, TAB, cyclenext, +bind = $mainMod, TAB, swapnext, + +bind = , F11, fullscreen, 0 +bind = $mainMod, F11, fullscreen, 1 +bind = ALT, F11, fakefullscreen, + +bind = $mainMod CTRL, L, exec, swaylock + +# bind = $mainMod, M, exec, ~/scripts/killhypr +bind = $mainMod, M, exit, +bind = $mainMod, F4, exec, ~/Stuff/scripts/blurWlogout.sh +bind = $mainMod, R, exec, ~/Stuff/scripts/reloadwaybar + +# Screenshots +bind = , Print, exec, grim -g "$(slurp)" && mv ~/ *_grim.png ~/Pictures/screenshots +bind = $mainMod, Print, exec, grim && mv ~/*_grim.png ~/Pictures/screenshots + +# Color Picker +bind = ALT, P, exec, hyprpicker --format=hex -a + +# Audio Controls +bindel=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +# Brightness Controls +bindel = , XF86MonBrightnessUp, exec, brightnessctl s 5%+ # increase brightness +bindel = , XF86MonBrightnessDown, exec, brightnessctl s 5%- # decrease brightness + +# Move focus with mainMod + arrow keys +bind = CTRL, J, movefocus, l +bind = CTRL, L, movefocus, r +bind = CTRL, I, movefocus, u +bind = CTRL, K, movefocus, d + +# Resize windows +binde = ALT, L, resizeactive, 50 0 +binde = ALT, J, resizeactive, -50 0 +binde = ALT, I, resizeactive, 0 -50 +binde = ALT, K, resizeactive, 0 50 + +# Center floating window +bind = $mainMod, C, centerwindow, + +# Move windows in tile +bind = $mainMod, L, movewindow, r +bind = $mainMod, J, movewindow, l +bind = $mainMod, I, movewindow, u +bind = $mainMod, K, movewindow, d + +# Switch wokspaces next/prev +# bind = $mainMod, J, workspace, e-1 +# bind = $mainMod, L, workspace, e+1 + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace and switch with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod CTRL, 1, movetoworkspacesilent, 1 +bind = $mainMod CTRL, 2, movetoworkspacesilent, 2 +bind = $mainMod CTRL, 3, movetoworkspacesilent, 3 +bind = $mainMod CTRL, 4, movetoworkspacesilent, 4 +bind = $mainMod CTRL, 5, movetoworkspacesilent, 5 +bind = $mainMod CTRL, 6, movetoworkspacesilent, 6 +bind = $mainMod CTRL, 7, movetoworkspacesilent, 7 +bind = $mainMod CTRL, 8, movetoworkspacesilent, 8 +bind = $mainMod CTRL, 9, movetoworkspacesilent, 9 +bind = $mainMod CTRL, 0, movetoworkspacesilent, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = ALT, mouse:272, resizewindow + +# Shutdown/Reboot +bind = CTRL ALT, Z, exec, reboot +bind = CTRL ALT, X, exec, shutdown now + diff --git a/.config/hypr/hyprlock/1.conf b/.config/hypr/hyprlock/1.conf new file mode 100644 index 0000000..f5ae753 --- /dev/null +++ b/.config/hypr/hyprlock/1.conf @@ -0,0 +1,56 @@ +background { + monitor = + path = $currentWallpaper + color = rgba(25, 20, 20, 1.0) + + blur_passes = 1 # 0 disables blurring + blur_size = 7 + noise = 0.0117 + contrast = 0.8916 + brightness = 0.8172 + vibrancy = 0.1696 + vibrancy_darkness = 0.0 +} +input-field { + monitor = + size = 200, 50 + outline_thickness = 3 + dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + dots_rounding = -1 # -1 default circle, -2 follow input-field rounding + outer_color = rgba(0, 0, 0, 0) + inner_color = rgba(0, 0, 0, 0) + font_color = rgb(FFFFFF) + fade_on_empty = true + fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. + placeholder_text = + hide_input = false + rounding = -1 # -1 means complete rounding (circle/oval) + check_color = rgb(204, 136, 34) + fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color + fail_text = + fail_transition = 300 # transition time in ms between normal outer_color and fail_color + capslock_color = 1 + numlock_color = 1 + bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) + invert_numlock = false # change color if numlock is off + swap_font_color = false # see below + position = 0, -20 + halign = center + valign = center +} + +label { + monitor = + text = cmd[update:1000] printf "$(date +%I)\n$(date +%M)" + # color = rgba(200, 200, 200, 1.0) + color = rgb(F4DA7D) + font_size = 100 + font_family = HackNerdFont + position = 0, 200 + halign = center + valign = center + shadow_passes = 5 + shadow_size = 10 +} diff --git a/.config/hypr/hyprlock/2.conf b/.config/hypr/hyprlock/2.conf new file mode 100644 index 0000000..9888fe9 --- /dev/null +++ b/.config/hypr/hyprlock/2.conf @@ -0,0 +1,56 @@ +background { + monitor = + path = $currentWallpaper + color = rgba(25, 20, 20, 1.0) + + blur_passes = 1 # 0 disables blurring + blur_size = 7 + noise = 0.0117 + contrast = 0.8916 + brightness = 0.8172 + vibrancy = 0.1696 + vibrancy_darkness = 0.0 +} +input-field { + monitor = + size = 200, 50 + outline_thickness = 3 + dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + dots_rounding = -1 # -1 default circle, -2 follow input-field rounding + outer_color = rgba(0, 0, 0, 0) + inner_color = rgba(0, 0, 0, 0) + font_color = rgb(FFFFFF) + fade_on_empty = true + fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. + placeholder_text = + hide_input = false + rounding = -1 # -1 means complete rounding (circle/oval) + check_color = rgb(204, 136, 34) + fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color + fail_text = + fail_transition = 300 # transition time in ms between normal outer_color and fail_color + capslock_color = 1 + numlock_color = 1 + bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) + invert_numlock = false # change color if numlock is off + swap_font_color = false # see below + position = 130, -220 + halign = left + valign = center +} + +label { + monitor = + text = cmd[update:1000] printf "$(date +%I)\n$(date +%M)" + # color = rgba(200, 200, 200, 1.0) + color = rgb(FFFFFF) + font_size = 100 + font_family = HackNerdFont + position = 150, 0 + halign = left + valign = center + shadow_passes = 5 + shadow_size = 10 +} diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..349ec14 --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,4 @@ +splash = false +preload = ~/dotfiles/bgs/2.png +preload = ~/dotfiles/bgs/1.png +wallpaper = eDP-1, ~/dotfiles/bgs/1.png diff --git a/.config/hypr/pauseMod3.xkb b/.config/hypr/pauseMod3.xkb new file mode 100644 index 0000000..5f10157 --- /dev/null +++ b/.config/hypr/pauseMod3.xkb @@ -0,0 +1,15 @@ +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols { + include "pc+us+pk:2+group(win_space_toggle)" + + key { [ Pause ] }; + modifier_map Mod3 { }; + + key { [ Escape ] }; + + }; + xkb_geometry { include "pc(pc105)" }; +}; diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..b061b99 --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,2491 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +# font_family monospace +# bold_font auto +# italic_font auto +# bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: +list-fonts` command. By default they are derived automatically, by +#: the OSes font system. When bold_font or bold_italic_font is set to +#: auto on macOS, the priority of bold fonts is semi-bold, bold, +#: heavy. Setting them manually is useful for font families that have +#: many weight variants like Book, Medium, Thick, etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +# font_size 11.0 + +#: Font size (in pts) + +# force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the string been LTR. For example, assuming the Hebrew word ירושלים, +#: selecting the character that on the screen appears to be ם actually +#: writes into the selection buffer the character י. kitty's default +#: behavior is useful in conjunction with a filter to reverse the word +#: order, however, if you wish to manipulate RTL glyphs, it can be +#: very challenging to work with, so this option is provided to turn +#: it off. Furthermore, this option can be used with the command line +#: program GNU FriBidi +#: to get BIDI support, because it will force kitty to always treat +#: the text as LTR, which FriBidi expects for terminals. + +# symbol_map + +#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified Unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each Unicode code +#: point is specified in the form `U+`. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. This option can be specified multiple times. +#: The syntax is:: + +#: symbol_map codepoints Font Family Name + +# narrow_symbols + +#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 + +#: Usually, for Private Use Unicode characters and some symbol/dingbat +#: characters, if the character is followed by one or more spaces, +#: kitty will use those extra cells to render the character larger, if +#: the character in the font has a wide aspect ratio. Using this +#: option you can force kitty to restrict the specified code points to +#: render in the specified number of cells (defaulting to one cell). +#: This option can be specified multiple times. The syntax is:: + +#: narrow_symbols codepoints [optionally the number of cells] + +# disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features option. + +# font_features + +#: E.g. font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code includes a discretionary feature, +#: zero, which in that font changes the appearance of the zero (0), to +#: make it more easily distinguishable from Ø. Fira Code also includes +#: other discretionary features known as Stylistic Sets which have the +#: tags ss01 through ss20. + +#: For the exact syntax to use for individual features, see the +#: HarfBuzz documentation . + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: On Linux, font features are first read from the FontConfig database +#: and then this option is applied, so they can be configured in a +#: single, central place. + +#: To get the PostScript name for a font, use `kitty +list-fonts +#: --psnames`: + +#: .. code-block:: sh + +#: $ kitty +list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero in the bold font:: + +#: font_features FiraCode-Bold +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +# modify_font + +#: Modify font characteristics such as the position or thickness of +#: the underline and strikethrough. The modifications can have the +#: suffix px for pixels or % for percentage of original value. No +#: suffix means use pts. For example:: + +#: modify_font underline_position -2 +#: modify_font underline_thickness 150% +#: modify_font strikethrough_position 2px + +#: Additionally, you can modify the size of the cell in which each +#: font glyph is rendered and the baseline at which the glyph is +#: placed in the cell. For example:: + +#: modify_font cell_width 80% +#: modify_font cell_height -2px +#: modify_font baseline 3 + +#: Note that modifying the baseline will automatically adjust the +#: underline and strikethrough positions by the same amount. +#: Increasing the baseline raises glyphs inside the cell and +#: decreasing it lowers them. Decreasing the cell size might cause +#: rendering artifacts, so use with care. + +# box_drawing_scale 0.001, 1, 1.5, 2 + +#: The sizes of the lines used for the box drawing Unicode characters. +#: These values are in pts. They will be scaled by the monitor DPI to +#: arrive at a pixel value. There must be four values corresponding to +#: thin, normal, thick, and very thick lines. + +# undercurl_style thin-sparse + +#: The style with which undercurls are rendered. This option takes the +#: form (thin|thick)-(sparse|dense). Thin and thick control the +#: thickness of the undercurl. Sparse and dense control how often the +#: curl oscillates. With sparse the curl will peak once per character, +#: with dense twice. + +# text_composition_strategy platform + +#: Control how kitty composites text glyphs onto the background color. +#: The default value of platform tries for text rendering as close to +#: "native" for the platform kitty is running on as possible. + +#: A value of legacy uses the old (pre kitty 0.28) strategy for how +#: glyphs are composited. This will make dark text on light +#: backgrounds look thicker and light text on dark backgrounds +#: thinner. It might also make some text appear like the strokes are +#: uneven. + +#: You can fine tune the actual contrast curve used for glyph +#: composition by specifying up to two space-separated numbers for +#: this setting. + +#: The first number is the gamma adjustment, which controls the +#: thickness of dark text on light backgrounds. Increasing the value +#: will make text appear thicker. The default value for this is 1.0 on +#: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result +#: is scaled based on the luminance difference between the background +#: and the foreground. Dark text on light backgrounds receives the +#: full impact of the curve while light text on dark backgrounds is +#: affected very little. + +#: The second number is an additional multiplicative contrast. It is +#: percentage ranging from 0 to 100. The default value is 0 on Linux +#: and 30 on macOS. + +#: If you wish to achieve similar looking thickness in light and dark +#: themes, a good way to experiment is start by setting the value to +#: 1.0 0 and use a dark theme. Then adjust the second parameter until +#: it looks good. Then switch to a light theme and adjust the first +#: parameter until the perceived thickness matches the dark theme. + +# text_fg_override_threshold 0 + +#: The minimum accepted difference in luminance between the foreground +#: and background color, below which kitty will override the +#: foreground color. It is percentage ranging from 0 to 100. If the +#: difference in luminance of the foreground and background is below +#: this threshold, the foreground color will be set to white if the +#: background is dark or black if the background is light. The default +#: value is 0, which means no overriding is performed. Useful when +#: working with applications that use colors that do not contrast well +#: with your preferred color scheme. + +#: WARNING: Some programs use characters (such as block characters) +#: for graphics display and may expect to be able to set the +#: foreground and background to the same color (or similar colors). +#: If you see unexpected stripes, dots, lines, incorrect color, no +#: color where you expect color, or any kind of graphic display +#: problem try setting text_fg_override_threshold to 0 to see if this +#: is the cause of the problem. + +#: }}} + + +#: Cursor customization {{{ + +# cursor #cccccc + +#: Default cursor color. If set to the special value none the cursor +#: will be rendered with a "reverse video" effect. It's color will be +#: the color of the text in the cell it is over and the text will be +#: rendered with the background color of the cell. Note that if the +#: program running in the terminal sets a cursor color, this takes +#: precedence. Also, the cursor colors are modified if the cell +#: background and foreground colors have very low contrast. Note that +#: some themes set this value, so if you want to override it, place +#: your value after the lines where the theme file is included. + +# cursor_text_color #111111 + +#: The color of text under the cursor. If you want it rendered with +#: the background color of the cell underneath instead, use the +#: special keyword: background. Note that if cursor is set to none +#: then this option is ignored. Note that some themes set this value, +#: so if you want to override it, place your value after the lines +#: where the theme file is included. + +# cursor_shape block + +#: The cursor shape can be one of block, beam, underline. Note that +#: when reloading the config this will be changed only if the cursor +#: shape has not been set by the program running in the terminal. This +#: sets the default cursor shape, applications running in the terminal +#: can override it. In particular, shell integration +#: in kitty sets +#: the cursor shape to beam at shell prompts. You can avoid this by +#: setting shell_integration to no-cursor. + +# cursor_beam_thickness 1.5 + +#: The thickness of the beam cursor (in pts). + +# cursor_underline_thickness 2.0 + +#: The thickness of the underline cursor (in pts). + +# cursor_blink_interval -1 + +#: The interval to blink the cursor (in seconds). Set to zero to +#: disable blinking. Negative values mean use system default. Note +#: that the minimum interval will be limited to repaint_delay. + +# cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +# scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down performance of the terminal and +#: also use large amounts of RAM. Instead, consider using +#: scrollback_pager_history_size. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position or +#: set to 0 if there is no cursor, for example, when showing the last +#: command output. + +# scrollback_pager_history_size 0 + +#: Separate scrollback history size (in MB), used only for browsing +#: the scrollback buffer with pager. This separate buffer is not +#: available for interactive scrolling but will be piped to the pager +#: program when viewing scrollback buffer in a separate window. The +#: current implementation stores the data in UTF-8, so approximately +#: 10000 lines per megabyte at 100 chars per line, for pure ASCII, +#: unformatted text. A value of zero or less disables this feature. +#: The maximum allowed size is 4GB. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +# scrollback_fill_enlarged_window no + +#: Fill new space with lines from the scrollback buffer after +#: enlarging a window. + +# wheel_scroll_multiplier 5.0 + +#: Multiplier for the number of lines scrolled by the mouse wheel. +#: Note that this is only used for low precision scrolling devices, +#: not for high precision scrolling devices on platforms such as macOS +#: and Wayland. Use negative numbers to change scroll direction. See +#: also wheel_scroll_min_lines. + +# wheel_scroll_min_lines 1 + +#: The minimum number of lines scrolled by the mouse wheel. The scroll +#: multiplier wheel_scroll_multiplier only takes effect after it +#: reaches this number. Note that this is only used for low precision +#: scrolling devices like wheel mice that scroll by very small amounts +#: when using the wheel. With a negative number, the minimum number of +#: lines will always be added. + +# touch_scroll_multiplier 1.0 + +#: Multiplier for the number of lines scrolled by a touchpad. Note +#: that this is only used for high precision scrolling devices on +#: platforms such as macOS and Wayland. Use negative numbers to change +#: scroll direction. + +#: }}} + +#: Mouse {{{ + +# mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +# url_color #0087bd +# url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, straight, double, curly, dotted, dashed. + +# open_url_with default + +#: The program to open clicked URLs. The special value default will +#: first look for any URL handlers defined via the open_actions +#: facility and if non +#: are found, it will use the Operating System's default URL handler +#: (open on macOS and xdg-open on Linux). + +# url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +# detect_urls yes + +#: Detect URLs under the mouse. Detected URLs are highlighted with an +#: underline and the mouse cursor becomes a hand over them. Even if +#: this option is disabled, URLs are still clickable. See also the +#: underline_hyperlinks option to control how hyperlinks (as opposed +#: to plain text URLs) are displayed. + +# url_excluded_characters + +#: Additional characters to be disallowed from URLs, when detecting +#: URLs under the mouse cursor. By default, all characters that are +#: legal in URLs are allowed. Additionally, newlines are allowed (but +#: stripped). This is to accommodate programs such as mutt that add +#: hard line breaks even for continued lines. \n can be added to this +#: option to disable this behavior. Special characters can be +#: specified using backslash escapes, to specify a backslash use a +#: double backslash. + +# show_hyperlink_targets no + +#: When the mouse hovers over a terminal hyperlink, show the actual +#: URL that will be activated when the hyperlink is clicked. + +# underline_hyperlinks hover + +#: Control how hyperlinks are underlined. They can either be +#: underlined on mouse hover, always (i.e. permanently underlined) or +#: never which means that kitty will not apply any underline styling +#: to hyperlinks. Uses the url_style and url_color settings for the +#: underline style. Note that reloading the config and changing this +#: value to/from always will only affect text subsequently received by +#: kitty. + +# copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, selecting text with the mouse will cause the text to be +#: copied to clipboard. Useful on platforms such as macOS that do not +#: have the concept of primary selection. You can instead specify a +#: name such as a1 to copy to a private kitty buffer. Map a shortcut +#: with the paste_from_buffer action to paste from this private +#: buffer. For example:: + +#: copy_on_select a1 +#: map shift+cmd+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +# paste_actions quote-urls-at-prompt,confirm + +#: A comma separated list of actions to take when pasting text into +#: the terminal. The supported paste actions are: + +#: quote-urls-at-prompt: +#: If the text being pasted is a URL and the cursor is at a shell prompt, +#: automatically quote the URL (needs shell_integration). +#: replace-dangerous-control-codes +#: Replace dangerous control codes from pasted text, without confirmation. +#: replace-newline +#: Replace the newline character from pasted text, without confirmation. +#: confirm: +#: Confirm the paste if the text to be pasted contains any terminal control codes +#: as this can be dangerous, leading to code execution if the shell/program running +#: in the terminal does not properly handle these. +#: confirm-if-large +#: Confirm the paste if it is very large (larger than 16KB) as pasting +#: large amounts of text into shells can be very slow. +#: filter: +#: Run the filter_paste() function from the file paste-actions.py in +#: the kitty config directory on the pasted text. The text returned by the +#: function will be actually pasted. +#: no-op: +#: Has no effect. + +# strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. A value of always will always do it. + +# select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the Unicode database will be matched. + +# select_by_word_characters_forward + +#: Characters considered part of a word when extending the selection +#: forward on double clicking. In addition to these characters any +#: character that is marked as an alphanumeric character in the +#: Unicode database will be matched. + +#: If empty (default) select_by_word_characters will be used for both +#: directions. + +# click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +# focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around. On macOS, this will also cause the OS Window under +#: the mouse to be focused automatically when the mouse enters it. + +# pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. + +# default_pointer_shape beam + +#: The default shape of the mouse pointer. + +# pointer_shape_when_dragging beam + +#: The default shape of the mouse pointer when dragging across text. + +#: Mouse actions {{{ + +#: Mouse buttons can be mapped to perform arbitrary actions. The +#: syntax is: + +#: .. code-block:: none + +#: mouse_map button-name event-type modes action + +#: Where button-name is one of left, middle, right, b1 ... b8 with +#: added keyboard modifiers. For example: ctrl+shift+left refers to +#: holding the Ctrl+Shift keys while clicking with the left mouse +#: button. The value b1 ... b8 can be used to refer to up to eight +#: buttons on a mouse. + +#: event-type is one of press, release, doublepress, triplepress, +#: click, doubleclick. modes indicates whether the action is performed +#: when the mouse is grabbed by the program running in the terminal, +#: or not. The values are grabbed or ungrabbed or a comma separated +#: combination of them. grabbed refers to when the program running in +#: the terminal has requested mouse events. Note that the click and +#: double click events have a delay of click_interval to disambiguate +#: from double and triple presses. + +#: You can run kitty with the kitty --debug-input command line option +#: to see mouse events. See the builtin actions below to get a sense +#: of what is possible. + +#: If you want to unmap a button, map it to nothing. For example, to +#: disable opening of URLs with a plain click:: + +#: mouse_map left click ungrabbed + +#: See all the mappable actions including mouse actions here +#: . + +#: .. note:: +#: Once a selection is started, releasing the button that started it will +#: automatically end it and no release event will be dispatched. + +# clear_all_mouse_actions no + +#: Remove all mouse action definitions up to this point. Useful, for +#: instance, to remove the default mouse actions. + +#: Click the link under the mouse or move the cursor + +# mouse_map left click ungrabbed mouse_handle_click selection link prompt + +#:: First check for a selection and if one exists do nothing. Then +#:: check for a link under the mouse cursor and if one exists, click +#:: it. Finally check if the click happened at the current shell +#:: prompt and if so, move the cursor to the click location. Note +#:: that this requires shell integration +#:: to work. + +#: Click the link under the mouse or move the cursor even when grabbed + +# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt + +#:: Same as above, except that the action is performed even when the +#:: mouse is grabbed by the program running in the terminal. + +#: Click the link under the mouse cursor + +# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link + +#:: Variant with Ctrl+Shift is present because the simple click based +#:: version has an unavoidable delay of click_interval, to +#:: disambiguate clicks from double clicks. + +#: Discard press event for link click + +# mouse_map ctrl+shift+left press grabbed discard_event + +#:: Prevent this press event from being sent to the program that has +#:: grabbed the mouse, as the corresponding release event is used to +#:: open a URL. + +#: Paste from the primary selection + +# mouse_map middle release ungrabbed paste_from_selection + +#: Start selecting text + +# mouse_map left press ungrabbed mouse_selection normal + +#: Start selecting text in a rectangle + +# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle + +#: Select a word + +# mouse_map left doublepress ungrabbed mouse_selection word + +#: Select a line + +# mouse_map left triplepress ungrabbed mouse_selection line + +#: Select line from point + +# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line. If you +#:: would like to select the word at the point and then extend to the +#:: rest of the line, change line_from_point to +#:: word_and_line_from_point. + +#: Extend the current selection + +# mouse_map right press ungrabbed mouse_selection extend + +#:: If you want only the end of the selection to be moved instead of +#:: the nearest boundary, use move-end instead of extend. + +#: Paste from the primary selection even when grabbed + +# mouse_map shift+middle release ungrabbed,grabbed paste_selection +# mouse_map shift+middle press grabbed discard_event + +#: Start selecting text even when grabbed + +# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal + +#: Start selecting text in a rectangle even when grabbed + +# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle + +#: Select a word even when grabbed + +# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word + +#: Select a line even when grabbed + +# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line + +#: Select line from point even when grabbed + +# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line even when +#:: grabbed. If you would like to select the word at the point and +#:: then extend to the rest of the line, change line_from_point to +#:: word_and_line_from_point. + +#: Extend the current selection even when grabbed + +# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend + +#: Show clicked command output in pager + +# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: }}} + +#: Performance tuning {{{ + +# repaint_delay 10 + +#: Delay between screen updates (in milliseconds). Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS, you have to +#: either set sync_to_monitor to no or use a monitor with a high +#: refresh rate. Also, to minimize latency when there is pending input +#: to be processed, this option is ignored. + +# input_delay 3 + +#: Delay before input from the program running in the terminal is +#: processed (in milliseconds). Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. +#: This setting is ignored when the input buffer is almost full. + +# sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents screen tearing +#: when scrolling. +#: However, it limits the rendering speed to the refresh rate of your +#: monitor. With a very high speed mouse/high keyboard repeat rate, +#: you may notice some slight input latency. If so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +# enable_audio_bell yes + +#: The audio bell. Useful to disable it in environments that require +#: silence. + +# visual_bell_duration 0.0 + +#: The visual bell duration (in seconds). Flash the screen when a bell +#: occurs for the specified number of seconds. Set to zero to disable. + +# visual_bell_color none + +#: The color used by visual bell. Set to none will fall back to +#: selection background color. If you feel that the visual bell is too +#: bright, you can set it to a darker color. + +# window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +# bell_on_tab "🔔 " + +#: Some text or a Unicode symbol to show on the tab if a window in the +#: tab that does not have focus has a bell. If you want to use leading +#: or trailing spaces, surround the text with quotes. See +#: tab_title_template for how this is rendered. + +#: For backwards compatibility, values of yes, y and true are +#: converted to the default bell symbol and no, n, false and none are +#: converted to the empty string. + +# command_on_bell none + +#: Program to run when a bell occurs. The environment variable +#: KITTY_CHILD_CMDLINE can be used to get the program running in the +#: window in which the bell occurred. + +# bell_path none + +#: Path to a sound file to play as the bell sound. If set to none, the +#: system default bell sound is used. Must be in a format supported by +#: the operating systems sound API, such as WAV or OGA on Linux +#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) + +# linux_bell_theme __custom + +#: The XDG Sound Theme kitty will use to play the bell sound. Defaults +#: to the custom theme name used by GNOME and Budgie, falling back to +#: the default freedesktop theme if it does not exist. This option may +#: be removed if Linux ever provides desktop-agnostic support for +#: setting system sound themes. + +#: }}} + +#: Window layout {{{ + +# remember_window_size yes +# initial_window_width 640 +# initial_window_height 400 + +#: If enabled, the OS Window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the OS Window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +# enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the layouts . + +# window_resize_step_cells 2 +# window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing kitty windows in a layout with the shortcut +#: start_resizing_window. The cells value is used for horizontal +#: resizing, and the lines value is used for vertical resizing. + +# window_border_width 0.5pt + +#: The width of window borders. Can be either in pixels (px) or pts +#: (pt). Values in pts will be rounded to the nearest number of pixels +#: based on screen resolution. If not specified, the unit is assumed +#: to be pts. Note that borders are displayed only when more than one +#: window is visible. They are meant to separate multiple windows. + +# draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: borders that separate the window from a neighbor are drawn. Note +#: that setting a non-zero window_margin_width overrides this and +#: causes all borders to be drawn. + +# window_margin_width 0 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +# single_window_margin_width -1 + +#: The window margin to use when only a single window is visible (in +#: pts). Negative values will cause the value of window_margin_width +#: to be used instead. A single value sets all four sides. Two values +#: set the vertical and horizontal sides. Three values set top, +#: horizontal and bottom. Four values set top, right, bottom and left. + +# window_padding_width 0 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +# single_window_padding_width -1 + +#: The window padding to use when only a single window is visible (in +#: pts). Negative values will cause the value of window_padding_width +#: to be used instead. A single value sets all four sides. Two values +#: set the vertical and horizontal sides. Three values set top, +#: horizontal and bottom. Four values set top, right, bottom and left. + +# placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be +#: only at the bottom and right edges. + +# active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. + +# inactive_border_color #cccccc + +#: The color for the border of inactive windows. + +# bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred. + +# inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +# hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only and titlebar-and-corners can be used +#: to only hide the titlebar and the rounded corners. Whether this +#: works and exactly what effect it has depends on the window +#: manager/operating system. Note that the effects of changing this +#: option when reloading config are undefined. When using titlebar- +#: only, it is useful to also set window_margin_width and +#: placement_strategy to prevent the rounded corners from clipping +#: text. Or use titlebar-and-corners. + +# window_logo_path none + +#: Path to a logo image. Must be in PNG format. Relative paths are +#: interpreted relative to the kitty config directory. The logo is +#: displayed in a corner of every kitty window. The position is +#: controlled by window_logo_position. Individual windows can be +#: configured to have different logos either using the launch action +#: or the remote control facility. + +# window_logo_position bottom-right + +#: Where to position the window logo in the window. The value can be +#: one of: top-left, top, top-right, left, center, right, bottom-left, +#: bottom, bottom-right. + +# window_logo_alpha 0.5 + +#: The amount the logo should be faded into the background. With zero +#: being fully faded and one being fully opaque. + +# resize_debounce_time 0.1 0.5 + +#: The time to wait (in seconds) before asking the program running in +#: kitty to resize and redraw the screen during a live resize of the +#: OS window, when no new resize events have been received, i.e. when +#: resizing is either paused or finished. On platforms such as macOS, +#: where the operating system sends events corresponding to the start +#: and end of a live resize, the second number is used for redraw- +#: after-pause since kitty can distinguish between a pause and end of +#: resizing. On such systems the first number is ignored and redraw is +#: immediate after end of resize. On other systems only the first +#: number is used so that kitty is "ready" quickly after the end of +#: resizing, while not also continuously redrawing, to save energy. + +# resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with initial_window_width +#: and initial_window_height in number of cells, this option can be +#: used to keep the margins as small as possible when resizing the OS +#: window. Note that this does not currently work on Wayland. + +# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ + +#: The list of characters for visual window selection. For example, +#: for selecting a window to focus on with focus_visible_window. The +#: value should be a series of unique numbers or alphabets, case +#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your +#: preference as a string of characters. + +# confirm_os_window_close -1 + +#: Ask for confirmation when closing an OS window or a tab with at +#: least this number of kitty windows in it by window manager (e.g. +#: clicking the window close button or pressing the operating system +#: shortcut to close windows) or by the close_tab action. A value of +#: zero disables confirmation. This confirmation also applies to +#: requests to quit the entire application (all OS windows, via the +#: quit action). Negative values are converted to positive ones, +#: however, with shell_integration enabled, using negative values +#: means windows sitting at a shell prompt are not counted, only +#: windows where some command is currently running. Note that if you +#: want confirmation when closing individual windows, you can map the +#: close_window_with_confirmation action. + +#: }}} + +#: Tab bar {{{ + +# tab_bar_edge bottom + +#: The edge to show the tab bar on, top or bottom. + +# tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts). + +# tab_bar_margin_height 0.0 0.0 + +#: The margin above and below the tab bar (in pts). The first number +#: is the margin between the edge of the OS Window and the tab bar. +#: The second number is the margin between the tab bar and the +#: contents of the current tab. + +# tab_bar_style fade + +#: The tab bar style, can be one of: + +#: fade +#: Each tab's edges fade into the background color. (See also tab_fade) +#: slant +#: Tabs look like the tabs in a physical file. +#: separator +#: Tabs are separated by a configurable separator. (See also +#: tab_separator) +#: powerline +#: Tabs are shown as a continuous line with "fancy" separators. +#: (See also tab_powerline_style) +#: custom +#: A user-supplied Python function called draw_tab is loaded from the file +#: tab_bar.py in the kitty config directory. For examples of how to +#: write such a function, see the functions named draw_tab_with_* in +#: kitty's source code: kitty/tab_bar.py. See also +#: this discussion +#: for examples from kitty users. +#: hidden +#: The tab bar is hidden. If you use this, you might want to create +#: a mapping for the select_tab action which presents you with a list of +#: tabs and allows for easy switching to a tab. + +# tab_bar_align left + +#: The horizontal alignment of the tab bar, can be one of: left, +#: center, right. + +# tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown. + +# tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of right will switch to the tab to the right of +#: the closed tab. A value of last will switch to the right-most tab. + +# tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +# tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +# tab_powerline_style angled + +#: The powerline separator style between tabs in the tab bar when +#: using powerline as the tab_bar_style, can be one of: angled, +#: slanted, round. + +# tab_activity_symbol none + +#: Some text or a Unicode symbol to show on the tab if a window in the +#: tab that does not have focus has some activity. If you want to use +#: leading or trailing spaces, surround the text with quotes. See +#: tab_title_template for how this is rendered. + +# tab_title_max_length 0 + +#: The maximum number of cells that can be used to render the text in +#: a tab. A value of zero means that no limit is applied. + +# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" + +#: A template to render the tab title. The default just renders the +#: title with optional symbols for bell and activity. If you wish to +#: include the tab-index as well, use something like: {index}:{title}. +#: Useful if you have shortcuts mapped for goto_tab N. If you prefer +#: to see the index as a superscript, use {sup.index}. All data +#: available is: + +#: title +#: The current tab title. +#: index +#: The tab index usable with goto_tab N goto_tab shortcuts. +#: layout_name +#: The current layout name. +#: num_windows +#: The number of windows in the tab. +#: num_window_groups +#: The number of window groups (a window group is a window and all of its overlay windows) in the tab. +#: tab.active_wd +#: The working directory of the currently active window in the tab +#: (expensive, requires syscall). Use active_oldest_wd to get +#: the directory of the oldest foreground process rather than the newest. +#: tab.active_exe +#: The name of the executable running in the foreground of the currently +#: active window in the tab (expensive, requires syscall). Use +#: active_oldest_exe for the oldest foreground process. +#: max_title_length +#: The maximum title length available. + +#: Note that formatting is done by Python's string formatting +#: machinery, so you can use, for instance, {layout_name[:2].upper()} +#: to show only the first two letters of the layout name, upper-cased. +#: If you want to style the text, you can use styling directives, for +#: example: +#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. +#: Similarly, for bold and italic: +#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. +#: Note that for backward compatibility, if {bell_symbol} or +#: {activity_symbol} are not present in the template, they are +#: prepended to it. + +# active_tab_title_template none + +#: Template to use for active tabs. If not specified falls back to +#: tab_title_template. + +# active_tab_foreground #000 +# active_tab_background #eee +# active_tab_font_style bold-italic +# inactive_tab_foreground #444 +# inactive_tab_background #999 +# inactive_tab_font_style normal + +#: Tab bar colors and styles. + +# tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +# tab_bar_margin_color none + +#: Color for the tab bar margin area. Defaults to using the terminal +#: background color for margins above and below the tab bar. For side +#: margins the default color is chosen to match the background color +#: of the neighboring tab. + +#: }}} + +#: Color scheme {{{ + +# foreground #dddddd +# background #000000 + +#: The foreground and background colors. + +# background_opacity 1.0 + +#: The opacity of the background. A number between zero and one, where +#: one is opaque and zero is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background, so that things like the status bar in vim, powerline +#: prompts, etc. still look good. But it means that if you use a color +#: theme with a background color in your editor, it will not be +#: rendered as transparent. Instead you should change the default +#: background color in your kitty config and not use a background +#: color in the editor color scheme. Or use the escape codes to set +#: the terminals default colors in a shell script to launch your +#: editor. Be aware that using a value less than 1.0 is a (possibly +#: significant) performance hit. When using a low value for this +#: setting, it is desirable that you set the background color to a +#: color the matches the general color of the desktop background, for +#: best text rendering. If you want to dynamically change +#: transparency of windows, set dynamic_background_opacity to yes +#: (this is off by default as it has a performance cost). Changing +#: this option when reloading the config will only work if +#: dynamic_background_opacity was enabled in the original config. + +# background_blur 0 + +#: Set to a positive value to enable background blur (blurring of the +#: visuals behind a transparent window) on platforms that support it. +#: Only takes effect when background_opacity is less than one. On +#: macOS, this will also control the blur radius (amount of blurring). +#: Setting it to too high a value will cause severe performance issues +#: and/or rendering artifacts. Usually, values up to 64 work well. +#: Note that this might cause performance issues, depending on how the +#: platform implements it, so use with care. Currently supported on +#: macOS and KDE under X11. + +# background_image none + +#: Path to a background image. Must be in PNG format. + +# background_image_layout tiled + +#: Whether to tile, scale or clamp the background image. The value can +#: be one of tiled, mirror-tiled, scaled, clamped, centered or +#: cscaled. The scaled and cscaled values scale the image to the +#: window size, with cscaled preserving the image aspect ratio. + +# background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +# dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. +#: Changing this option by reloading the config is not supported. + +# background_tint 0.0 + +#: How much to tint the background image by the background color. This +#: option makes it easier to read the text. Tinting is done using the +#: current background color for each window. This option applies only +#: if background_opacity is set and transparent windows are supported +#: or background_image is set. + +# background_tint_gaps 1.0 + +#: How much to tint the background image at the window gaps by the +#: background color, after applying background_tint. Since this is +#: multiplicative with background_tint, it can be used to lighten the +#: tint over the window gaps for a *separated* look. + +# dim_opacity 0.4 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +# selection_foreground #000000 +# selection_background #fffacd + +#: The foreground and background colors for text selected with the +#: mouse. Setting both of these to none will cause a "reverse video" +#: effect for selections, where the selection will be the cell text +#: color and the text will become the cell background color. Setting +#: only selection_foreground to none will cause the foreground color +#: to be used unchanged. Note that these colors can be overridden by +#: the program running in the terminal. + +#: The color table {{{ + +#: The 256 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version, for the first 16 colors. You can set the +#: remaining 240 colors as color16 to color255. + +# color0 #000000 +# color8 #767676 + +#: black + +# color1 #cc0403 +# color9 #f2201f + +#: red + +# color2 #19cb00 +# color10 #23fd00 + +#: green + +# color3 #cecb00 +# color11 #fffd00 + +#: yellow + +# color4 #0d73cc +# color12 #1a8fff + +#: blue + +# color5 #cb1ed1 +# color13 #fd28ff + +#: magenta + +# color6 #0dcdcd +# color14 #14ffff + +#: cyan + +# color7 #dddddd +# color15 #ffffff + +#: white + +# mark1_foreground black + +#: Color for marks of type 1 + +# mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +# mark2_foreground black + +#: Color for marks of type 2 + +# mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +# mark3_foreground black + +#: Color for marks of type 3 + +# mark3_background #f274bc + +#: Color for marks of type 3 (violet) + +#: }}} + +#: }}} + +#: Advanced {{{ + +# shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login and --interactive to ensure that the shell starts in +#: interactive mode and reads its startup rc files. Environment +#: variables are expanded in this setting. + +# editor . + +#: The terminal based text editor (such as vim or nano) to use when +#: editing the kitty config file or similar tasks. + +#: The default value of . means to use the environment variables +#: VISUAL and EDITOR in that order. If these variables aren't set, +#: kitty will run your shell ($SHELL -l -i -c env) to see if your +#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, +#: kitty will cycle through various known editors (vim, emacs, etc.) +#: and take the first one that exists on your system. + +# close_on_child_death no + +#: Close the window when the child process (shell) exits. With the +#: default value no, the terminal will remain open when the child +#: exits as long as there are still processes outputting to the +#: terminal (for example disowned or backgrounded processes). When +#: enabled with yes, the window will close as soon as the child +#: process exits. Note that setting it to yes means that any +#: background processes still using the terminal can fail silently +#: because their stdout/stderr/stdin no longer work. + +# remote_control_password + +#: Allow other programs to control kitty using passwords. This option +#: can be specified multiple times to add multiple passwords. If no +#: passwords are present kitty will ask the user for permission if a +#: program tries to use remote control with a password. A password can +#: also *optionally* be associated with a set of allowed remote +#: control actions. For example:: + +#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab + +#: Only the specified actions will be allowed when using this +#: password. Glob patterns can be used too, for example:: + +#: remote_control_password "my passphrase" set-tab-* resize-* + +#: To get a list of available actions, run:: + +#: kitten @ --help + +#: A set of actions to be allowed when no password is sent can be +#: specified by using an empty password. For example:: + +#: remote_control_password "" *-colors + +#: Finally, the path to a python module can be specified that provides +#: a function is_cmd_allowed that is used to check every remote +#: control command. For example:: + +#: remote_control_password "my passphrase" my_rc_command_checker.py + +#: Relative paths are resolved from the kitty configuration directory. +#: See rc_custom_auth for details. + +# allow_remote_control no + +#: Allow other programs to control kitty. If you turn this on, other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over SSH +#: connections. The default setting of no prevents any form of remote +#: control. The meaning of the various values are: + +#: password +#: Remote control requests received over both the TTY device and the socket +#: are confirmed based on passwords, see remote_control_password. + +#: socket-only +#: Remote control requests received over a socket are accepted +#: unconditionally. Requests received over the TTY are denied. +#: See listen_on. + +#: socket +#: Remote control requests received over a socket are accepted +#: unconditionally. Requests received over the TTY are confirmed based on +#: password. + +#: no +#: Remote control is completely disabled. + +#: yes +#: Remote control requests are always accepted. + +# listen_on none + +#: Listen to the specified socket for remote control connections. Note +#: that this will apply to all kitty instances. It can be overridden +#: by the kitty --listen-on command line option. For UNIX sockets, +#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). +#: Environment variables are expanded and relative paths are resolved +#: with respect to the temporary directory. If {kitty_pid} is present, +#: then it is replaced by the PID of the kitty process, otherwise the +#: PID of the kitty process is appended to the value, with a hyphen. +#: For TCP sockets such as tcp:localhost:0 a random port is always +#: used even if a non-zero port number is specified. See the help for +#: kitty --listen-on for more details. Note that this will be ignored +#: unless allow_remote_control is set to either: yes, socket or +#: socket-only. Changing this option by reloading the config is not +#: supported. + +# env + +#: Specify the environment variables to be set in all child processes. +#: Using the name with an equal sign (e.g. env VAR=) will set it to +#: the empty string. Specifying only the name (e.g. env VAR) will +#: remove the variable from the child process' environment. Note that +#: environment variables are expanded recursively, for example:: + +#: env VAR1=a +#: env VAR2=${HOME}/${VAR1}/b + +#: The value of VAR2 will be /a/b. + +# watcher + +#: Path to python file which will be loaded for watchers +#: . Can be +#: specified more than once to load multiple watchers. The watchers +#: will be added to every kitty window. Relative paths are resolved +#: relative to the kitty config directory. Note that reloading the +#: config will only affect windows created after the reload. + +# exe_search_path + +#: Control where kitty finds the programs to run. The default search +#: order is: First search the system wide PATH, then ~/.local/bin and +#: ~/bin. If still not found, the PATH defined in the login shell +#: after sourcing all its startup files is tried. Finally, if present, +#: the PATH specified by the env option is tried. + +#: This option allows you to prepend, append, or remove paths from +#: this search order. It can be specified multiple times for multiple +#: paths. A simple path will be prepended to the search order. A path +#: that starts with the + sign will be append to the search order, +#: after ~/bin above. A path that starts with the - sign will be +#: removed from the entire search order. For example:: + +#: exe_search_path /some/prepended/path +#: exe_search_path +/some/appended/path +#: exe_search_path -/some/excluded/path + +# update_check_interval 24 + +#: The interval to periodically check if an update to kitty is +#: available (in hours). If an update is found, a system notification +#: is displayed informing you of the available update. The default is +#: to check every 24 hours, set to zero to disable. Update checking is +#: only done by the official binary builds. Distro packages or source +#: builds do not do update checking. Changing this option by reloading +#: the config is not supported. + +# startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session =none command line option +#: for individual instances. See sessions +#: in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. Changing this option by reloading the +#: config is not supported. Note that if kitty is invoked with command +#: line arguments specifying a command to run, this option is ignored. + +# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: possible actions are: write-clipboard, read-clipboard, write- +#: primary, read-primary, read-clipboard-ask, read-primary-ask. The +#: default is to allow writing to the clipboard and primary selection +#: and to ask for permission when a program tries to read from the +#: clipboard. Note that disabling the read confirmation is a security +#: risk as it means that any program, even the ones running on a +#: remote server via SSH can read your clipboard. See also +#: clipboard_max_size. + +# clipboard_max_size 512 + +#: The maximum size (in MB) of data from programs running in kitty +#: that will be stored for writing to the system clipboard. A value of +#: zero means no size limit is applied. See also clipboard_control. + +# file_transfer_confirmation_bypass + +#: The password that can be supplied to the file transfer kitten +#: to skip the +#: transfer confirmation prompt. This should only be used when +#: initiating transfers from trusted computers, over trusted networks +#: or encrypted transports, as it allows any programs running on the +#: remote machine to read/write to the local filesystem, without +#: permission. + +# allow_hyperlinks yes + +#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 +#: escape sequences are ignored. Otherwise they become clickable +#: links, that you can click with the mouse or by using the hints +#: kitten . The +#: special value of ask means that kitty will ask before opening the +#: link when clicked. + +# shell_integration enabled + +#: Enable shell integration on supported shells. This enables features +#: such as jumping to previous prompts, browsing the output of the +#: previous command in a pager, etc. on supported shells. Set to +#: disabled to turn off shell integration, completely. It is also +#: possible to disable individual features, set to a space separated +#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- +#: prompt-mark, no-complete, no-sudo. See Shell integration +#: for details. + +# allow_cloning ask + +#: Control whether programs running in the terminal can request new +#: windows to be created. The canonical example is clone-in-kitty +#: . +#: By default, kitty will ask for permission for each clone request. +#: Allowing cloning unconditionally gives programs running in the +#: terminal (including over SSH) permission to execute arbitrary code, +#: as the user who is running the terminal, on the computer that the +#: terminal is running on. + +# clone_source_strategies venv,conda,env_var,path + +#: Control what shell code is sourced when running clone-in-kitty in +#: the newly cloned window. The supported strategies are: + +#: venv +#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the +#: Python stdlib venv module and allows cloning venvs automatically. +#: conda +#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual +#: environments created by conda. +#: env_var +#: Execute the contents of the environment variable +#: KITTY_CLONE_SOURCE_CODE with eval. +#: path +#: Source the file pointed to by the environment variable +#: KITTY_CLONE_SOURCE_PATH. + +#: This option must be a comma separated list of the above values. +#: Only the first valid match, in the order specified, is sourced. + +# notify_on_cmd_finish never + +#: Show a desktop notification when a long-running command finishes +#: (needs shell_integration). The possible values are: + +#: never +#: Never send a notification. + +#: unfocused +#: Only send a notification when the window does not have keyboard focus. + +#: invisible +#: Only send a notification when the window both is unfocused and not visible +#: to the user, for example, because it is in an inactive tab or its OS window +#: is not currently active. + +#: always +#: Always send a notification, regardless of window state. + +#: There are two optional arguments: + +#: First, the minimum duration for what is considered a long running +#: command. The default is 5 seconds. Specify a second argument to set +#: the duration. For example: invisible 15. Do not set the value too +#: small, otherwise a command that launches a new OS Window and exits +#: will spam a notification. + +#: Second, the action to perform. The default is notify. The possible +#: values are: + +#: notify +#: Send a desktop notification. + +#: bell +#: Ring the terminal bell. + +#: command +#: Run a custom command. All subsequent arguments are the cmdline to run. + +#: Some more examples:: + +#: # Send a notification when a command takes more than 5 seconds in an unfocused window +#: notify_on_cmd_finish unfocused +#: # Send a notification when a command takes more than 10 seconds in a invisible window +#: notify_on_cmd_finish invisible 10.0 +#: # Ring a bell when a command takes more than 10 seconds in a invisible window +#: notify_on_cmd_finish invisible 10.0 bell +#: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window +#: notify_on_cmd_finish invisible 10.0 command notify-send job finished + +# term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on "Stack Overflow" +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. Changing this option by reloading the config will only affect +#: newly created windows. + +# forward_stdio no + +#: Forward STDOUT and STDERR of the kitty process to child processes +#: as file descriptors 3 and 4. This is useful for debugging as it +#: allows child processes to print to kitty's STDOUT directly. For +#: example, echo hello world >&3 in a shell will print to the parent +#: kitty's STDOUT. When enabled, this also sets the +#: KITTY_STDIO_FORWARDED=3 environment variable so child processes +#: know about the forwarding. + +# menu_map + +#: Specify entries for various menus in kitty. Currently only the +#: global menubar on macOS is supported. For example:: + +#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" + +#: This will create a menu entry named "Launch something special" in +#: an "Actions" menu in the macOS global menubar. Sub-menus can be +#: created by adding more levels separated by the :: characters. + +#: }}} + +#: OS specific tweaks {{{ + +# wayland_titlebar_color system + +#: The color of the kitty window's titlebar on Wayland systems with +#: client side window decorations such as GNOME. A value of system +#: means to use the default system color, a value of background means +#: to use the background color of the currently active window and +#: finally you can use an arbitrary color, such as #12af59 or red. + +# macos_titlebar_color system + +#: The color of the kitty window's titlebar on macOS. A value of +#: system means to use the default system color, light or dark can +#: also be used to set it explicitly. A value of background means to +#: use the background color of the currently active window and finally +#: you can use an arbitrary color, such as #12af59 or red. WARNING: +#: This option works by using a hack when arbitrary color (or +#: background) is configured, as there is no proper Cocoa API for it. +#: It sets the background color of the entire window and makes the +#: titlebar transparent. As such it is incompatible with +#: background_opacity. If you want to use both, you are probably +#: better off just hiding the titlebar with hide_window_decorations. + +# macos_option_as_alt no + +#: Use the Option key as an Alt key on macOS. With this set to no, +#: kitty will use the macOS native Option+Key to enter Unicode +#: character behavior. This will break any Alt+Key keyboard shortcuts +#: in your terminal programs, but you can use the macOS Unicode input +#: technique. You can use the values: left, right or both to use only +#: the left, right or both Option keys as Alt, instead. Note that +#: kitty itself always treats Option the same as Alt. This means you +#: cannot use this option to configure different kitty shortcuts for +#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using +#: Option/Alt+Key will take priority, so that any such key presses +#: will not be passed to terminal programs running inside kitty. +#: Changing this option by reloading the config is not supported. + +# macos_hide_from_tasks no + +#: Hide the kitty window from running tasks on macOS (⌘+Tab and the +#: Dock). Changing this option by reloading the config is not +#: supported. + +# macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed on macOS. +#: By default, kitty will stay running, even with no open windows, as +#: is the expected behavior on macOS. + +# macos_window_resizable yes + +#: Disable this if you want kitty top-level OS windows to not be +#: resizable on macOS. + +# macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes on macOS. For example, a +#: value of 0.75 will result in rendering that looks similar to sub- +#: pixel antialiasing at common font sizes. Note that in modern kitty, +#: this option is obsolete (although still supported). Consider using +#: text_composition_strategy instead. + +# macos_traditional_fullscreen no + +#: Use the macOS traditional full-screen transition, that is faster, +#: but less pretty. + +# macos_show_window_title_in all + +#: Control where the window title is displayed on macOS. A value of +#: window will show the title of the currently active window at the +#: top of the macOS window. A value of menubar will show the title of +#: the currently active window in the macOS global menu bar, making +#: use of otherwise wasted space. A value of all will show the title +#: in both places, and none hides the title. See +#: macos_menubar_title_max_length for how to control the length of the +#: title in the menu bar. + +# macos_menubar_title_max_length 0 + +#: The maximum number of characters from the window title to show in +#: the macOS global menu bar. Values less than one means that there is +#: no maximum limit. + +# macos_custom_beam_cursor no + +#: Use a custom mouse cursor for macOS that is easier to see on both +#: light and dark backgrounds. Nowadays, the default macOS cursor +#: already comes with a white border. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. Changing this option +#: by reloading the config is not supported. + +# macos_colorspace srgb + +#: The colorspace in which to interpret terminal colors. The default +#: of srgb will cause colors to match those seen in web browsers. The +#: value of default will use whatever the native colorspace of the +#: display is. The value of displayp3 will use Apple's special +#: snowflake display P3 color space, which will result in over +#: saturated (brighter) colors with some color shift. Reloading +#: configuration will change this value only for newly created OS +#: windows. + +# linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. Changing this option by +#: reloading the config is not supported. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: Keys are identified simply by their lowercase Unicode characters. +#: For example: a for the A key, [ for the left square bracket key, +#: etc. For functional keys, such as Enter or Escape, the names are +#: present at Functional key definitions +#: . +#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt +#: (opt, option, ⌥), super (cmd, command, ⌘). + +#: Simple shortcut mapping is done with the map directive. For full +#: details on advanced mapping including modal and per application +#: maps, see mapping . Some +#: quick examples to illustrate common tasks:: + +#: # unmap a keyboard shortcut, passing it to the program running in kitty +#: map kitty_mod+space +#: # completely ignore a keyboard event +#: map ctrl+alt+f1 discard_event +#: # combine multiple actions +#: map kitty_mod+e combine : new_window : next_layout +#: # multi-key shortcuts +#: map ctrl+x>ctrl+y>z action + +#: The full list of actions that can be mapped to key presses is +#: available here . + +# kitty_mod ctrl+shift + +#: Special modifier key alias for default shortcuts. You can change +#: the value of this option to alter all default shortcuts that use +#: kitty_mod. + +# clear_all_shortcuts no + +#: Remove all shortcut definitions up to this point. Useful, for +#: instance, to remove the default shortcuts. + +# action_alias + +#: E.g. action_alias launch_tab launch --type=tab --cwd=current + +#: Define action aliases to avoid repeating the same options in +#: multiple mappings. Aliases can be defined for any action and will +#: be expanded recursively. For example, the above alias allows you to +#: create mappings to launch a new tab in the current working +#: directory without duplication:: + +#: map f1 launch_tab vim +#: map f2 launch_tab emacs + +#: Similarly, to alias kitten invocation:: + +#: action_alias hints kitten hints --hints-offset=0 + +# kitten_alias + +#: E.g. kitten_alias hints hints --hints-offset=0 + +#: Like action_alias above, but specifically for kittens. Generally, +#: prefer to use action_alias. This option is a legacy version, +#: present for backwards compatibility. It causes all invocations of +#: the aliased kitten to be substituted. So the example above will +#: cause all invocations of the hints kitten to have the --hints- +#: offset=0 option applied. + +#: Clipboard {{{ + +#: Copy to clipboard + +# map kitty_mod+c copy_to_clipboard +# map cmd+c copy_to_clipboard + +#:: There is also a copy_or_interrupt action that can be optionally +#:: mapped to Ctrl+C. It will copy only if there is a selection and +#:: send an interrupt otherwise. Similarly, +#:: copy_and_clear_or_interrupt will copy and clear the selection or +#:: send an interrupt if there is no selection. + +#: Paste from clipboard + +# map kitty_mod+v paste_from_clipboard +# map cmd+v paste_from_clipboard + +#: Paste from selection + +# map kitty_mod+s paste_from_selection +# map shift+insert paste_from_selection + +#: Pass selection to program + +# map kitty_mod+o pass_selection_to_program + +#:: You can also pass the contents of the current selection to any +#:: program with pass_selection_to_program. By default, the system's +#:: open program is used, but you can specify your own, the selection +#:: will be passed as a command line argument to the program. For +#:: example:: + +#:: map kitty_mod+o pass_selection_to_program firefox + +#:: You can pass the current selection to a terminal program running +#:: in a new kitty window, by using the @selection placeholder:: + +#:: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +#: Scroll line up + +# map kitty_mod+up scroll_line_up +# map kitty_mod+k scroll_line_up +# map opt+cmd+page_up scroll_line_up +# map cmd+up scroll_line_up + +#: Scroll line down + +# map kitty_mod+down scroll_line_down +# map kitty_mod+j scroll_line_down +# map opt+cmd+page_down scroll_line_down +# map cmd+down scroll_line_down + +#: Scroll page up + +# map kitty_mod+page_up scroll_page_up +# map cmd+page_up scroll_page_up + +#: Scroll page down + +# map kitty_mod+page_down scroll_page_down +# map cmd+page_down scroll_page_down + +#: Scroll to top + +# map kitty_mod+home scroll_home +# map cmd+home scroll_home + +#: Scroll to bottom + +# map kitty_mod+end scroll_end +# map cmd+end scroll_end + +#: Scroll to previous shell prompt + +# map kitty_mod+z scroll_to_prompt -1 + +#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last +#:: jumped to or the last clicked position. Requires shell +#:: integration +#:: to work. + +#: Scroll to next shell prompt + +# map kitty_mod+x scroll_to_prompt 1 + +#: Browse scrollback buffer in pager + +# map kitty_mod+h show_scrollback + +#:: You can pipe the contents of the current screen and history +#:: buffer as STDIN to an arbitrary program using launch --stdin- +#:: source. For example, the following opens the scrollback buffer in +#:: less in an overlay window:: + +#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#:: For more details on piping screen and buffer contents to external +#:: programs, see launch . + +#: Browse output of the last shell command in pager + +# map kitty_mod+g show_last_command_output + +#:: You can also define additional shortcuts to get the command +#:: output. For example, to get the first command output on screen:: + +#:: map f1 show_first_command_output_on_screen + +#:: To get the command output that was last accessed by a keyboard +#:: action or mouse action:: + +#:: map f1 show_last_visited_command_output + +#:: You can pipe the output of the last command run in the shell +#:: using the launch action. For example, the following opens the +#:: output in less in an overlay window:: + +#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R + +#:: To get the output of the first command on the screen, use +#:: @first_cmd_output_on_screen. To get the output of the last jumped +#:: to command, use @last_visited_cmd_output. + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: Window management {{{ + +#: New window + +# map kitty_mod+enter new_window +# map cmd+enter new_window + +#:: You can open a new kitty window running an arbitrary program, for +#:: example:: + +#:: map kitty_mod+y launch mutt + +#:: You can open a new window with the current working directory set +#:: to the working directory of the current window using:: + +#:: map ctrl+alt+enter launch --cwd=current + +#:: You can open a new window that is allowed to control kitty via +#:: the kitty remote control facility with launch --allow-remote- +#:: control. Any programs running in that window will be allowed to +#:: control kitty. For example:: + +#:: map ctrl+enter launch --allow-remote-control some_program + +#:: You can open a new window next to the currently active window or +#:: as the first window, with:: + +#:: map ctrl+n launch --location=neighbor +#:: map ctrl+f launch --location=first + +#:: For more details, see launch +#:: . + +#: New OS window + +# map kitty_mod+n new_os_window +# map cmd+n new_os_window + +#:: Works like new_window above, except that it opens a top-level OS +#:: window. In particular you can use new_os_window_with_cwd to open +#:: a window with the current working directory. + +#: Close window + +# map kitty_mod+w close_window +# map shift+cmd+d close_window + +#: Next window + +# map kitty_mod+] next_window + +#: Previous window + +# map kitty_mod+[ previous_window + +#: Move window forward + +# map kitty_mod+f move_window_forward + +#: Move window backward + +# map kitty_mod+b move_window_backward + +#: Move window to top + +# map kitty_mod+` move_window_to_top + +#: Start resizing window + +# map kitty_mod+r start_resizing_window +# map cmd+r start_resizing_window + +#: First window + +# map kitty_mod+1 first_window +# map cmd+1 first_window + +#: Second window + +# map kitty_mod+2 second_window +# map cmd+2 second_window + +#: Third window + +# map kitty_mod+3 third_window +# map cmd+3 third_window + +#: Fourth window + +# map kitty_mod+4 fourth_window +# map cmd+4 fourth_window + +#: Fifth window + +# map kitty_mod+5 fifth_window +# map cmd+5 fifth_window + +#: Sixth window + +# map kitty_mod+6 sixth_window +# map cmd+6 sixth_window + +#: Seventh window + +# map kitty_mod+7 seventh_window +# map cmd+7 seventh_window + +#: Eighth window + +# map kitty_mod+8 eighth_window +# map cmd+8 eighth_window + +#: Ninth window + +# map kitty_mod+9 ninth_window +# map cmd+9 ninth_window + +#: Tenth window + +# map kitty_mod+0 tenth_window + +#: Visually select and focus window + +# map kitty_mod+f7 focus_visible_window + +#:: Display overlay numbers and alphabets on the window, and switch +#:: the focus to the window when you press the key. When there are +#:: only two windows, the focus will be switched directly without +#:: displaying the overlay. You can change the overlay characters and +#:: their order with option visual_window_select_characters. + +#: Visually swap window with another + +# map kitty_mod+f8 swap_with_window + +#:: Works like focus_visible_window above, but swaps the window. + +#: }}} + +#: Tab management {{{ + +#: Next tab + +# map kitty_mod+right next_tab +# map shift+cmd+] next_tab +# map ctrl+tab next_tab + +#: Previous tab + +# map kitty_mod+left previous_tab +# map shift+cmd+[ previous_tab +# map ctrl+shift+tab previous_tab + +#: New tab + +# map kitty_mod+t new_tab +# map cmd+t new_tab + +#: Close tab + +# map kitty_mod+q close_tab +# map cmd+w close_tab + +#: Close OS window + +# map shift+cmd+w close_os_window + +#: Move tab forward + +# map kitty_mod+. move_tab_forward + +#: Move tab backward + +# map kitty_mod+, move_tab_backward + +#: Set tab title + +# map kitty_mod+alt+t set_tab_title +# map shift+cmd+i set_tab_title + + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and new_tab_with_cwd. +#: Finally, if you want the new tab to open next to the current tab +#: rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +#: Next layout + +# map kitty_mod+l next_layout + + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout + +#: There is also a toggle_layout action that switches to the named +#: layout or back to the previous layout if in the named layout. +#: Useful to temporarily "zoom" the active window by switching to the +#: stack layout:: + +#: map ctrl+alt+z toggle_layout stack +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +#: Increase font size + +# map kitty_mod+equal change_font_size all +2.0 +# map kitty_mod+plus change_font_size all +2.0 +# map kitty_mod+kp_add change_font_size all +2.0 +# map cmd+plus change_font_size all +2.0 +# map cmd+equal change_font_size all +2.0 +# map shift+cmd+equal change_font_size all +2.0 + +#: Decrease font size + +# map kitty_mod+minus change_font_size all -2.0 +# map kitty_mod+kp_subtract change_font_size all -2.0 +# map cmd+minus change_font_size all -2.0 +# map shift+cmd+minus change_font_size all -2.0 + +#: Reset font size + +# map kitty_mod+backspace change_font_size all 0 +# map cmd+0 change_font_size all 0 + + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +#: Open URL + +# map kitty_mod+e open_url_with_hints + +#:: Open a currently visible URL using the keyboard. The program used +#:: to open the URL is specified in open_url_with. + +#: Insert selected path + +# map kitty_mod+p>f kitten hints --type path --program - + +#:: Select a path/filename and insert it into the terminal. Useful, +#:: for instance to run git commands on a filename output from a +#:: previous git command. + +#: Open selected path + +# map kitty_mod+p>shift+f kitten hints --type path + +#:: Select a path/filename and open it with the default open program. + +#: Insert selected line + +# map kitty_mod+p>l kitten hints --type line --program - + +#:: Select a line of text and insert it into the terminal. Useful for +#:: the output of things like: `ls -1`. + +#: Insert selected word + +# map kitty_mod+p>w kitten hints --type word --program - + +#:: Select words and insert into terminal. + +#: Insert selected hash + +# map kitty_mod+p>h kitten hints --type hash --program - + +#:: Select something that looks like a hash and insert it into the +#:: terminal. Useful with git, which uses SHA1 hashes to identify +#:: commits. + +#: Open the selected file at the selected line + +# map kitty_mod+p>n kitten hints --type linenum + +#:: Select something that looks like filename:linenum and open it in +#:: your default editor at the specified line number. + +#: Open the selected hyperlink + +# map kitty_mod+p>y kitten hints --type hyperlink + +#:: Select a hyperlink (i.e. a URL that has been marked as such by +#:: the terminal program, for example, by `ls --hyperlink=auto`). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see hints kitten +#: . +#: }}} + +#: Miscellaneous {{{ + +#: Show documentation + +# map kitty_mod+f1 show_kitty_doc overview + +#: Toggle fullscreen + +# map kitty_mod+f11 toggle_fullscreen +# map ctrl+cmd+f toggle_fullscreen + +#: Toggle maximized + +# map kitty_mod+f10 toggle_maximized + +#: Toggle macOS secure keyboard entry + +# map opt+cmd+s toggle_macos_secure_keyboard_entry + +#: Unicode input + +# map kitty_mod+u kitten unicode_input +# map ctrl+cmd+space kitten unicode_input + +#: Edit config file + +# map kitty_mod+f2 edit_config_file +# map cmd+, edit_config_file + +#: Open the kitty command shell + +# map kitty_mod+escape kitty_shell window + +#:: Open the kitty shell in a new window / tab / overlay / os_window +#:: to control kitty using commands. + +#: Increase background opacity + +# map kitty_mod+a>m set_background_opacity +0.1 + +#: Decrease background opacity + +# map kitty_mod+a>l set_background_opacity -0.1 + +#: Make background fully opaque + +# map kitty_mod+a>1 set_background_opacity 1 + +#: Reset background opacity + +# map kitty_mod+a>d set_background_opacity default + +#: Reset the terminal + +# map kitty_mod+delete clear_terminal reset active +# map opt+cmd+r clear_terminal reset active + +#:: You can create shortcuts to clear/reset the terminal. For +#:: example:: + +#:: # Reset the terminal +#:: map f1 clear_terminal reset active +#:: # Clear the terminal screen by erasing all contents +#:: map f1 clear_terminal clear active +#:: # Clear the terminal scrollback by erasing it +#:: map f1 clear_terminal scrollback active +#:: # Scroll the contents of the screen into the scrollback +#:: map f1 clear_terminal scroll active +#:: # Clear everything up to the line with the cursor or the start of the current prompt (needs shell integration) +#:: map f1 clear_terminal to_cursor active +#:: # Same as above except cleared lines are moved into scrollback +#:: map f1 clear_terminal to_cursor_scroll active + +#:: If you want to operate on all kitty windows instead of just the +#:: current one, use all instead of active. + +#:: Some useful functions that can be defined in the shell rc files +#:: to perform various kinds of clearing of the current window: + +#:: .. code-block:: sh + +#:: clear-only-screen() { +#:: printf "\e[H\e[2J" +#:: } + +#:: clear-screen-and-scrollback() { +#:: printf "\e[H\e[3J" +#:: } + +#:: clear-screen-saving-contents-in-scrollback() { +#:: printf "\e[H\e[22J" +#:: } + +#:: For instance, using these escape codes, it is possible to remap +#:: Ctrl+L to both scroll the current screen contents into the +#:: scrollback buffer and clear the screen, instead of just clearing +#:: the screen. For ZSH, in ~/.zshrc, add: + +#:: .. code-block:: zsh + +#:: ctrl_l() { +#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" +#:: builtin zle .reset-prompt +#:: builtin zle -R +#:: } +#:: zle -N ctrl_l +#:: bindkey '^l' ctrl_l + +#:: Alternatively, you can just add map ctrl+l clear_terminal +#:: to_cursor_scroll active to kitty.conf which works with no changes +#:: to the shell rc files, but only clears up to the prompt, it does +#:: not clear anytext at the prompt itself. + +#: Clear up to cursor line + +# map cmd+k clear_terminal to_cursor active + +#: Reload kitty.conf + +# map kitty_mod+f5 load_config_file +# map ctrl+cmd+, load_config_file + +#:: Reload kitty.conf, applying any changes since the last time it +#:: was loaded. Note that a handful of options cannot be dynamically +#:: changed and require a full restart of kitty. Particularly, when +#:: changing shortcuts for actions located on the macOS global menu +#:: bar, a full restart is needed. You can also map a keybinding to +#:: load a different config file, for example:: + +#:: map f5 load_config /path/to/alternative/kitty.conf + +#:: Note that all options from the original kitty.conf are discarded, +#:: in other words the new configuration *replace* the old ones. + +#: Debug kitty configuration + +# map kitty_mod+f6 debug_config +# map opt+cmd+, debug_config + +#:: Show details about exactly what configuration kitty is running +#:: with and its host environment. Useful for debugging issues. + +#: Send arbitrary text on key presses + +#:: E.g. map ctrl+shift+alt+h send_text all Hello World + +#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#:: client program when pressing specified shortcut keys. For +#:: example:: + +#:: map ctrl+alt+a send_text all Special text + +#:: This will send "Special text" when you press the Ctrl+Alt+A key +#:: combination. The text to be sent decodes ANSI C escapes +#:: so you can use escapes like \e to send control +#:: codes or \u21fb to send Unicode characters (or you can just input +#:: the Unicode characters directly as UTF-8 text). You can use +#:: `kitten show_key` to get the key escape codes you want to +#:: emulate. + +#:: The first argument to send_text is the keyboard modes in which to +#:: activate the shortcut. The possible values are normal, +#:: application, kitty or a comma separated combination of them. The +#:: modes normal and application refer to the DECCKM cursor key mode +#:: for terminals, and kitty refers to the kitty extended keyboard +#:: protocol. The special value all means all of them. + +#:: Some more examples:: + +#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) +#:: map ctrl+alt+a send_text normal Word\e[H +#:: map ctrl+alt+a send_text application Word\eOH +#:: # Run a command at a shell prompt (like typing the command and pressing Enter) +#:: map ctrl+alt+a send_text normal,application some command with arguments\r + +#: Open kitty Website + +# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ + +#: Hide macOS kitty application + +# map cmd+h hide_macos_app + +#: Hide macOS other applications + +# map opt+cmd+h hide_macos_other_apps + +#: Minimize macOS window + +# map cmd+m minimize_macos_window + +#: Quit kitty + +# map cmd+q quit + +#: }}} + +#: }}}A +font_size 13.0 + +map ctrl+k send_key down +map ctrl+i send_key up + +map ctrl+m send_key f27 + +# BEGIN_KITTY_FONTS +font_family family='Hack Nerd Font' postscript_name=HackNF-Regular +bold_font auto +italic_font auto +bold_italic_font auto +# END_KITTY_FONTS diff --git a/.config/kitty/kitty.conf.bak b/.config/kitty/kitty.conf.bak new file mode 100644 index 0000000..cfe2679 --- /dev/null +++ b/.config/kitty/kitty.conf.bak @@ -0,0 +1,2484 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +# font_family monospace +# bold_font auto +# italic_font auto +# bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: +list-fonts` command. By default they are derived automatically, by +#: the OSes font system. When bold_font or bold_italic_font is set to +#: auto on macOS, the priority of bold fonts is semi-bold, bold, +#: heavy. Setting them manually is useful for font families that have +#: many weight variants like Book, Medium, Thick, etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +# font_size 11.0 + +#: Font size (in pts) + +# force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the string been LTR. For example, assuming the Hebrew word ירושלים, +#: selecting the character that on the screen appears to be ם actually +#: writes into the selection buffer the character י. kitty's default +#: behavior is useful in conjunction with a filter to reverse the word +#: order, however, if you wish to manipulate RTL glyphs, it can be +#: very challenging to work with, so this option is provided to turn +#: it off. Furthermore, this option can be used with the command line +#: program GNU FriBidi +#: to get BIDI support, because it will force kitty to always treat +#: the text as LTR, which FriBidi expects for terminals. + +# symbol_map + +#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified Unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each Unicode code +#: point is specified in the form `U+`. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. This option can be specified multiple times. +#: The syntax is:: + +#: symbol_map codepoints Font Family Name + +# narrow_symbols + +#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 + +#: Usually, for Private Use Unicode characters and some symbol/dingbat +#: characters, if the character is followed by one or more spaces, +#: kitty will use those extra cells to render the character larger, if +#: the character in the font has a wide aspect ratio. Using this +#: option you can force kitty to restrict the specified code points to +#: render in the specified number of cells (defaulting to one cell). +#: This option can be specified multiple times. The syntax is:: + +#: narrow_symbols codepoints [optionally the number of cells] + +# disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features option. + +# font_features + +#: E.g. font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code includes a discretionary feature, +#: zero, which in that font changes the appearance of the zero (0), to +#: make it more easily distinguishable from Ø. Fira Code also includes +#: other discretionary features known as Stylistic Sets which have the +#: tags ss01 through ss20. + +#: For the exact syntax to use for individual features, see the +#: HarfBuzz documentation . + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: On Linux, font features are first read from the FontConfig database +#: and then this option is applied, so they can be configured in a +#: single, central place. + +#: To get the PostScript name for a font, use `kitty +list-fonts +#: --psnames`: + +#: .. code-block:: sh + +#: $ kitty +list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero in the bold font:: + +#: font_features FiraCode-Bold +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +# modify_font + +#: Modify font characteristics such as the position or thickness of +#: the underline and strikethrough. The modifications can have the +#: suffix px for pixels or % for percentage of original value. No +#: suffix means use pts. For example:: + +#: modify_font underline_position -2 +#: modify_font underline_thickness 150% +#: modify_font strikethrough_position 2px + +#: Additionally, you can modify the size of the cell in which each +#: font glyph is rendered and the baseline at which the glyph is +#: placed in the cell. For example:: + +#: modify_font cell_width 80% +#: modify_font cell_height -2px +#: modify_font baseline 3 + +#: Note that modifying the baseline will automatically adjust the +#: underline and strikethrough positions by the same amount. +#: Increasing the baseline raises glyphs inside the cell and +#: decreasing it lowers them. Decreasing the cell size might cause +#: rendering artifacts, so use with care. + +# box_drawing_scale 0.001, 1, 1.5, 2 + +#: The sizes of the lines used for the box drawing Unicode characters. +#: These values are in pts. They will be scaled by the monitor DPI to +#: arrive at a pixel value. There must be four values corresponding to +#: thin, normal, thick, and very thick lines. + +# undercurl_style thin-sparse + +#: The style with which undercurls are rendered. This option takes the +#: form (thin|thick)-(sparse|dense). Thin and thick control the +#: thickness of the undercurl. Sparse and dense control how often the +#: curl oscillates. With sparse the curl will peak once per character, +#: with dense twice. + +# text_composition_strategy platform + +#: Control how kitty composites text glyphs onto the background color. +#: The default value of platform tries for text rendering as close to +#: "native" for the platform kitty is running on as possible. + +#: A value of legacy uses the old (pre kitty 0.28) strategy for how +#: glyphs are composited. This will make dark text on light +#: backgrounds look thicker and light text on dark backgrounds +#: thinner. It might also make some text appear like the strokes are +#: uneven. + +#: You can fine tune the actual contrast curve used for glyph +#: composition by specifying up to two space-separated numbers for +#: this setting. + +#: The first number is the gamma adjustment, which controls the +#: thickness of dark text on light backgrounds. Increasing the value +#: will make text appear thicker. The default value for this is 1.0 on +#: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result +#: is scaled based on the luminance difference between the background +#: and the foreground. Dark text on light backgrounds receives the +#: full impact of the curve while light text on dark backgrounds is +#: affected very little. + +#: The second number is an additional multiplicative contrast. It is +#: percentage ranging from 0 to 100. The default value is 0 on Linux +#: and 30 on macOS. + +#: If you wish to achieve similar looking thickness in light and dark +#: themes, a good way to experiment is start by setting the value to +#: 1.0 0 and use a dark theme. Then adjust the second parameter until +#: it looks good. Then switch to a light theme and adjust the first +#: parameter until the perceived thickness matches the dark theme. + +# text_fg_override_threshold 0 + +#: The minimum accepted difference in luminance between the foreground +#: and background color, below which kitty will override the +#: foreground color. It is percentage ranging from 0 to 100. If the +#: difference in luminance of the foreground and background is below +#: this threshold, the foreground color will be set to white if the +#: background is dark or black if the background is light. The default +#: value is 0, which means no overriding is performed. Useful when +#: working with applications that use colors that do not contrast well +#: with your preferred color scheme. + +#: WARNING: Some programs use characters (such as block characters) +#: for graphics display and may expect to be able to set the +#: foreground and background to the same color (or similar colors). +#: If you see unexpected stripes, dots, lines, incorrect color, no +#: color where you expect color, or any kind of graphic display +#: problem try setting text_fg_override_threshold to 0 to see if this +#: is the cause of the problem. + +#: }}} + + +#: Cursor customization {{{ + +# cursor #cccccc + +#: Default cursor color. If set to the special value none the cursor +#: will be rendered with a "reverse video" effect. It's color will be +#: the color of the text in the cell it is over and the text will be +#: rendered with the background color of the cell. Note that if the +#: program running in the terminal sets a cursor color, this takes +#: precedence. Also, the cursor colors are modified if the cell +#: background and foreground colors have very low contrast. Note that +#: some themes set this value, so if you want to override it, place +#: your value after the lines where the theme file is included. + +# cursor_text_color #111111 + +#: The color of text under the cursor. If you want it rendered with +#: the background color of the cell underneath instead, use the +#: special keyword: background. Note that if cursor is set to none +#: then this option is ignored. Note that some themes set this value, +#: so if you want to override it, place your value after the lines +#: where the theme file is included. + +# cursor_shape block + +#: The cursor shape can be one of block, beam, underline. Note that +#: when reloading the config this will be changed only if the cursor +#: shape has not been set by the program running in the terminal. This +#: sets the default cursor shape, applications running in the terminal +#: can override it. In particular, shell integration +#: in kitty sets +#: the cursor shape to beam at shell prompts. You can avoid this by +#: setting shell_integration to no-cursor. + +# cursor_beam_thickness 1.5 + +#: The thickness of the beam cursor (in pts). + +# cursor_underline_thickness 2.0 + +#: The thickness of the underline cursor (in pts). + +# cursor_blink_interval -1 + +#: The interval to blink the cursor (in seconds). Set to zero to +#: disable blinking. Negative values mean use system default. Note +#: that the minimum interval will be limited to repaint_delay. + +# cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +# scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down performance of the terminal and +#: also use large amounts of RAM. Instead, consider using +#: scrollback_pager_history_size. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position or +#: set to 0 if there is no cursor, for example, when showing the last +#: command output. + +# scrollback_pager_history_size 0 + +#: Separate scrollback history size (in MB), used only for browsing +#: the scrollback buffer with pager. This separate buffer is not +#: available for interactive scrolling but will be piped to the pager +#: program when viewing scrollback buffer in a separate window. The +#: current implementation stores the data in UTF-8, so approximately +#: 10000 lines per megabyte at 100 chars per line, for pure ASCII, +#: unformatted text. A value of zero or less disables this feature. +#: The maximum allowed size is 4GB. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +# scrollback_fill_enlarged_window no + +#: Fill new space with lines from the scrollback buffer after +#: enlarging a window. + +# wheel_scroll_multiplier 5.0 + +#: Multiplier for the number of lines scrolled by the mouse wheel. +#: Note that this is only used for low precision scrolling devices, +#: not for high precision scrolling devices on platforms such as macOS +#: and Wayland. Use negative numbers to change scroll direction. See +#: also wheel_scroll_min_lines. + +# wheel_scroll_min_lines 1 + +#: The minimum number of lines scrolled by the mouse wheel. The scroll +#: multiplier wheel_scroll_multiplier only takes effect after it +#: reaches this number. Note that this is only used for low precision +#: scrolling devices like wheel mice that scroll by very small amounts +#: when using the wheel. With a negative number, the minimum number of +#: lines will always be added. + +# touch_scroll_multiplier 1.0 + +#: Multiplier for the number of lines scrolled by a touchpad. Note +#: that this is only used for high precision scrolling devices on +#: platforms such as macOS and Wayland. Use negative numbers to change +#: scroll direction. + +#: }}} + +#: Mouse {{{ + +# mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +# url_color #0087bd +# url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, straight, double, curly, dotted, dashed. + +# open_url_with default + +#: The program to open clicked URLs. The special value default will +#: first look for any URL handlers defined via the open_actions +#: facility and if non +#: are found, it will use the Operating System's default URL handler +#: (open on macOS and xdg-open on Linux). + +# url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +# detect_urls yes + +#: Detect URLs under the mouse. Detected URLs are highlighted with an +#: underline and the mouse cursor becomes a hand over them. Even if +#: this option is disabled, URLs are still clickable. See also the +#: underline_hyperlinks option to control how hyperlinks (as opposed +#: to plain text URLs) are displayed. + +# url_excluded_characters + +#: Additional characters to be disallowed from URLs, when detecting +#: URLs under the mouse cursor. By default, all characters that are +#: legal in URLs are allowed. Additionally, newlines are allowed (but +#: stripped). This is to accommodate programs such as mutt that add +#: hard line breaks even for continued lines. \n can be added to this +#: option to disable this behavior. Special characters can be +#: specified using backslash escapes, to specify a backslash use a +#: double backslash. + +# show_hyperlink_targets no + +#: When the mouse hovers over a terminal hyperlink, show the actual +#: URL that will be activated when the hyperlink is clicked. + +# underline_hyperlinks hover + +#: Control how hyperlinks are underlined. They can either be +#: underlined on mouse hover, always (i.e. permanently underlined) or +#: never which means that kitty will not apply any underline styling +#: to hyperlinks. Uses the url_style and url_color settings for the +#: underline style. Note that reloading the config and changing this +#: value to/from always will only affect text subsequently received by +#: kitty. + +# copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, selecting text with the mouse will cause the text to be +#: copied to clipboard. Useful on platforms such as macOS that do not +#: have the concept of primary selection. You can instead specify a +#: name such as a1 to copy to a private kitty buffer. Map a shortcut +#: with the paste_from_buffer action to paste from this private +#: buffer. For example:: + +#: copy_on_select a1 +#: map shift+cmd+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +# paste_actions quote-urls-at-prompt,confirm + +#: A comma separated list of actions to take when pasting text into +#: the terminal. The supported paste actions are: + +#: quote-urls-at-prompt: +#: If the text being pasted is a URL and the cursor is at a shell prompt, +#: automatically quote the URL (needs shell_integration). +#: replace-dangerous-control-codes +#: Replace dangerous control codes from pasted text, without confirmation. +#: replace-newline +#: Replace the newline character from pasted text, without confirmation. +#: confirm: +#: Confirm the paste if the text to be pasted contains any terminal control codes +#: as this can be dangerous, leading to code execution if the shell/program running +#: in the terminal does not properly handle these. +#: confirm-if-large +#: Confirm the paste if it is very large (larger than 16KB) as pasting +#: large amounts of text into shells can be very slow. +#: filter: +#: Run the filter_paste() function from the file paste-actions.py in +#: the kitty config directory on the pasted text. The text returned by the +#: function will be actually pasted. +#: no-op: +#: Has no effect. + +# strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. A value of always will always do it. + +# select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the Unicode database will be matched. + +# select_by_word_characters_forward + +#: Characters considered part of a word when extending the selection +#: forward on double clicking. In addition to these characters any +#: character that is marked as an alphanumeric character in the +#: Unicode database will be matched. + +#: If empty (default) select_by_word_characters will be used for both +#: directions. + +# click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +# focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around. On macOS, this will also cause the OS Window under +#: the mouse to be focused automatically when the mouse enters it. + +# pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. + +# default_pointer_shape beam + +#: The default shape of the mouse pointer. + +# pointer_shape_when_dragging beam + +#: The default shape of the mouse pointer when dragging across text. + +#: Mouse actions {{{ + +#: Mouse buttons can be mapped to perform arbitrary actions. The +#: syntax is: + +#: .. code-block:: none + +#: mouse_map button-name event-type modes action + +#: Where button-name is one of left, middle, right, b1 ... b8 with +#: added keyboard modifiers. For example: ctrl+shift+left refers to +#: holding the Ctrl+Shift keys while clicking with the left mouse +#: button. The value b1 ... b8 can be used to refer to up to eight +#: buttons on a mouse. + +#: event-type is one of press, release, doublepress, triplepress, +#: click, doubleclick. modes indicates whether the action is performed +#: when the mouse is grabbed by the program running in the terminal, +#: or not. The values are grabbed or ungrabbed or a comma separated +#: combination of them. grabbed refers to when the program running in +#: the terminal has requested mouse events. Note that the click and +#: double click events have a delay of click_interval to disambiguate +#: from double and triple presses. + +#: You can run kitty with the kitty --debug-input command line option +#: to see mouse events. See the builtin actions below to get a sense +#: of what is possible. + +#: If you want to unmap a button, map it to nothing. For example, to +#: disable opening of URLs with a plain click:: + +#: mouse_map left click ungrabbed + +#: See all the mappable actions including mouse actions here +#: . + +#: .. note:: +#: Once a selection is started, releasing the button that started it will +#: automatically end it and no release event will be dispatched. + +# clear_all_mouse_actions no + +#: Remove all mouse action definitions up to this point. Useful, for +#: instance, to remove the default mouse actions. + +#: Click the link under the mouse or move the cursor + +# mouse_map left click ungrabbed mouse_handle_click selection link prompt + +#:: First check for a selection and if one exists do nothing. Then +#:: check for a link under the mouse cursor and if one exists, click +#:: it. Finally check if the click happened at the current shell +#:: prompt and if so, move the cursor to the click location. Note +#:: that this requires shell integration +#:: to work. + +#: Click the link under the mouse or move the cursor even when grabbed + +# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt + +#:: Same as above, except that the action is performed even when the +#:: mouse is grabbed by the program running in the terminal. + +#: Click the link under the mouse cursor + +# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link + +#:: Variant with Ctrl+Shift is present because the simple click based +#:: version has an unavoidable delay of click_interval, to +#:: disambiguate clicks from double clicks. + +#: Discard press event for link click + +# mouse_map ctrl+shift+left press grabbed discard_event + +#:: Prevent this press event from being sent to the program that has +#:: grabbed the mouse, as the corresponding release event is used to +#:: open a URL. + +#: Paste from the primary selection + +# mouse_map middle release ungrabbed paste_from_selection + +#: Start selecting text + +# mouse_map left press ungrabbed mouse_selection normal + +#: Start selecting text in a rectangle + +# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle + +#: Select a word + +# mouse_map left doublepress ungrabbed mouse_selection word + +#: Select a line + +# mouse_map left triplepress ungrabbed mouse_selection line + +#: Select line from point + +# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line. If you +#:: would like to select the word at the point and then extend to the +#:: rest of the line, change line_from_point to +#:: word_and_line_from_point. + +#: Extend the current selection + +# mouse_map right press ungrabbed mouse_selection extend + +#:: If you want only the end of the selection to be moved instead of +#:: the nearest boundary, use move-end instead of extend. + +#: Paste from the primary selection even when grabbed + +# mouse_map shift+middle release ungrabbed,grabbed paste_selection +# mouse_map shift+middle press grabbed discard_event + +#: Start selecting text even when grabbed + +# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal + +#: Start selecting text in a rectangle even when grabbed + +# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle + +#: Select a word even when grabbed + +# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word + +#: Select a line even when grabbed + +# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line + +#: Select line from point even when grabbed + +# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line even when +#:: grabbed. If you would like to select the word at the point and +#:: then extend to the rest of the line, change line_from_point to +#:: word_and_line_from_point. + +#: Extend the current selection even when grabbed + +# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend + +#: Show clicked command output in pager + +# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: }}} + +#: Performance tuning {{{ + +# repaint_delay 10 + +#: Delay between screen updates (in milliseconds). Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS, you have to +#: either set sync_to_monitor to no or use a monitor with a high +#: refresh rate. Also, to minimize latency when there is pending input +#: to be processed, this option is ignored. + +# input_delay 3 + +#: Delay before input from the program running in the terminal is +#: processed (in milliseconds). Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. +#: This setting is ignored when the input buffer is almost full. + +# sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents screen tearing +#: when scrolling. +#: However, it limits the rendering speed to the refresh rate of your +#: monitor. With a very high speed mouse/high keyboard repeat rate, +#: you may notice some slight input latency. If so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +# enable_audio_bell yes + +#: The audio bell. Useful to disable it in environments that require +#: silence. + +# visual_bell_duration 0.0 + +#: The visual bell duration (in seconds). Flash the screen when a bell +#: occurs for the specified number of seconds. Set to zero to disable. + +# visual_bell_color none + +#: The color used by visual bell. Set to none will fall back to +#: selection background color. If you feel that the visual bell is too +#: bright, you can set it to a darker color. + +# window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +# bell_on_tab "🔔 " + +#: Some text or a Unicode symbol to show on the tab if a window in the +#: tab that does not have focus has a bell. If you want to use leading +#: or trailing spaces, surround the text with quotes. See +#: tab_title_template for how this is rendered. + +#: For backwards compatibility, values of yes, y and true are +#: converted to the default bell symbol and no, n, false and none are +#: converted to the empty string. + +# command_on_bell none + +#: Program to run when a bell occurs. The environment variable +#: KITTY_CHILD_CMDLINE can be used to get the program running in the +#: window in which the bell occurred. + +# bell_path none + +#: Path to a sound file to play as the bell sound. If set to none, the +#: system default bell sound is used. Must be in a format supported by +#: the operating systems sound API, such as WAV or OGA on Linux +#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) + +# linux_bell_theme __custom + +#: The XDG Sound Theme kitty will use to play the bell sound. Defaults +#: to the custom theme name used by GNOME and Budgie, falling back to +#: the default freedesktop theme if it does not exist. This option may +#: be removed if Linux ever provides desktop-agnostic support for +#: setting system sound themes. + +#: }}} + +#: Window layout {{{ + +# remember_window_size yes +# initial_window_width 640 +# initial_window_height 400 + +#: If enabled, the OS Window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the OS Window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +# enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the layouts . + +# window_resize_step_cells 2 +# window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing kitty windows in a layout with the shortcut +#: start_resizing_window. The cells value is used for horizontal +#: resizing, and the lines value is used for vertical resizing. + +# window_border_width 0.5pt + +#: The width of window borders. Can be either in pixels (px) or pts +#: (pt). Values in pts will be rounded to the nearest number of pixels +#: based on screen resolution. If not specified, the unit is assumed +#: to be pts. Note that borders are displayed only when more than one +#: window is visible. They are meant to separate multiple windows. + +# draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: borders that separate the window from a neighbor are drawn. Note +#: that setting a non-zero window_margin_width overrides this and +#: causes all borders to be drawn. + +# window_margin_width 0 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +# single_window_margin_width -1 + +#: The window margin to use when only a single window is visible (in +#: pts). Negative values will cause the value of window_margin_width +#: to be used instead. A single value sets all four sides. Two values +#: set the vertical and horizontal sides. Three values set top, +#: horizontal and bottom. Four values set top, right, bottom and left. + +# window_padding_width 0 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +# single_window_padding_width -1 + +#: The window padding to use when only a single window is visible (in +#: pts). Negative values will cause the value of window_padding_width +#: to be used instead. A single value sets all four sides. Two values +#: set the vertical and horizontal sides. Three values set top, +#: horizontal and bottom. Four values set top, right, bottom and left. + +# placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be +#: only at the bottom and right edges. + +# active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. + +# inactive_border_color #cccccc + +#: The color for the border of inactive windows. + +# bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred. + +# inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +# hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only and titlebar-and-corners can be used +#: to only hide the titlebar and the rounded corners. Whether this +#: works and exactly what effect it has depends on the window +#: manager/operating system. Note that the effects of changing this +#: option when reloading config are undefined. When using titlebar- +#: only, it is useful to also set window_margin_width and +#: placement_strategy to prevent the rounded corners from clipping +#: text. Or use titlebar-and-corners. + +# window_logo_path none + +#: Path to a logo image. Must be in PNG format. Relative paths are +#: interpreted relative to the kitty config directory. The logo is +#: displayed in a corner of every kitty window. The position is +#: controlled by window_logo_position. Individual windows can be +#: configured to have different logos either using the launch action +#: or the remote control facility. + +# window_logo_position bottom-right + +#: Where to position the window logo in the window. The value can be +#: one of: top-left, top, top-right, left, center, right, bottom-left, +#: bottom, bottom-right. + +# window_logo_alpha 0.5 + +#: The amount the logo should be faded into the background. With zero +#: being fully faded and one being fully opaque. + +# resize_debounce_time 0.1 0.5 + +#: The time to wait (in seconds) before asking the program running in +#: kitty to resize and redraw the screen during a live resize of the +#: OS window, when no new resize events have been received, i.e. when +#: resizing is either paused or finished. On platforms such as macOS, +#: where the operating system sends events corresponding to the start +#: and end of a live resize, the second number is used for redraw- +#: after-pause since kitty can distinguish between a pause and end of +#: resizing. On such systems the first number is ignored and redraw is +#: immediate after end of resize. On other systems only the first +#: number is used so that kitty is "ready" quickly after the end of +#: resizing, while not also continuously redrawing, to save energy. + +# resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with initial_window_width +#: and initial_window_height in number of cells, this option can be +#: used to keep the margins as small as possible when resizing the OS +#: window. Note that this does not currently work on Wayland. + +# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ + +#: The list of characters for visual window selection. For example, +#: for selecting a window to focus on with focus_visible_window. The +#: value should be a series of unique numbers or alphabets, case +#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your +#: preference as a string of characters. + +# confirm_os_window_close -1 + +#: Ask for confirmation when closing an OS window or a tab with at +#: least this number of kitty windows in it by window manager (e.g. +#: clicking the window close button or pressing the operating system +#: shortcut to close windows) or by the close_tab action. A value of +#: zero disables confirmation. This confirmation also applies to +#: requests to quit the entire application (all OS windows, via the +#: quit action). Negative values are converted to positive ones, +#: however, with shell_integration enabled, using negative values +#: means windows sitting at a shell prompt are not counted, only +#: windows where some command is currently running. Note that if you +#: want confirmation when closing individual windows, you can map the +#: close_window_with_confirmation action. + +#: }}} + +#: Tab bar {{{ + +# tab_bar_edge bottom + +#: The edge to show the tab bar on, top or bottom. + +# tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts). + +# tab_bar_margin_height 0.0 0.0 + +#: The margin above and below the tab bar (in pts). The first number +#: is the margin between the edge of the OS Window and the tab bar. +#: The second number is the margin between the tab bar and the +#: contents of the current tab. + +# tab_bar_style fade + +#: The tab bar style, can be one of: + +#: fade +#: Each tab's edges fade into the background color. (See also tab_fade) +#: slant +#: Tabs look like the tabs in a physical file. +#: separator +#: Tabs are separated by a configurable separator. (See also +#: tab_separator) +#: powerline +#: Tabs are shown as a continuous line with "fancy" separators. +#: (See also tab_powerline_style) +#: custom +#: A user-supplied Python function called draw_tab is loaded from the file +#: tab_bar.py in the kitty config directory. For examples of how to +#: write such a function, see the functions named draw_tab_with_* in +#: kitty's source code: kitty/tab_bar.py. See also +#: this discussion +#: for examples from kitty users. +#: hidden +#: The tab bar is hidden. If you use this, you might want to create +#: a mapping for the select_tab action which presents you with a list of +#: tabs and allows for easy switching to a tab. + +# tab_bar_align left + +#: The horizontal alignment of the tab bar, can be one of: left, +#: center, right. + +# tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown. + +# tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of right will switch to the tab to the right of +#: the closed tab. A value of last will switch to the right-most tab. + +# tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +# tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +# tab_powerline_style angled + +#: The powerline separator style between tabs in the tab bar when +#: using powerline as the tab_bar_style, can be one of: angled, +#: slanted, round. + +# tab_activity_symbol none + +#: Some text or a Unicode symbol to show on the tab if a window in the +#: tab that does not have focus has some activity. If you want to use +#: leading or trailing spaces, surround the text with quotes. See +#: tab_title_template for how this is rendered. + +# tab_title_max_length 0 + +#: The maximum number of cells that can be used to render the text in +#: a tab. A value of zero means that no limit is applied. + +# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" + +#: A template to render the tab title. The default just renders the +#: title with optional symbols for bell and activity. If you wish to +#: include the tab-index as well, use something like: {index}:{title}. +#: Useful if you have shortcuts mapped for goto_tab N. If you prefer +#: to see the index as a superscript, use {sup.index}. All data +#: available is: + +#: title +#: The current tab title. +#: index +#: The tab index usable with goto_tab N goto_tab shortcuts. +#: layout_name +#: The current layout name. +#: num_windows +#: The number of windows in the tab. +#: num_window_groups +#: The number of window groups (a window group is a window and all of its overlay windows) in the tab. +#: tab.active_wd +#: The working directory of the currently active window in the tab +#: (expensive, requires syscall). Use active_oldest_wd to get +#: the directory of the oldest foreground process rather than the newest. +#: tab.active_exe +#: The name of the executable running in the foreground of the currently +#: active window in the tab (expensive, requires syscall). Use +#: active_oldest_exe for the oldest foreground process. +#: max_title_length +#: The maximum title length available. + +#: Note that formatting is done by Python's string formatting +#: machinery, so you can use, for instance, {layout_name[:2].upper()} +#: to show only the first two letters of the layout name, upper-cased. +#: If you want to style the text, you can use styling directives, for +#: example: +#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. +#: Similarly, for bold and italic: +#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. +#: Note that for backward compatibility, if {bell_symbol} or +#: {activity_symbol} are not present in the template, they are +#: prepended to it. + +# active_tab_title_template none + +#: Template to use for active tabs. If not specified falls back to +#: tab_title_template. + +# active_tab_foreground #000 +# active_tab_background #eee +# active_tab_font_style bold-italic +# inactive_tab_foreground #444 +# inactive_tab_background #999 +# inactive_tab_font_style normal + +#: Tab bar colors and styles. + +# tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +# tab_bar_margin_color none + +#: Color for the tab bar margin area. Defaults to using the terminal +#: background color for margins above and below the tab bar. For side +#: margins the default color is chosen to match the background color +#: of the neighboring tab. + +#: }}} + +#: Color scheme {{{ + +# foreground #dddddd +# background #000000 + +#: The foreground and background colors. + +# background_opacity 1.0 + +#: The opacity of the background. A number between zero and one, where +#: one is opaque and zero is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background, so that things like the status bar in vim, powerline +#: prompts, etc. still look good. But it means that if you use a color +#: theme with a background color in your editor, it will not be +#: rendered as transparent. Instead you should change the default +#: background color in your kitty config and not use a background +#: color in the editor color scheme. Or use the escape codes to set +#: the terminals default colors in a shell script to launch your +#: editor. Be aware that using a value less than 1.0 is a (possibly +#: significant) performance hit. When using a low value for this +#: setting, it is desirable that you set the background color to a +#: color the matches the general color of the desktop background, for +#: best text rendering. If you want to dynamically change +#: transparency of windows, set dynamic_background_opacity to yes +#: (this is off by default as it has a performance cost). Changing +#: this option when reloading the config will only work if +#: dynamic_background_opacity was enabled in the original config. + +# background_blur 0 + +#: Set to a positive value to enable background blur (blurring of the +#: visuals behind a transparent window) on platforms that support it. +#: Only takes effect when background_opacity is less than one. On +#: macOS, this will also control the blur radius (amount of blurring). +#: Setting it to too high a value will cause severe performance issues +#: and/or rendering artifacts. Usually, values up to 64 work well. +#: Note that this might cause performance issues, depending on how the +#: platform implements it, so use with care. Currently supported on +#: macOS and KDE under X11. + +# background_image none + +#: Path to a background image. Must be in PNG format. + +# background_image_layout tiled + +#: Whether to tile, scale or clamp the background image. The value can +#: be one of tiled, mirror-tiled, scaled, clamped, centered or +#: cscaled. The scaled and cscaled values scale the image to the +#: window size, with cscaled preserving the image aspect ratio. + +# background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +# dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. +#: Changing this option by reloading the config is not supported. + +# background_tint 0.0 + +#: How much to tint the background image by the background color. This +#: option makes it easier to read the text. Tinting is done using the +#: current background color for each window. This option applies only +#: if background_opacity is set and transparent windows are supported +#: or background_image is set. + +# background_tint_gaps 1.0 + +#: How much to tint the background image at the window gaps by the +#: background color, after applying background_tint. Since this is +#: multiplicative with background_tint, it can be used to lighten the +#: tint over the window gaps for a *separated* look. + +# dim_opacity 0.4 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +# selection_foreground #000000 +# selection_background #fffacd + +#: The foreground and background colors for text selected with the +#: mouse. Setting both of these to none will cause a "reverse video" +#: effect for selections, where the selection will be the cell text +#: color and the text will become the cell background color. Setting +#: only selection_foreground to none will cause the foreground color +#: to be used unchanged. Note that these colors can be overridden by +#: the program running in the terminal. + +#: The color table {{{ + +#: The 256 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version, for the first 16 colors. You can set the +#: remaining 240 colors as color16 to color255. + +# color0 #000000 +# color8 #767676 + +#: black + +# color1 #cc0403 +# color9 #f2201f + +#: red + +# color2 #19cb00 +# color10 #23fd00 + +#: green + +# color3 #cecb00 +# color11 #fffd00 + +#: yellow + +# color4 #0d73cc +# color12 #1a8fff + +#: blue + +# color5 #cb1ed1 +# color13 #fd28ff + +#: magenta + +# color6 #0dcdcd +# color14 #14ffff + +#: cyan + +# color7 #dddddd +# color15 #ffffff + +#: white + +# mark1_foreground black + +#: Color for marks of type 1 + +# mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +# mark2_foreground black + +#: Color for marks of type 2 + +# mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +# mark3_foreground black + +#: Color for marks of type 3 + +# mark3_background #f274bc + +#: Color for marks of type 3 (violet) + +#: }}} + +#: }}} + +#: Advanced {{{ + +# shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login and --interactive to ensure that the shell starts in +#: interactive mode and reads its startup rc files. Environment +#: variables are expanded in this setting. + +# editor . + +#: The terminal based text editor (such as vim or nano) to use when +#: editing the kitty config file or similar tasks. + +#: The default value of . means to use the environment variables +#: VISUAL and EDITOR in that order. If these variables aren't set, +#: kitty will run your shell ($SHELL -l -i -c env) to see if your +#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, +#: kitty will cycle through various known editors (vim, emacs, etc.) +#: and take the first one that exists on your system. + +# close_on_child_death no + +#: Close the window when the child process (shell) exits. With the +#: default value no, the terminal will remain open when the child +#: exits as long as there are still processes outputting to the +#: terminal (for example disowned or backgrounded processes). When +#: enabled with yes, the window will close as soon as the child +#: process exits. Note that setting it to yes means that any +#: background processes still using the terminal can fail silently +#: because their stdout/stderr/stdin no longer work. + +# remote_control_password + +#: Allow other programs to control kitty using passwords. This option +#: can be specified multiple times to add multiple passwords. If no +#: passwords are present kitty will ask the user for permission if a +#: program tries to use remote control with a password. A password can +#: also *optionally* be associated with a set of allowed remote +#: control actions. For example:: + +#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab + +#: Only the specified actions will be allowed when using this +#: password. Glob patterns can be used too, for example:: + +#: remote_control_password "my passphrase" set-tab-* resize-* + +#: To get a list of available actions, run:: + +#: kitten @ --help + +#: A set of actions to be allowed when no password is sent can be +#: specified by using an empty password. For example:: + +#: remote_control_password "" *-colors + +#: Finally, the path to a python module can be specified that provides +#: a function is_cmd_allowed that is used to check every remote +#: control command. For example:: + +#: remote_control_password "my passphrase" my_rc_command_checker.py + +#: Relative paths are resolved from the kitty configuration directory. +#: See rc_custom_auth for details. + +# allow_remote_control no + +#: Allow other programs to control kitty. If you turn this on, other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over SSH +#: connections. The default setting of no prevents any form of remote +#: control. The meaning of the various values are: + +#: password +#: Remote control requests received over both the TTY device and the socket +#: are confirmed based on passwords, see remote_control_password. + +#: socket-only +#: Remote control requests received over a socket are accepted +#: unconditionally. Requests received over the TTY are denied. +#: See listen_on. + +#: socket +#: Remote control requests received over a socket are accepted +#: unconditionally. Requests received over the TTY are confirmed based on +#: password. + +#: no +#: Remote control is completely disabled. + +#: yes +#: Remote control requests are always accepted. + +# listen_on none + +#: Listen to the specified socket for remote control connections. Note +#: that this will apply to all kitty instances. It can be overridden +#: by the kitty --listen-on command line option. For UNIX sockets, +#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). +#: Environment variables are expanded and relative paths are resolved +#: with respect to the temporary directory. If {kitty_pid} is present, +#: then it is replaced by the PID of the kitty process, otherwise the +#: PID of the kitty process is appended to the value, with a hyphen. +#: For TCP sockets such as tcp:localhost:0 a random port is always +#: used even if a non-zero port number is specified. See the help for +#: kitty --listen-on for more details. Note that this will be ignored +#: unless allow_remote_control is set to either: yes, socket or +#: socket-only. Changing this option by reloading the config is not +#: supported. + +# env + +#: Specify the environment variables to be set in all child processes. +#: Using the name with an equal sign (e.g. env VAR=) will set it to +#: the empty string. Specifying only the name (e.g. env VAR) will +#: remove the variable from the child process' environment. Note that +#: environment variables are expanded recursively, for example:: + +#: env VAR1=a +#: env VAR2=${HOME}/${VAR1}/b + +#: The value of VAR2 will be /a/b. + +# watcher + +#: Path to python file which will be loaded for watchers +#: . Can be +#: specified more than once to load multiple watchers. The watchers +#: will be added to every kitty window. Relative paths are resolved +#: relative to the kitty config directory. Note that reloading the +#: config will only affect windows created after the reload. + +# exe_search_path + +#: Control where kitty finds the programs to run. The default search +#: order is: First search the system wide PATH, then ~/.local/bin and +#: ~/bin. If still not found, the PATH defined in the login shell +#: after sourcing all its startup files is tried. Finally, if present, +#: the PATH specified by the env option is tried. + +#: This option allows you to prepend, append, or remove paths from +#: this search order. It can be specified multiple times for multiple +#: paths. A simple path will be prepended to the search order. A path +#: that starts with the + sign will be append to the search order, +#: after ~/bin above. A path that starts with the - sign will be +#: removed from the entire search order. For example:: + +#: exe_search_path /some/prepended/path +#: exe_search_path +/some/appended/path +#: exe_search_path -/some/excluded/path + +# update_check_interval 24 + +#: The interval to periodically check if an update to kitty is +#: available (in hours). If an update is found, a system notification +#: is displayed informing you of the available update. The default is +#: to check every 24 hours, set to zero to disable. Update checking is +#: only done by the official binary builds. Distro packages or source +#: builds do not do update checking. Changing this option by reloading +#: the config is not supported. + +# startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session =none command line option +#: for individual instances. See sessions +#: in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. Changing this option by reloading the +#: config is not supported. Note that if kitty is invoked with command +#: line arguments specifying a command to run, this option is ignored. + +# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: possible actions are: write-clipboard, read-clipboard, write- +#: primary, read-primary, read-clipboard-ask, read-primary-ask. The +#: default is to allow writing to the clipboard and primary selection +#: and to ask for permission when a program tries to read from the +#: clipboard. Note that disabling the read confirmation is a security +#: risk as it means that any program, even the ones running on a +#: remote server via SSH can read your clipboard. See also +#: clipboard_max_size. + +# clipboard_max_size 512 + +#: The maximum size (in MB) of data from programs running in kitty +#: that will be stored for writing to the system clipboard. A value of +#: zero means no size limit is applied. See also clipboard_control. + +# file_transfer_confirmation_bypass + +#: The password that can be supplied to the file transfer kitten +#: to skip the +#: transfer confirmation prompt. This should only be used when +#: initiating transfers from trusted computers, over trusted networks +#: or encrypted transports, as it allows any programs running on the +#: remote machine to read/write to the local filesystem, without +#: permission. + +# allow_hyperlinks yes + +#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 +#: escape sequences are ignored. Otherwise they become clickable +#: links, that you can click with the mouse or by using the hints +#: kitten . The +#: special value of ask means that kitty will ask before opening the +#: link when clicked. + +# shell_integration enabled + +#: Enable shell integration on supported shells. This enables features +#: such as jumping to previous prompts, browsing the output of the +#: previous command in a pager, etc. on supported shells. Set to +#: disabled to turn off shell integration, completely. It is also +#: possible to disable individual features, set to a space separated +#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- +#: prompt-mark, no-complete, no-sudo. See Shell integration +#: for details. + +# allow_cloning ask + +#: Control whether programs running in the terminal can request new +#: windows to be created. The canonical example is clone-in-kitty +#: . +#: By default, kitty will ask for permission for each clone request. +#: Allowing cloning unconditionally gives programs running in the +#: terminal (including over SSH) permission to execute arbitrary code, +#: as the user who is running the terminal, on the computer that the +#: terminal is running on. + +# clone_source_strategies venv,conda,env_var,path + +#: Control what shell code is sourced when running clone-in-kitty in +#: the newly cloned window. The supported strategies are: + +#: venv +#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the +#: Python stdlib venv module and allows cloning venvs automatically. +#: conda +#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual +#: environments created by conda. +#: env_var +#: Execute the contents of the environment variable +#: KITTY_CLONE_SOURCE_CODE with eval. +#: path +#: Source the file pointed to by the environment variable +#: KITTY_CLONE_SOURCE_PATH. + +#: This option must be a comma separated list of the above values. +#: Only the first valid match, in the order specified, is sourced. + +# notify_on_cmd_finish never + +#: Show a desktop notification when a long-running command finishes +#: (needs shell_integration). The possible values are: + +#: never +#: Never send a notification. + +#: unfocused +#: Only send a notification when the window does not have keyboard focus. + +#: invisible +#: Only send a notification when the window both is unfocused and not visible +#: to the user, for example, because it is in an inactive tab or its OS window +#: is not currently active. + +#: always +#: Always send a notification, regardless of window state. + +#: There are two optional arguments: + +#: First, the minimum duration for what is considered a long running +#: command. The default is 5 seconds. Specify a second argument to set +#: the duration. For example: invisible 15. Do not set the value too +#: small, otherwise a command that launches a new OS Window and exits +#: will spam a notification. + +#: Second, the action to perform. The default is notify. The possible +#: values are: + +#: notify +#: Send a desktop notification. + +#: bell +#: Ring the terminal bell. + +#: command +#: Run a custom command. All subsequent arguments are the cmdline to run. + +#: Some more examples:: + +#: # Send a notification when a command takes more than 5 seconds in an unfocused window +#: notify_on_cmd_finish unfocused +#: # Send a notification when a command takes more than 10 seconds in a invisible window +#: notify_on_cmd_finish invisible 10.0 +#: # Ring a bell when a command takes more than 10 seconds in a invisible window +#: notify_on_cmd_finish invisible 10.0 bell +#: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window +#: notify_on_cmd_finish invisible 10.0 command notify-send job finished + +# term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on "Stack Overflow" +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. Changing this option by reloading the config will only affect +#: newly created windows. + +# forward_stdio no + +#: Forward STDOUT and STDERR of the kitty process to child processes +#: as file descriptors 3 and 4. This is useful for debugging as it +#: allows child processes to print to kitty's STDOUT directly. For +#: example, echo hello world >&3 in a shell will print to the parent +#: kitty's STDOUT. When enabled, this also sets the +#: KITTY_STDIO_FORWARDED=3 environment variable so child processes +#: know about the forwarding. + +# menu_map + +#: Specify entries for various menus in kitty. Currently only the +#: global menubar on macOS is supported. For example:: + +#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" + +#: This will create a menu entry named "Launch something special" in +#: an "Actions" menu in the macOS global menubar. Sub-menus can be +#: created by adding more levels separated by the :: characters. + +#: }}} + +#: OS specific tweaks {{{ + +# wayland_titlebar_color system + +#: The color of the kitty window's titlebar on Wayland systems with +#: client side window decorations such as GNOME. A value of system +#: means to use the default system color, a value of background means +#: to use the background color of the currently active window and +#: finally you can use an arbitrary color, such as #12af59 or red. + +# macos_titlebar_color system + +#: The color of the kitty window's titlebar on macOS. A value of +#: system means to use the default system color, light or dark can +#: also be used to set it explicitly. A value of background means to +#: use the background color of the currently active window and finally +#: you can use an arbitrary color, such as #12af59 or red. WARNING: +#: This option works by using a hack when arbitrary color (or +#: background) is configured, as there is no proper Cocoa API for it. +#: It sets the background color of the entire window and makes the +#: titlebar transparent. As such it is incompatible with +#: background_opacity. If you want to use both, you are probably +#: better off just hiding the titlebar with hide_window_decorations. + +# macos_option_as_alt no + +#: Use the Option key as an Alt key on macOS. With this set to no, +#: kitty will use the macOS native Option+Key to enter Unicode +#: character behavior. This will break any Alt+Key keyboard shortcuts +#: in your terminal programs, but you can use the macOS Unicode input +#: technique. You can use the values: left, right or both to use only +#: the left, right or both Option keys as Alt, instead. Note that +#: kitty itself always treats Option the same as Alt. This means you +#: cannot use this option to configure different kitty shortcuts for +#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using +#: Option/Alt+Key will take priority, so that any such key presses +#: will not be passed to terminal programs running inside kitty. +#: Changing this option by reloading the config is not supported. + +# macos_hide_from_tasks no + +#: Hide the kitty window from running tasks on macOS (⌘+Tab and the +#: Dock). Changing this option by reloading the config is not +#: supported. + +# macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed on macOS. +#: By default, kitty will stay running, even with no open windows, as +#: is the expected behavior on macOS. + +# macos_window_resizable yes + +#: Disable this if you want kitty top-level OS windows to not be +#: resizable on macOS. + +# macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes on macOS. For example, a +#: value of 0.75 will result in rendering that looks similar to sub- +#: pixel antialiasing at common font sizes. Note that in modern kitty, +#: this option is obsolete (although still supported). Consider using +#: text_composition_strategy instead. + +# macos_traditional_fullscreen no + +#: Use the macOS traditional full-screen transition, that is faster, +#: but less pretty. + +# macos_show_window_title_in all + +#: Control where the window title is displayed on macOS. A value of +#: window will show the title of the currently active window at the +#: top of the macOS window. A value of menubar will show the title of +#: the currently active window in the macOS global menu bar, making +#: use of otherwise wasted space. A value of all will show the title +#: in both places, and none hides the title. See +#: macos_menubar_title_max_length for how to control the length of the +#: title in the menu bar. + +# macos_menubar_title_max_length 0 + +#: The maximum number of characters from the window title to show in +#: the macOS global menu bar. Values less than one means that there is +#: no maximum limit. + +# macos_custom_beam_cursor no + +#: Use a custom mouse cursor for macOS that is easier to see on both +#: light and dark backgrounds. Nowadays, the default macOS cursor +#: already comes with a white border. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. Changing this option +#: by reloading the config is not supported. + +# macos_colorspace srgb + +#: The colorspace in which to interpret terminal colors. The default +#: of srgb will cause colors to match those seen in web browsers. The +#: value of default will use whatever the native colorspace of the +#: display is. The value of displayp3 will use Apple's special +#: snowflake display P3 color space, which will result in over +#: saturated (brighter) colors with some color shift. Reloading +#: configuration will change this value only for newly created OS +#: windows. + +# linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. Changing this option by +#: reloading the config is not supported. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: Keys are identified simply by their lowercase Unicode characters. +#: For example: a for the A key, [ for the left square bracket key, +#: etc. For functional keys, such as Enter or Escape, the names are +#: present at Functional key definitions +#: . +#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt +#: (opt, option, ⌥), super (cmd, command, ⌘). + +#: Simple shortcut mapping is done with the map directive. For full +#: details on advanced mapping including modal and per application +#: maps, see mapping . Some +#: quick examples to illustrate common tasks:: + +#: # unmap a keyboard shortcut, passing it to the program running in kitty +#: map kitty_mod+space +#: # completely ignore a keyboard event +#: map ctrl+alt+f1 discard_event +#: # combine multiple actions +#: map kitty_mod+e combine : new_window : next_layout +#: # multi-key shortcuts +#: map ctrl+x>ctrl+y>z action + +#: The full list of actions that can be mapped to key presses is +#: available here . + +# kitty_mod ctrl+shift + +#: Special modifier key alias for default shortcuts. You can change +#: the value of this option to alter all default shortcuts that use +#: kitty_mod. + +# clear_all_shortcuts no + +#: Remove all shortcut definitions up to this point. Useful, for +#: instance, to remove the default shortcuts. + +# action_alias + +#: E.g. action_alias launch_tab launch --type=tab --cwd=current + +#: Define action aliases to avoid repeating the same options in +#: multiple mappings. Aliases can be defined for any action and will +#: be expanded recursively. For example, the above alias allows you to +#: create mappings to launch a new tab in the current working +#: directory without duplication:: + +#: map f1 launch_tab vim +#: map f2 launch_tab emacs + +#: Similarly, to alias kitten invocation:: + +#: action_alias hints kitten hints --hints-offset=0 + +# kitten_alias + +#: E.g. kitten_alias hints hints --hints-offset=0 + +#: Like action_alias above, but specifically for kittens. Generally, +#: prefer to use action_alias. This option is a legacy version, +#: present for backwards compatibility. It causes all invocations of +#: the aliased kitten to be substituted. So the example above will +#: cause all invocations of the hints kitten to have the --hints- +#: offset=0 option applied. + +#: Clipboard {{{ + +#: Copy to clipboard + +# map kitty_mod+c copy_to_clipboard +# map cmd+c copy_to_clipboard + +#:: There is also a copy_or_interrupt action that can be optionally +#:: mapped to Ctrl+C. It will copy only if there is a selection and +#:: send an interrupt otherwise. Similarly, +#:: copy_and_clear_or_interrupt will copy and clear the selection or +#:: send an interrupt if there is no selection. + +#: Paste from clipboard + +# map kitty_mod+v paste_from_clipboard +# map cmd+v paste_from_clipboard + +#: Paste from selection + +# map kitty_mod+s paste_from_selection +# map shift+insert paste_from_selection + +#: Pass selection to program + +# map kitty_mod+o pass_selection_to_program + +#:: You can also pass the contents of the current selection to any +#:: program with pass_selection_to_program. By default, the system's +#:: open program is used, but you can specify your own, the selection +#:: will be passed as a command line argument to the program. For +#:: example:: + +#:: map kitty_mod+o pass_selection_to_program firefox + +#:: You can pass the current selection to a terminal program running +#:: in a new kitty window, by using the @selection placeholder:: + +#:: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +#: Scroll line up + +# map kitty_mod+up scroll_line_up +# map kitty_mod+k scroll_line_up +# map opt+cmd+page_up scroll_line_up +# map cmd+up scroll_line_up + +#: Scroll line down + +# map kitty_mod+down scroll_line_down +# map kitty_mod+j scroll_line_down +# map opt+cmd+page_down scroll_line_down +# map cmd+down scroll_line_down + +#: Scroll page up + +# map kitty_mod+page_up scroll_page_up +# map cmd+page_up scroll_page_up + +#: Scroll page down + +# map kitty_mod+page_down scroll_page_down +# map cmd+page_down scroll_page_down + +#: Scroll to top + +# map kitty_mod+home scroll_home +# map cmd+home scroll_home + +#: Scroll to bottom + +# map kitty_mod+end scroll_end +# map cmd+end scroll_end + +#: Scroll to previous shell prompt + +# map kitty_mod+z scroll_to_prompt -1 + +#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last +#:: jumped to or the last clicked position. Requires shell +#:: integration +#:: to work. + +#: Scroll to next shell prompt + +# map kitty_mod+x scroll_to_prompt 1 + +#: Browse scrollback buffer in pager + +# map kitty_mod+h show_scrollback + +#:: You can pipe the contents of the current screen and history +#:: buffer as STDIN to an arbitrary program using launch --stdin- +#:: source. For example, the following opens the scrollback buffer in +#:: less in an overlay window:: + +#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#:: For more details on piping screen and buffer contents to external +#:: programs, see launch . + +#: Browse output of the last shell command in pager + +# map kitty_mod+g show_last_command_output + +#:: You can also define additional shortcuts to get the command +#:: output. For example, to get the first command output on screen:: + +#:: map f1 show_first_command_output_on_screen + +#:: To get the command output that was last accessed by a keyboard +#:: action or mouse action:: + +#:: map f1 show_last_visited_command_output + +#:: You can pipe the output of the last command run in the shell +#:: using the launch action. For example, the following opens the +#:: output in less in an overlay window:: + +#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R + +#:: To get the output of the first command on the screen, use +#:: @first_cmd_output_on_screen. To get the output of the last jumped +#:: to command, use @last_visited_cmd_output. + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: Window management {{{ + +#: New window + +# map kitty_mod+enter new_window +# map cmd+enter new_window + +#:: You can open a new kitty window running an arbitrary program, for +#:: example:: + +#:: map kitty_mod+y launch mutt + +#:: You can open a new window with the current working directory set +#:: to the working directory of the current window using:: + +#:: map ctrl+alt+enter launch --cwd=current + +#:: You can open a new window that is allowed to control kitty via +#:: the kitty remote control facility with launch --allow-remote- +#:: control. Any programs running in that window will be allowed to +#:: control kitty. For example:: + +#:: map ctrl+enter launch --allow-remote-control some_program + +#:: You can open a new window next to the currently active window or +#:: as the first window, with:: + +#:: map ctrl+n launch --location=neighbor +#:: map ctrl+f launch --location=first + +#:: For more details, see launch +#:: . + +#: New OS window + +# map kitty_mod+n new_os_window +# map cmd+n new_os_window + +#:: Works like new_window above, except that it opens a top-level OS +#:: window. In particular you can use new_os_window_with_cwd to open +#:: a window with the current working directory. + +#: Close window + +# map kitty_mod+w close_window +# map shift+cmd+d close_window + +#: Next window + +# map kitty_mod+] next_window + +#: Previous window + +# map kitty_mod+[ previous_window + +#: Move window forward + +# map kitty_mod+f move_window_forward + +#: Move window backward + +# map kitty_mod+b move_window_backward + +#: Move window to top + +# map kitty_mod+` move_window_to_top + +#: Start resizing window + +# map kitty_mod+r start_resizing_window +# map cmd+r start_resizing_window + +#: First window + +# map kitty_mod+1 first_window +# map cmd+1 first_window + +#: Second window + +# map kitty_mod+2 second_window +# map cmd+2 second_window + +#: Third window + +# map kitty_mod+3 third_window +# map cmd+3 third_window + +#: Fourth window + +# map kitty_mod+4 fourth_window +# map cmd+4 fourth_window + +#: Fifth window + +# map kitty_mod+5 fifth_window +# map cmd+5 fifth_window + +#: Sixth window + +# map kitty_mod+6 sixth_window +# map cmd+6 sixth_window + +#: Seventh window + +# map kitty_mod+7 seventh_window +# map cmd+7 seventh_window + +#: Eighth window + +# map kitty_mod+8 eighth_window +# map cmd+8 eighth_window + +#: Ninth window + +# map kitty_mod+9 ninth_window +# map cmd+9 ninth_window + +#: Tenth window + +# map kitty_mod+0 tenth_window + +#: Visually select and focus window + +# map kitty_mod+f7 focus_visible_window + +#:: Display overlay numbers and alphabets on the window, and switch +#:: the focus to the window when you press the key. When there are +#:: only two windows, the focus will be switched directly without +#:: displaying the overlay. You can change the overlay characters and +#:: their order with option visual_window_select_characters. + +#: Visually swap window with another + +# map kitty_mod+f8 swap_with_window + +#:: Works like focus_visible_window above, but swaps the window. + +#: }}} + +#: Tab management {{{ + +#: Next tab + +# map kitty_mod+right next_tab +# map shift+cmd+] next_tab +# map ctrl+tab next_tab + +#: Previous tab + +# map kitty_mod+left previous_tab +# map shift+cmd+[ previous_tab +# map ctrl+shift+tab previous_tab + +#: New tab + +# map kitty_mod+t new_tab +# map cmd+t new_tab + +#: Close tab + +# map kitty_mod+q close_tab +# map cmd+w close_tab + +#: Close OS window + +# map shift+cmd+w close_os_window + +#: Move tab forward + +# map kitty_mod+. move_tab_forward + +#: Move tab backward + +# map kitty_mod+, move_tab_backward + +#: Set tab title + +# map kitty_mod+alt+t set_tab_title +# map shift+cmd+i set_tab_title + + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and new_tab_with_cwd. +#: Finally, if you want the new tab to open next to the current tab +#: rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +#: Next layout + +# map kitty_mod+l next_layout + + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout + +#: There is also a toggle_layout action that switches to the named +#: layout or back to the previous layout if in the named layout. +#: Useful to temporarily "zoom" the active window by switching to the +#: stack layout:: + +#: map ctrl+alt+z toggle_layout stack +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +#: Increase font size + +# map kitty_mod+equal change_font_size all +2.0 +# map kitty_mod+plus change_font_size all +2.0 +# map kitty_mod+kp_add change_font_size all +2.0 +# map cmd+plus change_font_size all +2.0 +# map cmd+equal change_font_size all +2.0 +# map shift+cmd+equal change_font_size all +2.0 + +#: Decrease font size + +# map kitty_mod+minus change_font_size all -2.0 +# map kitty_mod+kp_subtract change_font_size all -2.0 +# map cmd+minus change_font_size all -2.0 +# map shift+cmd+minus change_font_size all -2.0 + +#: Reset font size + +# map kitty_mod+backspace change_font_size all 0 +# map cmd+0 change_font_size all 0 + + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +#: Open URL + +# map kitty_mod+e open_url_with_hints + +#:: Open a currently visible URL using the keyboard. The program used +#:: to open the URL is specified in open_url_with. + +#: Insert selected path + +# map kitty_mod+p>f kitten hints --type path --program - + +#:: Select a path/filename and insert it into the terminal. Useful, +#:: for instance to run git commands on a filename output from a +#:: previous git command. + +#: Open selected path + +# map kitty_mod+p>shift+f kitten hints --type path + +#:: Select a path/filename and open it with the default open program. + +#: Insert selected line + +# map kitty_mod+p>l kitten hints --type line --program - + +#:: Select a line of text and insert it into the terminal. Useful for +#:: the output of things like: `ls -1`. + +#: Insert selected word + +# map kitty_mod+p>w kitten hints --type word --program - + +#:: Select words and insert into terminal. + +#: Insert selected hash + +# map kitty_mod+p>h kitten hints --type hash --program - + +#:: Select something that looks like a hash and insert it into the +#:: terminal. Useful with git, which uses SHA1 hashes to identify +#:: commits. + +#: Open the selected file at the selected line + +# map kitty_mod+p>n kitten hints --type linenum + +#:: Select something that looks like filename:linenum and open it in +#:: your default editor at the specified line number. + +#: Open the selected hyperlink + +# map kitty_mod+p>y kitten hints --type hyperlink + +#:: Select a hyperlink (i.e. a URL that has been marked as such by +#:: the terminal program, for example, by `ls --hyperlink=auto`). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see hints kitten +#: . +#: }}} + +#: Miscellaneous {{{ + +#: Show documentation + +# map kitty_mod+f1 show_kitty_doc overview + +#: Toggle fullscreen + +# map kitty_mod+f11 toggle_fullscreen +# map ctrl+cmd+f toggle_fullscreen + +#: Toggle maximized + +# map kitty_mod+f10 toggle_maximized + +#: Toggle macOS secure keyboard entry + +# map opt+cmd+s toggle_macos_secure_keyboard_entry + +#: Unicode input + +# map kitty_mod+u kitten unicode_input +# map ctrl+cmd+space kitten unicode_input + +#: Edit config file + +# map kitty_mod+f2 edit_config_file +# map cmd+, edit_config_file + +#: Open the kitty command shell + +# map kitty_mod+escape kitty_shell window + +#:: Open the kitty shell in a new window / tab / overlay / os_window +#:: to control kitty using commands. + +#: Increase background opacity + +# map kitty_mod+a>m set_background_opacity +0.1 + +#: Decrease background opacity + +# map kitty_mod+a>l set_background_opacity -0.1 + +#: Make background fully opaque + +# map kitty_mod+a>1 set_background_opacity 1 + +#: Reset background opacity + +# map kitty_mod+a>d set_background_opacity default + +#: Reset the terminal + +# map kitty_mod+delete clear_terminal reset active +# map opt+cmd+r clear_terminal reset active + +#:: You can create shortcuts to clear/reset the terminal. For +#:: example:: + +#:: # Reset the terminal +#:: map f1 clear_terminal reset active +#:: # Clear the terminal screen by erasing all contents +#:: map f1 clear_terminal clear active +#:: # Clear the terminal scrollback by erasing it +#:: map f1 clear_terminal scrollback active +#:: # Scroll the contents of the screen into the scrollback +#:: map f1 clear_terminal scroll active +#:: # Clear everything up to the line with the cursor or the start of the current prompt (needs shell integration) +#:: map f1 clear_terminal to_cursor active +#:: # Same as above except cleared lines are moved into scrollback +#:: map f1 clear_terminal to_cursor_scroll active + +#:: If you want to operate on all kitty windows instead of just the +#:: current one, use all instead of active. + +#:: Some useful functions that can be defined in the shell rc files +#:: to perform various kinds of clearing of the current window: + +#:: .. code-block:: sh + +#:: clear-only-screen() { +#:: printf "\e[H\e[2J" +#:: } + +#:: clear-screen-and-scrollback() { +#:: printf "\e[H\e[3J" +#:: } + +#:: clear-screen-saving-contents-in-scrollback() { +#:: printf "\e[H\e[22J" +#:: } + +#:: For instance, using these escape codes, it is possible to remap +#:: Ctrl+L to both scroll the current screen contents into the +#:: scrollback buffer and clear the screen, instead of just clearing +#:: the screen. For ZSH, in ~/.zshrc, add: + +#:: .. code-block:: zsh + +#:: ctrl_l() { +#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" +#:: builtin zle .reset-prompt +#:: builtin zle -R +#:: } +#:: zle -N ctrl_l +#:: bindkey '^l' ctrl_l + +#:: Alternatively, you can just add map ctrl+l clear_terminal +#:: to_cursor_scroll active to kitty.conf which works with no changes +#:: to the shell rc files, but only clears up to the prompt, it does +#:: not clear anytext at the prompt itself. + +#: Clear up to cursor line + +# map cmd+k clear_terminal to_cursor active + +#: Reload kitty.conf + +# map kitty_mod+f5 load_config_file +# map ctrl+cmd+, load_config_file + +#:: Reload kitty.conf, applying any changes since the last time it +#:: was loaded. Note that a handful of options cannot be dynamically +#:: changed and require a full restart of kitty. Particularly, when +#:: changing shortcuts for actions located on the macOS global menu +#:: bar, a full restart is needed. You can also map a keybinding to +#:: load a different config file, for example:: + +#:: map f5 load_config /path/to/alternative/kitty.conf + +#:: Note that all options from the original kitty.conf are discarded, +#:: in other words the new configuration *replace* the old ones. + +#: Debug kitty configuration + +# map kitty_mod+f6 debug_config +# map opt+cmd+, debug_config + +#:: Show details about exactly what configuration kitty is running +#:: with and its host environment. Useful for debugging issues. + +#: Send arbitrary text on key presses + +#:: E.g. map ctrl+shift+alt+h send_text all Hello World + +#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#:: client program when pressing specified shortcut keys. For +#:: example:: + +#:: map ctrl+alt+a send_text all Special text + +#:: This will send "Special text" when you press the Ctrl+Alt+A key +#:: combination. The text to be sent decodes ANSI C escapes +#:: so you can use escapes like \e to send control +#:: codes or \u21fb to send Unicode characters (or you can just input +#:: the Unicode characters directly as UTF-8 text). You can use +#:: `kitten show_key` to get the key escape codes you want to +#:: emulate. + +#:: The first argument to send_text is the keyboard modes in which to +#:: activate the shortcut. The possible values are normal, +#:: application, kitty or a comma separated combination of them. The +#:: modes normal and application refer to the DECCKM cursor key mode +#:: for terminals, and kitty refers to the kitty extended keyboard +#:: protocol. The special value all means all of them. + +#:: Some more examples:: + +#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) +#:: map ctrl+alt+a send_text normal Word\e[H +#:: map ctrl+alt+a send_text application Word\eOH +#:: # Run a command at a shell prompt (like typing the command and pressing Enter) +#:: map ctrl+alt+a send_text normal,application some command with arguments\r + +#: Open kitty Website + +# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ + +#: Hide macOS kitty application + +# map cmd+h hide_macos_app + +#: Hide macOS other applications + +# map opt+cmd+h hide_macos_other_apps + +#: Minimize macOS window + +# map cmd+m minimize_macos_window + +#: Quit kitty + +# map cmd+q quit + +#: }}} + +#: }}}A + +font_family /usr/local/share/fonts/HackNerdFont-Regular.ttf +font_size 13.0 + +map ctrl+k send_key down +map ctrl+i send_key up diff --git a/.config/lf/icons b/.config/lf/icons new file mode 100644 index 0000000..4022691 --- /dev/null +++ b/.config/lf/icons @@ -0,0 +1,377 @@ +# vim:ft=conf + +# These examples require Nerd Fonts or a compatible font to be used. +# See https://www.nerdfonts.com for more information. + +# default values from lf (with matching order) +# ln l # LINK +# or l # ORPHAN +# tw t # STICKY_OTHER_WRITABLE +# ow d # OTHER_WRITABLE +# st t # STICKY +# di d # DIR +# pi p # FIFO +# so s # SOCK +# bd b # BLK +# cd c # CHR +# su u # SETUID +# sg g # SETGID +# ex x # EXEC +# fi - # FILE + +# file types (with matching order) +ln  # LINK +or  # ORPHAN +tw t # STICKY_OTHER_WRITABLE +ow  # OTHER_WRITABLE +st t # STICKY +di  # DIR +pi p # FIFO +so s # SOCK +bd b # BLK +cd c # CHR +su u # SETUID +sg g # SETGID +ex  # EXEC +fi  # FILE + +# disable some default filetype icons, let them choose icon by filename +# ln  # LINK +# or  # ORPHAN +# tw # STICKY_OTHER_WRITABLE +# ow # OTHER_WRITABLE +# st # STICKY +# di  # DIR +# pi # FIFO +# so # SOCK +# bd # BLK +# cd # CHR +# su # SETUID +# sg # SETGID +# ex # EXEC +# fi  # FILE + +# file extensions (vim-devicons) +*.styl  +*.sass  +*.scss  +*.htm  +*.html  +*.slim  +*.haml  +*.ejs  +*.css  +*.less  +*.md  +*.mdx  +*.markdown  +*.rmd  +*.json  +*.webmanifest  +*.js  +*.mjs  +*.jsx  +*.rb  +*.gemspec  +*.rake  +*.php  +*.py  +*.pyc  +*.pyo  +*.pyd  +*.coffee  +*.mustache  +*.hbs  +*.conf  +*.ini  +*.yml  +*.yaml  +*.toml  +*.bat  +*.mk  +*.jpg  +*.jpeg  +*.bmp  +*.png  +*.webp  +*.gif  +*.ico  +*.twig  +*.cpp  +*.c++  +*.cxx  +*.cc  +*.cp  +*.c  +*.cs 󰌛 +*.h  +*.hh  +*.hpp  +*.hxx  +*.hs  +*.lhs  +*.nix  +*.lua  +*.java  +*.sh  +*.fish  +*.bash  +*.zsh  +*.ksh  +*.csh  +*.awk  +*.ps1  +*.ml λ +*.mli λ +*.diff  +*.db  +*.sql  +*.dump  +*.clj  +*.cljc  +*.cljs  +*.edn  +*.scala  +*.go  +*.dart  +*.xul  +*.sln  +*.suo  +*.pl  +*.pm  +*.t  +*.rss  +'*.f#'  +*.fsscript  +*.fsx  +*.fs  +*.fsi  +*.rs  +*.rlib  +*.d  +*.erl  +*.hrl  +*.ex  +*.exs  +*.eex  +*.leex  +*.heex  +*.vim  +*.ai  +*.psd  +*.psb  +*.ts  +*.tsx  +*.jl  +*.pp  +*.vue  +*.elm  +*.swift  +*.xcplayground  +*.tex 󰙩 +*.r 󰟔 +*.rproj 󰗆 +*.sol 󰡪 +*.pem  + +# file names (vim-devicons) (case-insensitive not supported in lf) +*gruntfile.coffee  +*gruntfile.js  +*gruntfile.ls  +*gulpfile.coffee  +*gulpfile.js  +*gulpfile.ls  +*mix.lock  +*dropbox  +*.ds_store  +*.gitconfig  +*.gitignore  +*.gitattributes  +*.gitlab-ci.yml  +*.bashrc  +*.zshrc  +*.zshenv  +*.zprofile  +*.vimrc  +*.gvimrc  +*_vimrc  +*_gvimrc  +*.bashprofile  +*favicon.ico  +*license  +*node_modules  +*react.jsx  +*procfile  +*dockerfile  +*docker-compose.yml  +*docker-compose.yaml  +*compose.yml  +*compose.yaml  +*rakefile  +*config.ru  +*gemfile  +*makefile  +*cmakelists.txt  +*robots.txt 󰚩 + +# file names (case-sensitive adaptations) +*Gruntfile.coffee  +*Gruntfile.js  +*Gruntfile.ls  +*Gulpfile.coffee  +*Gulpfile.js  +*Gulpfile.ls  +*Dropbox  +*.DS_Store  +*LICENSE  +*React.jsx  +*Procfile  +*Dockerfile  +*Docker-compose.yml  +*Docker-compose.yaml  +*Rakefile  +*Gemfile  +*Makefile  +*CMakeLists.txt  + +# file patterns (vim-devicons) (patterns not supported in lf) +# .*jquery.*\.js$  +# .*angular.*\.js$  +# .*backbone.*\.js$  +# .*require.*\.js$  +# .*materialize.*\.js$  +# .*materialize.*\.css$  +# .*mootools.*\.js$  +# .*vimrc.*  +# Vagrantfile$  + +# file patterns (file name adaptations) +*jquery.min.js  +*angular.min.js  +*backbone.min.js  +*require.min.js  +*materialize.min.js  +*materialize.min.css  +*mootools.min.js  +*vimrc  +Vagrantfile  + +# archives or compressed (extensions from dircolors defaults) +*.tar  +*.tgz  +*.arc  +*.arj  +*.taz  +*.lha  +*.lz4  +*.lzh  +*.lzma  +*.tlz  +*.txz  +*.tzo  +*.t7z  +*.zip  +*.z  +*.dz  +*.gz  +*.lrz  +*.lz  +*.lzo  +*.xz  +*.zst  +*.tzst  +*.bz2  +*.bz  +*.tbz  +*.tbz2  +*.tz  +*.deb  +*.rpm  +*.jar  +*.war  +*.ear  +*.sar  +*.rar  +*.alz  +*.ace  +*.zoo  +*.cpio  +*.7z  +*.rz  +*.cab  +*.wim  +*.swm  +*.dwm  +*.esd  + +# image formats (extensions from dircolors defaults) +*.jpg  +*.jpeg  +*.mjpg  +*.mjpeg  +*.gif  +*.bmp  +*.pbm  +*.pgm  +*.ppm  +*.tga  +*.xbm  +*.xpm  +*.tif  +*.tiff  +*.png  +*.svg  +*.svgz  +*.mng  +*.pcx  +*.mov  +*.mpg  +*.mpeg  +*.m2v  +*.mkv  +*.webm  +*.ogm  +*.mp4  +*.m4v  +*.mp4v  +*.vob  +*.qt  +*.nuv  +*.wmv  +*.asf  +*.rm  +*.rmvb  +*.flc  +*.avi  +*.fli  +*.flv  +*.gl  +*.dl  +*.xcf  +*.xwd  +*.yuv  +*.cgm  +*.emf  +*.ogv  +*.ogx  + +# audio formats (extensions from dircolors defaults) +*.aac  +*.au  +*.flac  +*.m4a  +*.mid  +*.midi  +*.mka  +*.mp3  +*.mpc  +*.ogg  +*.ra  +*.wav  +*.oga  +*.opus  +*.spx  +*.xspf  + +# other formats +*.pdf  diff --git a/.config/lf/lf_kitty_clean b/.config/lf/lf_kitty_clean new file mode 100755 index 0000000..16a2e66 --- /dev/null +++ b/.config/lf/lf_kitty_clean @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty diff --git a/.config/lf/lf_kitty_preview b/.config/lf/lf_kitty_preview new file mode 100755 index 0000000..1b7e805 --- /dev/null +++ b/.config/lf/lf_kitty_preview @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +file=$1 +w=$2 +h=$3 +x=$4 +y=$5 + +if [[ "$( file -Lb --mime-type "$file")" =~ ^image ]]; then + kitty +kitten icat --silent --stdin no --transfer-mode file --place "${w}x${h}@${x}x${y}" "$file" < /dev/null > /dev/tty + exit 1 +fi + +pistol "$file" diff --git a/.config/lf/lfrc b/.config/lf/lfrc new file mode 100644 index 0000000..c4087d6 --- /dev/null +++ b/.config/lf/lfrc @@ -0,0 +1,81 @@ +set shell sh +set shellopts '-eu' +set ifs "\n" +set cursorpreviewfmt "\033[7;2m" +map ` !true + + +cmd open &{{ + case $(file --mime-type -Lb $f) in + text/*) lf -remote "send $id \$nvim \$fx";; + *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;; + esac +}} + +# define a custom 'delete' command +cmd delete ${{ + set -f + printf "$fx\n" + printf "delete?[y/n]" + read ans + [ "$ans" = "y" ] && rm -rf $fx +}} + +cmd extract ${{ + set -f + case $f in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; + *.tar.gz|*.tgz) tar xzvf $f;; + *.tar.xz|*.txz) tar xJvf $f;; + *.zip) unzip $f;; + *.rar) unrar x $f;; + *.7z) 7z x $f;; + esac +}} + +# compress current file or selected files with tar and gunzip +cmd tar ${{ + set -f + mkdir $1 + cp -r $fx $1 + tar czf $1.tar.gz $1 + rm -rf $1 +}} + +# compress current file or selected files with zip +cmd zip ${{ + set -f + mkdir $1 + cp -r $fx $1 + zip -r $1.zip $1 + rm -rf $1 +}} + +# My Config + +set icons true +set ignorecase true +set previewer ~/.config/lf/lf_kitty_preview +set cleaner ~/.config/lf/lf_kitty_clean + +map d +map space + +map i up +map k down +map j updir +map l open + +map x cut +map dd delete +map v select + + +# Integrations +cmd on-cd &{{ + export STARSHIP_SHELL= + fmt="$(starship prompt)" + lf -remote "send $id set promptfmt \"$fmt\"" +}} + + diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..b3fe4e3 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1 @@ +require('config') diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..f1c7b10 --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,27 @@ +{ + "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "auto-session": { "branch": "main", "commit": "ee320d7a59c1dfe83df7c9d58150d9f194690d53" }, + "blink.cmp": { "branch": "main", "commit": "586ee87534f5bf65f1c8dea2d1da2a57e8cddd36" }, + "catppuccin": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" }, + "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, + "fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" }, + "flutter-tools.nvim": { "branch": "main", "commit": "65b7399804315a1160933b64292d3c5330aa4e9f" }, + "gitsigns.nvim": { "branch": "main", "commit": "93f882f7041a2e779addbd34943812ca66edef5a" }, + "harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" }, + "image.nvim": { "branch": "master", "commit": "c40215d7d7d1d8c823ee9a77be1a894d5c8df41b" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" }, + "markview.nvim": { "branch": "main", "commit": "ec33f2aa333ca1d76f51847922578434d7aeadf7" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "bb3a17efc797c34c054463174e5522442576ebd8" }, + "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, + "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, + "molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" }, + "nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" } +} diff --git a/.config/nvim/lua/config/autocmds.lua b/.config/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..770dd64 --- /dev/null +++ b/.config/nvim/lua/config/autocmds.lua @@ -0,0 +1,22 @@ +vim.api.nvim_create_autocmd('TextYankPost', { + desc = 'Highlight when yanking (copying) text', + group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), + callback = function() + vim.highlight.on_yank() + end, +}) + +vim.api.nvim_create_autocmd('User', { + pattern = 'MiniFilesActionRename', + callback = function(event) + require('snacks').rename.on_rename_file(event.data.from, event.data.to) + end, +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "man", + callback = function() + vim.keymap.del("n", "k", { buffer = true }) + vim.keymap.del("n", "j", { buffer = true }) + end, +}) diff --git a/.config/nvim/lua/config/init.lua b/.config/nvim/lua/config/init.lua new file mode 100644 index 0000000..90c347c --- /dev/null +++ b/.config/nvim/lua/config/init.lua @@ -0,0 +1,4 @@ +require('config.options') +require('config.plugins') +require('config.autocmds') +require('config.keymaps') diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..ea5bb49 --- /dev/null +++ b/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,217 @@ +-- INFO: General -- + +-- hjkl to ijkl remap +vim.keymap.set({ 'n', 'v', 'o' }, 'j', 'h', { desc = 'hjkl to ijkl' }) +vim.keymap.set({ 'n', 'v', 'o' }, 'h', 'i', { desc = 'hjkl to ijkl' }) +vim.keymap.set({ 'n', 'v', 'o' }, 'i', 'k', { desc = 'hjkl to ijkl' }) +vim.keymap.set({ 'n', 'v', 'o' }, 'k', 'j', { desc = 'hjkl to ijkl' }) + +-- indentation +vim.keymap.set('n', '', '>>', { desc = 'tab indent ' }) +vim.keymap.set('n', '', '<<', { desc = 'S-tab unindent ' }) +vim.keymap.set({ 'v', 'o' }, '', '>', { desc = 'tab indent ' }) +vim.keymap.set({ 'v', 'o' }, '', '<', { desc = 'S-tab unindent ' }) + +-- scrolling +vim.keymap.set({ 'n', 'v' }, '', 'zz', { desc = 'centered scroll' }) +vim.keymap.set({ 'n', 'v' }, '', 'zz', { desc = 'centered scroll' }) +vim.keymap.set({ 'n', 'v' }, '', 'zz', { desc = 'centered jump back' }) + +-- start of line +vim.keymap.set({ 'n', 'v', 'o' }, '#', '_', { desc = '# start of line' }) + +-- save / quit +vim.keymap.set('n', '', ':w', { desc = 'ctrl-s save' }) +vim.keymap.set('n', '', ':bd', { desc = 'save and close', nowait = true }) + +-- delete word in insert mode +vim.keymap.set('i', '', '', { desc = 'delete word in insert mode' }) + + + +-- INFO: Right Dock: Terminal & MiniOilFiles + +-- INFO: ctrl m +vim.keymap.set('n', '', 'Floaterminal', { desc = 'open terminal', nowait = true }) +vim.keymap.set('t', '', 'q', { desc = 'close terminal window' }) + +vim.keymap.set('t', '', 'Floaterminal next', { desc = 'next terminal' }) +vim.keymap.set('t', '', 'Floaterminal prev', { desc = 'prev terminal' }) + +-- vim.keymap.set('t', '', 'Floaterminal 1', { desc = 'terminal 1' }) +-- vim.keymap.set('t', '', 'Floaterminal 2', { desc = 'terminal 2' }) +-- vim.keymap.set('t', '', 'Floaterminal 3', { desc = 'terminal 3' }) +-- vim.keymap.set('t', '', 'Floaterminal 4', { desc = 'terminal 4' }) + +vim.keymap.set('t', '', '', { desc = 'kill terminal' }) + +vim.keymap.set('t', '', '', { desc = 'normal mode in terminal' }) + +vim.keymap.set('n', '', require('mini.files').open, { desc = 'open mini files' }) + + +-- INFO: Windows + +-- this is weird because ctrl-i => Up & ctrl-k => Down in Kitty conf +vim.keymap.set({ 'n', 'v', 'o' }, 'ki', ':wincmd k', { desc = 'move focus between windows', silent = true }) +vim.keymap.set({ 'n', 'v', 'o' }, 'kk', ':wincmd j', { desc = 'move focus between windows', silent = true }) +vim.keymap.set({ 'n', 'v', 'o' }, 'kl', ':wincmd l', { desc = 'move focus between windows', silent = true }) +vim.keymap.set({ 'n', 'v', 'o' }, 'kj', ':wincmd h', { desc = 'move focus between windows', silent = true }) + +-- INFO: Picker + +local Snacks = require('snacks') + +vim.keymap.set('n', 'sf', Snacks.picker.files , { desc = 'pick files' }) +vim.keymap.set('n', 'sw', Snacks.picker.grep, { desc = 'grep' }) +vim.keymap.set('n', 'sd', Snacks.picker.diagnostics_buffer, { desc = 'diagnostics' }) +vim.keymap.set('n', 'sD', Snacks.picker.diagnostics, { desc = 'workspace diagnostics' }) +vim.keymap.set('n', 'st', function() + Snacks.picker.todo_comments() +end, { desc = 'search todos' }) +vim.keymap.set('n', 'sh', Snacks.picker.help, { desc = 'help' }) + +vim.keymap.set('n', '/', function() + Snacks.picker.lines({ layout = 'select' }) +end, { desc = 'fuzzily search in current buffer' }) + +vim.keymap.set('n', 'sp', 'SessionSearch', { desc = 'search sessions' }) + + +-- INFO: LSP + +vim.keymap.set('n', 'L', vim.diagnostic.open_float, { desc = 'open floating diagnostic' }) + +-- This function gets run when an LSP attaches to a particular buffer. +-- That is to say, every time a new file is opened that is associated with +-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this +-- function will be executed to configure the current buffer +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), + callback = function(event) + + local map = function(keys, func, desc, mode) + mode = mode or 'n' + vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc, nowait = true }) + end + + -- Rename the variable under your cursor. + -- Most Language Servers support renaming across files, etc. + map('', function() + vim.api.nvim_exec_autocmds('User', { pattern = 'SnacksInputRename' }) + vim.lsp.buf.rename() + vim.api.nvim_create_autocmd('WinClosed', { + callback = function (args) + vim.api.nvim_exec_autocmds('User', { + pattern = 'SnacksInputReset' + }) + vim.api.nvim_del_autocmd(args.id) + end + }) + end, '[R]e[n]ame') + + -- Execute a code action, usually your cursor needs to be on top of an error + -- or a suggestion from your LSP for this to activate. + map('ga', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' }) + + -- Find references for the word under your cursor. + map('gr', Snacks.picker.lsp_references, '[G]oto [R]eferences') + + -- Jump to the implementation of the word under your cursor. + -- Useful when your language has ways of declaring types without an actual implementation. + map('gi', Snacks.picker.lsp_implementations, '[G]oto [I]mplementation') + + -- Jump to the definition of the word under your cursor. + -- This is where a variable was first declared, or where a function is defined, etc. + -- To jump back, press . + map('gd', Snacks.picker.lsp_definitions, '[G]oto [D]efinition') + + -- WARN: This is not Goto Definition, this is Goto Declaration. + -- For example, in C this would take you to the header. + map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + + -- Fuzzy find all the symbols in your current document. + -- Symbols are things like variables, functions, types, etc. + map('go', Snacks.picker.lsp_symbols, 'Open Document Symbols') + + -- Fuzzy find all the symbols in your current workspace. + -- Similar to document symbols, except searches over your entire project. + map('gO', Snacks.picker.lsp_workspace_symbols, 'Open Workspace Symbols') + + -- Jump to the type of the word under your cursor. + -- Useful when you're not sure what type a variable is and you want to see + -- the definition of its *type*, not where it was *defined*. + map('gt', Snacks.picker.lsp_type_definitions, '[G]oto [T]ype Definition') + + -- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10) + ---@param client vim.lsp.Client + ---@param method vim.lsp.protocol.Method + ---@param bufnr? integer some lsp support methods only in specific files + ---@return boolean + local function client_supports_method(client, method, bufnr) + if vim.fn.has 'nvim-0.11' == 1 then + return client:supports_method(method, bufnr) + else + return client.supports_method(method, { bufnr = bufnr }) + end + end + + -- The following two autocommands are used to highlight references of the + -- word under your cursor when your cursor rests there for a little while. + -- See `:help CursorHold` for information about when this is executed + -- + -- When you move your cursor, the highlights will be cleared (the second autocommand). + local client = vim.lsp.get_client_by_id(event.data.client_id) + if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then + local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) + vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { + buffer = event.buf, + group = highlight_augroup, + callback = vim.lsp.buf.document_highlight, + }) + + vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { + buffer = event.buf, + group = highlight_augroup, + callback = vim.lsp.buf.clear_references, + }) + + vim.api.nvim_create_autocmd('LspDetach', { + group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }), + callback = function(event2) + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf } + end, + }) + end + + -- The following code creates a keymap to toggle inlay hints in your + -- code, if the language server you are using supports them + -- + -- This may be unwanted, since they displace some of your code + if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then + map('ih', function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) + end, '[T]oggle Inlay [H]ints') + end + end, +}) + +-- INFO: Molten +vim.keymap.set('n', 'mi', ':MoltenInit', { silent = true, desc = 'Initialize the plugin' }) +vim.keymap.set('n', 'mo', ':MoltenEvaluateOperator', { silent = true, desc = 'run operator selection' }) +vim.keymap.set('n', 'ml', ':MoltenEvaluateLine', { silent = true, desc = 'evaluate line' }) +vim.keymap.set('v', 'mv', ':MoltenEvaluateVisualgv', { silent = false, desc = 'evaluate visual selection' }) +vim.keymap.set('n', 'mc', ':MoltenReevaluateCell', { silent = false, desc = 'reevaluate cell' }) +vim.keymap.set('n', 'me', ':noautocmd MoltenEnterOutput', { silent = true, desc = 'show/enter output' }) +vim.keymap.set('n', 'mh', ':MoltenHideOutput', { silent = true, desc = 'hide output' }) + + +-- INFO: Flutter +vim.keymap.set('n', 'fd', 'FlutterDevices', { desc = 'show flutter devices' }) +vim.keymap.set('n', 'fe', 'FlutterEmulators', { desc = 'show emulators' }) +vim.keymap.set('n', 'fs', 'FlutterRun', { desc = 'flutter run' }) +vim.keymap.set('n', 'fr', 'FlutterRestart', { desc = 'flutter restart' }) +vim.keymap.set('n', 'fq', 'FlutterQuit', { desc = 'stop flutter' }) +vim.keymap.set('n', 'fl', 'FlutterLogToggle', { desc = 'flutter log' }) +vim.keymap.set('n', 'fc', 'FlutterLogClear', { desc = 'clear log' }) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..25dc206 --- /dev/null +++ b/.config/nvim/lua/config/options.lua @@ -0,0 +1,52 @@ +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +vim.g.have_nerd_font = true + +vim.opt.number = true +vim.opt.relativenumber = true + +vim.opt.mouse = 'a' + +vim.opt.showmode = false + +vim.schedule(function() + vim.opt.clipboard = 'unnamedplus' +end) + +vim.opt.breakindent = true + +-- save undo history +vim.opt.undofile = true + +-- Case insensitve search normally +vim.opt.ignorecase = true +vim.opt.smartcase = true + +-- Configure how new splits should be opened +vim.opt.splitright = true +vim.opt.splitbelow = true + +-- highlight current cursor line +vim.opt.cursorline = true + +-- Minimal number of screen lines to keep above and below the cursor. +vim.opt.scrolloff = 10 + +-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`), +-- instead raise a dialog asking if you wish to save the current file(s) +-- See `:help 'confirm'` +vim.opt.confirm = true + +vim.opt.fillchars:append({ eob = ' ' }) + +vim.opt.tabstop = 4 +vim.opt.shiftwidth = 4 + +vim.opt.hlsearch = false +vim.opt.wrap = false + +vim.o.sessionoptions='blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions' +-- Example for configring Neovim to load user-installed installed Lua rocks: +package.path = package.path .. ';' .. vim.fn.expand('$HOME') .. '/.luarocks/share/lua/5.1/?/init.lua;' +package.path = package.path .. ';' .. vim.fn.expand('$HOME') .. '/.luarocks/share/lua/5.1/?.lua;' diff --git a/.config/nvim/lua/config/plugins/autosession.lua b/.config/nvim/lua/config/plugins/autosession.lua new file mode 100644 index 0000000..7c9d14e --- /dev/null +++ b/.config/nvim/lua/config/plugins/autosession.lua @@ -0,0 +1,38 @@ +return { + 'rmagatti/auto-session', + lazy = false, + + ---enables autocomplete for opts + ---@module 'auto-session' + ---@type AutoSession.Config + opts = { + suppressed_dirs = { '~/', '~/Downloads', '/' }, + pre_save_cmds = { + function() + local bufs = vim.api.nvim_list_bufs() + for _, buf in ipairs(bufs) do + if vim.bo[buf].buftype == 'terminal' then + vim.api.nvim_buf_delete(buf, { force = true, unload = false }) + end + end + end + }, + pre_restore_cmds = { + -- might not be necessary, but save current harpoon data when we're about to restore a session + function() require('harpoon'):sync() end, + }, + post_restore_cmds = { + function() + -- vim.notify('calling harpoon sync after restore') + local harpoon = require('harpoon') + local hdata = require('harpoon.data') + + -- this is the only way i found to force harpoon to reread data from the disk rather + -- than using what's in memory + require('harpoon').data = hdata.Data:new(harpoon.config) + end, + }, + } +} + + diff --git a/.config/nvim/lua/config/plugins/blinkcmp.lua b/.config/nvim/lua/config/plugins/blinkcmp.lua new file mode 100644 index 0000000..15a864f --- /dev/null +++ b/.config/nvim/lua/config/plugins/blinkcmp.lua @@ -0,0 +1,72 @@ +return { + 'saghen/blink.cmp', + event = 'VimEnter', + version = '1.*', + dependencies = { + { + 'L3MON4D3/LuaSnip', + version = '2.*', + build = (function() + if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then + return + end + return 'make install_jsregexp' + end)(), + dependencies = { + -- `friendly-snippets` contains a variety of premade snippets. + -- See the README about individual language/framework/plugin snippets: + -- https://github.com/rafamadriz/friendly-snippets + -- { + -- 'rafamadriz/friendly-snippets', + -- config = function() + -- require('luasnip.loaders.from_vscode').lazy_load() + -- end, + -- }, + }, + opts = {}, + }, + 'folke/lazydev.nvim', + }, + ---@module 'blink.cmp' + ---@type blink.cmp.Config + opts = { + keymap = { + preset = 'default', + + [''] = { 'select_and_accept', 'snippet_forward', 'fallback'}, + [''] = { 'snippet_backward', 'fallback'}, + ['I'] = { 'scroll_documentation_up', 'fallback' }, + ['K'] = { 'scroll_documentation_down', 'fallback' }, + + }, + + appearance = { nerd_font_variant = 'mono' }, + + completion = { + -- By default, you may press `` to show the documentation. + -- Optionally, set `auto_show = true` to show the documentation after a delay. + documentation = { auto_show = false, auto_show_delay_ms = 500 }, + }, + + sources = { + default = { 'lsp', 'path', 'snippets', 'lazydev' }, + providers = { + lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 }, + }, + }, + + snippets = { preset = 'luasnip' }, + + -- Blink.cmp includes an optional, recommended rust fuzzy matcher, + -- which automatically downloads a prebuilt binary when enabled. + -- + -- By default, we use the Lua implementation instead, but you may enable + -- the rust implementation via `'prefer_rust_with_warning'` + -- + -- See :h blink-cmp-config-fuzzy for more information + fuzzy = { implementation = 'lua' }, + + -- Shows a signature help window while you type arguments for a function + signature = { enabled = true }, + }, +} diff --git a/.config/nvim/lua/config/plugins/git.lua b/.config/nvim/lua/config/plugins/git.lua new file mode 100644 index 0000000..dbffb9e --- /dev/null +++ b/.config/nvim/lua/config/plugins/git.lua @@ -0,0 +1,154 @@ +return { + { + 'lewis6991/gitsigns.nvim', + opts = { + signs = { + add = { text = '┃' }, + change = { text = '┃' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '┆' }, + }, + signs_staged = { + add = { text = '┃' }, + change = { text = '┃' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '┆' }, + }, + signs_staged_enable = true, + signcolumn = true, + + on_attach = function() + local gitsigns = require('gitsigns') + + vim.keymap.set('n', 'gs', gitsigns.stage_hunk, { desc = 'stage hunk' }) + vim.keymap.set('n', 'gr', gitsigns.reset_hunk, { desc = 'restore hunk' }) + + vim.keymap.set('n', 'gS', gitsigns.stage_buffer, { desc = 'stage buffer' }) + vim.keymap.set('n', 'gR', gitsigns.stage_hunk, { desc = 'reset buffer' }) + + vim.keymap.set('n', 'gp', gitsigns.preview_hunk, { desc = 'preview hunk' }) + vim.keymap.set('n', 'gb', gitsigns.blame_line, { desc = 'blame line' }) + + + end + }, + }, + { + 'sindrets/diffview.nvim', + config = function () + local actions = require('diffview.config').actions + require('diffview').setup({ + keymaps = { + disable_defaults = true, + file_panel = { + ['i'] = '', + ['k'] = '', + ['j'] = false, + + [''] = function () actions.toggle_stage_entry() end + + } + } + }) + end + }, + -- { + -- 'NeogitOrg/neogit', + -- dependencies = { + -- 'nvim-lua/plenary.nvim', + -- 'nvim-telescope/telescope.nvim', + -- }, + -- config = function() + -- require('neogit').setup({ + -- + -- kind = 'floating', + -- graph_style = 'kitty', + -- disable_line_numbers = false, + -- disable_relative_line_numbers = false, + -- commit_editor = { + -- kind = 'floating', + -- }, + -- commit_select_view = { + -- kind = 'floating', + -- }, + -- commit_view = { + -- kind = 'floating', + -- verify_commit = vim.fn.executable('gpg') == 1, -- Can be set to true or false, otherwise we try to find the binary + -- }, + -- log_view = { + -- kind = 'floating', + -- }, + -- rebase_editor = { + -- kind = 'floating', + -- }, + -- reflog_view = { + -- kind = 'floating', + -- }, + -- merge_editor = { + -- kind = 'floating', + -- }, + -- description_editor = { + -- kind = 'floating', + -- }, + -- tag_editor = { + -- kind = 'floating', + -- }, + -- preview_buffer = { + -- kind = 'floating', + -- }, + -- popup = { + -- kind = 'floating', + -- }, + -- stash = { + -- kind = 'floating', + -- }, + -- refs_view = { + -- kind = 'floating', + -- }, + -- mappings = { + -- status = { + -- ['i'] = 'MoveUp', + -- ['k'] = 'MoveDown', + -- ['j'] = false, + -- }, + -- } + -- }) + -- vim.keymap.set('n', 'gg', 'Neogit', { desc = 'open neogit '}) + -- end + -- } + -- { + -- 'tpope/vim-fugitive', + -- } + -- { + -- 'sindrets/diffview.nvim', + -- dependencies = { 'nvim-tree/nvim-web-devicons' }, + -- -- lazy, only load diffview by these commands + -- cmd = { + -- 'DiffviewFileHistory', 'DiffviewOpen', 'DiffviewToggleFiles', 'DiffviewFocusFiles', 'DiffviewRefresh' + -- } + -- }, + -- { + -- 'SuperBo/fugit2.nvim', + -- build = false, + -- opts = { + -- width = 100, + -- }, + -- dependencies = { + -- 'MunifTanjim/nui.nvim', + -- 'nvim-tree/nvim-web-devicons', + -- 'nvim-lua/plenary.nvim', + -- -- { + -- -- 'chrisgrieser/nvim-tinygit', -- optional: for Github PR view + -- -- dependencies = { 'stevearc/dressing.nvim' } + -- -- }, + -- }, + -- cmd = { 'Fugit2', 'Fugit2Diff', 'Fugit2Graph' }, + -- keys = { + -- { 'F', mode = 'n', 'Fugit2' } + -- } + -- }, +} diff --git a/.config/nvim/lua/config/plugins/harpoon.lua b/.config/nvim/lua/config/plugins/harpoon.lua new file mode 100644 index 0000000..f163d98 --- /dev/null +++ b/.config/nvim/lua/config/plugins/harpoon.lua @@ -0,0 +1,29 @@ +return { + 'ThePrimeagen/harpoon', + branch = 'harpoon2', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + + local harpoon = require('harpoon') + harpoon:setup({ + settings = { + save_on_toggle = true, + sync_on_ui_close = true + } + }) + + + vim.keymap.set('n', 'a', function() harpoon:list():add() end) + vim.keymap.set('n', '', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) + + vim.keymap.set('n', '', function() harpoon:list():select(1) end) + vim.keymap.set('n', '', function() harpoon:list():select(2) end) + vim.keymap.set('n', '', function() harpoon:list():select(3) end) + vim.keymap.set('n', '', function() harpoon:list():select(4) end) + + -- -- Toggle previous & next buffers stored within Harpoon list + -- vim.keymap.set('n', '', function() harpoon:list():prev() end) + -- vim.keymap.set('n', '', function() harpoon:list():next() end) + + end +} diff --git a/.config/nvim/lua/config/plugins/init.lua b/.config/nvim/lua/config/plugins/init.lua new file mode 100644 index 0000000..292846c --- /dev/null +++ b/.config/nvim/lua/config/plugins/init.lua @@ -0,0 +1,40 @@ +-- [[ Install `lazy.nvim` plugin manager ]] +-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info +local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = 'https://github.com/folke/lazy.nvim.git' + local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } + if vim.v.shell_error ~= 0 then + error('Error cloning lazy.nvim:\n' .. out) + end +end ---@diagnostic disable-next-line: undefined-field +vim.opt.rtp:prepend(lazypath) + +-- local keymaps = require('config.pluginmaps') + +require('lazy').setup({ + -- INFO: General Editing -- + 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically + { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = {} }, + + -- { 'stevearc/dressing.nvim', opts = {}, }, + + -- 'ThePrimeagen/vim-be-good', + -- { 'vuciv/golf' }, + + require('config.plugins.git'), + require('config.plugins.ui'), + -- require('config.plugins.telescope'), + require('config.plugins.blinkcmp'), + require('config.plugins.languages.lsp'), + require('config.plugins.languages.treesitter'), + require('config.plugins.harpoon'), + require('config.plugins.autosession'), + require('config.plugins.snacks'), + require('config.plugins.mini'), + + require('config.plugins.languages.molten'), + require('config.plugins.languages.flutter'), + require('config.plugins.languages.markdown'), + +}) diff --git a/.config/nvim/lua/config/plugins/languages/flutter.lua b/.config/nvim/lua/config/plugins/languages/flutter.lua new file mode 100644 index 0000000..149d926 --- /dev/null +++ b/.config/nvim/lua/config/plugins/languages/flutter.lua @@ -0,0 +1,13 @@ +return { + 'nvim-flutter/flutter-tools.nvim', + lazy = false, + dependencies = { 'nvim-lua/plenary.nvim', }, + config = function() + require('flutter-tools').setup({ + fvm = true, + dev_log = { + open_cmd = 'FloutterLog', + } + }) + end, +} diff --git a/.config/nvim/lua/config/plugins/languages/lsp.lua b/.config/nvim/lua/config/plugins/languages/lsp.lua new file mode 100644 index 0000000..8672398 --- /dev/null +++ b/.config/nvim/lua/config/plugins/languages/lsp.lua @@ -0,0 +1,124 @@ +return { + { + -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins + -- used for completion, annotations and signatures of Neovim apis + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = '${3rd}/luv/library', words = { 'vim%.uv' } }, + }, + }, + }, + + { 'williamboman/mason.nvim', opts = {} }, + + { + 'neovim/nvim-lspconfig', + dependencies = { + 'williamboman/mason.nvim', + 'williamboman/mason-lspconfig.nvim', + + -- Useful status updates for LSP. + { 'j-hui/fidget.nvim', opts = {} }, + + 'saghen/blink.cmp', + }, + config = function() + + vim.diagnostic.config { + severity_sort = true, + float = { border = 'rounded', source = 'if_many' }, + underline = { severity = vim.diagnostic.severity.ERROR }, + signs = vim.g.have_nerd_font and { + text = { + [vim.diagnostic.severity.ERROR] = '󰅚 ', + [vim.diagnostic.severity.WARN] = '󰀪 ', + [vim.diagnostic.severity.INFO] = '󰋽 ', + }, + } or {}, + virtual_text = { + source = 'if_many', + spacing = 2, + format = function(diagnostic) + local diagnostic_message = { + [vim.diagnostic.severity.ERROR] = diagnostic.message, + [vim.diagnostic.severity.WARN] = diagnostic.message, + [vim.diagnostic.severity.INFO] = diagnostic.message, + [vim.diagnostic.severity.HINT] = diagnostic.message, + } + return diagnostic_message[diagnostic.severity] + end, + }, + } + + local capabilities = require('blink.cmp').get_lsp_capabilities() + local servers = { + bashls = {}, + + clangd = {}, + rust_analyzer = {}, + pyright = {}, + + emmet_language_server = {}, + html = { filetypes = { 'html', 'htmldjango' }, }, + cssls = {}, + vtsls = {}, + + prismals = {}, + + -- kotlin_lsp = {}, + + -- kotlin_language_server = { + -- init_options = { + -- storagePath = vim.fn.stdpath('cache') .. '/kotlin_language_server', -- Explicit storage path + -- }, + -- }, + + -- -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs + -- + -- Some languages (like typescript) have entire language plugins that can be useful: + -- https://github.com/pmizio/typescript-tools.nvim + -- + -- But for many setups, the LSP (`ts_ls`) will work just fine + -- ts_ls = {}, + -- + + lua_ls = { + -- cmd = { ... }, + -- filetypes = { ... }, + -- capabilities = {}, + settings = { + Lua = { + completion = { + callSnippet = 'Replace', + }, + -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings + -- diagnostics = { disable = { 'missing-fields' } }, + }, + }, + }, + } + + local ensure_installed = vim.tbl_keys(servers or {}) + + require('mason-lspconfig').setup { + ensure_installed = ensure_installed, + automatic_installation = false, + handlers = { + function(server_name) + local server = servers[server_name] or {} + -- This handles overriding only values explicitly passed + -- by the server configuration above. Useful when disabling + -- certain features of an LSP (for example, turning off formatting for ts_ls) + server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) + require('lspconfig')[server_name].setup(server) + end, + } + } + -- WARN: Temoraray workaround because of naming issue i.e. djlsp and django-template-server + require('lspconfig').djlsp.setup({}) + end + }, +} diff --git a/.config/nvim/lua/config/plugins/languages/markdown.lua b/.config/nvim/lua/config/plugins/languages/markdown.lua new file mode 100644 index 0000000..9b7cfab --- /dev/null +++ b/.config/nvim/lua/config/plugins/languages/markdown.lua @@ -0,0 +1,9 @@ +return { + "OXY2DEV/markview.nvim", + lazy = false, + opts = { + experimental = { + check_rtp_message = false + } + } +} diff --git a/.config/nvim/lua/config/plugins/languages/molten.lua b/.config/nvim/lua/config/plugins/languages/molten.lua new file mode 100644 index 0000000..e44324f --- /dev/null +++ b/.config/nvim/lua/config/plugins/languages/molten.lua @@ -0,0 +1,27 @@ +return { + { + '3rd/image.nvim', + version = '1.1.0', + build = false, -- so that it doesn't build the rock https://github.com/3rd/image.nvim/issues/91#issuecomment-2453430239 + opts = { + backend = 'kitty', -- whatever backend you would like to use + max_width = 100, + max_height = 20, + max_height_window_percentage = math.huge, + max_width_window_percentage = math.huge, + window_overlap_clear_enabled = true, -- toggles images when windows are overlapped + window_overlap_clear_ft_ignore = { 'cmp_menu', 'cmp_docs', '' }, + } + + }, + { + 'benlubas/molten-nvim', + version = '^1.0.0', -- use version <2.0.0 to avoid breaking changes + dependencies = { '3rd/image.nvim' }, + build = ':UpdateRemotePlugins', + init = function() + -- these are examples, not defaults. Please see the readme + vim.g.molten_image_provider = 'image.nvim' + end, + } +} diff --git a/.config/nvim/lua/config/plugins/languages/treesitter.lua b/.config/nvim/lua/config/plugins/languages/treesitter.lua new file mode 100644 index 0000000..e8534f7 --- /dev/null +++ b/.config/nvim/lua/config/plugins/languages/treesitter.lua @@ -0,0 +1,42 @@ +return { + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + main = 'nvim-treesitter.configs', -- Sets main module to use for opts + opts = { + ensure_installed = { + 'bash', + 'c', + 'cpp', + 'diff', + 'html', + 'css', + 'lua', + 'luadoc', + 'markdown', + 'markdown_inline', + 'query', + 'vim', + 'vimdoc', + 'rust', + 'python', + 'htmldjango', + 'r', + 'dart', + 'javascript', + 'typescript', + 'tsx', + 'prisma', + 'regex', + 'kotlin' + }, + auto_install = false, + highlight = { enable = true, }, + indent = { enable = true }, + }, + -- There are additional nvim-treesitter modules that you can use to interact + -- with nvim-treesitter. You should go explore a few and see what interests you: + -- + -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` + -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context + -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects +} diff --git a/.config/nvim/lua/config/plugins/mini.lua b/.config/nvim/lua/config/plugins/mini.lua new file mode 100644 index 0000000..363370c --- /dev/null +++ b/.config/nvim/lua/config/plugins/mini.lua @@ -0,0 +1,34 @@ +return { + 'echasnovski/mini.nvim', + version = '*' , + config = function() + require('mini.pairs').setup({}) + require('mini.ai').setup({ + mappings = { + around = 'a', + inside = 'h', + + around_next = 'an', + inside_next = 'hn', + around_last = 'al', + inside_last = 'hl', + + goto_left = 'g[', + goto_right = 'g]', + }, + silent = true, + }) + require('mini.surround').setup({ + silent = true, + }) + require('mini.files').setup({ + mappings = { + go_in = 'l', + go_out = 'j', + go_in_plus = 'L', + go_out_plus = 'J', + synchronize = '' + } + }) + end +} diff --git a/.config/nvim/lua/config/plugins/snacks.lua b/.config/nvim/lua/config/plugins/snacks.lua new file mode 100644 index 0000000..aac696f --- /dev/null +++ b/.config/nvim/lua/config/plugins/snacks.lua @@ -0,0 +1,135 @@ +return { + 'folke/snacks.nvim', + priority = 1000, + lazy = false, + + init = function() + local Snacks = require('snacks') + vim.api.nvim_create_autocmd('User', { + pattern = 'SnacksInputRename', + callback = function () + Snacks.config.input.win.relative = 'cursor' + Snacks.config.input.win.col = -1 + Snacks.config.input.win.row = -3 + Snacks.config.input.win.title_pos = 'left' + end + }) + vim.api.nvim_create_autocmd('User', { + pattern = 'SnacksInputReset', + callback = function () + Snacks.config.input.win.relative = 'editor' + Snacks.config.input.win.col = nil + Snacks.config.input.win.row = 6 + Snacks.config.input.win.title_pos = 'center' + end + }) + end, + + + ---@type snacks.Config + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + bigfile = { enabled = true }, + dashboard = { + enabled = true, + preset = { + header = [[ + ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ + ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ + ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ + ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ + ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ + ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝]], + }, + sections = { + { section = 'header' }, + { section = 'startup' }, + } + }, + + indent = { + enabled = true, + animate = { enabled = false }, + }, + input = { + enabled = true, + win = {}, + }, + quickfile = { enabled = true }, + rename = { enabled = true }, + + picker = { + enabled = true, + matcher = { frecency = true, }, + layout = { + cycle = true, + preset = 'telescope', + }, + ui_select = true, + win = { + input = { + keys = { + [''] = { 'close', mode = 'i' }, + [''] = { 'edit_split', mode = 'i' }, + [''] = { 'edit_vsplit', mode = 'i' }, + [''] = { 'preview_scroll_down', mode = 'i' }, + [''] = { 'preview_scroll_up', mode = 'i' }, + + [''] = { 'toggle_hidden', mode = 'i' }, + [''] = { 'toggle_ignored', mode = 'i' }, + } + } + }, + + layouts = { + telescope = { + reverse = true, + layout = { + box = 'horizontal', + backdrop = false, + width = 0.8, + height = 0.9, + border = 'none', + { + box = 'vertical', + { win = 'list', title = ' Results ', title_pos = 'center', border = 'rounded' }, + { win = 'input', height = 1, border = 'rounded', title = '{title} {live} {flags}', title_pos = 'center' }, + }, + { + win = 'preview', + title = '{preview:Preview}', + width = 0.55, + border = 'rounded', + title_pos = 'center', + }, + } + } + } + }, + + bufdelete = { enabled = false }, + debug = { enabled = false }, + dim = { enabled = false }, + explorer = { enabled = false }, + git = { enabled = false }, + gitbrowse = { enabled = false }, + image = { enabled = false }, + layout = { enabled = false }, + lazygit = { enabled = false }, + notifier = { enabled = false }, + notify = { enabled = false }, + profiler = { enabled = false }, + scope = { enabled = false }, + scratch = { enabled = false }, + scroll = { enabled = false }, + statuscolumn = { enabled = false }, + terminal = { enabled = false }, + toggle = { enabled = false }, + win = { enabled = false }, + words = { enabled = false }, + zed = { enabled = false }, + }, + +} diff --git a/.config/nvim/lua/config/plugins/ui.lua b/.config/nvim/lua/config/plugins/ui.lua new file mode 100644 index 0000000..d9fe4b7 --- /dev/null +++ b/.config/nvim/lua/config/plugins/ui.lua @@ -0,0 +1,20 @@ +return { + { + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + opts = {} + }, + + { + 'catppuccin/nvim', + name = 'catppuccin', + priority = 1000, + opts = { + flavour = 'mocha', + no_italic = true, + }, + config = function() + vim.cmd('colorscheme catppuccin') + end + } +} diff --git a/.config/nvim/old.lua b/.config/nvim/old.lua new file mode 100644 index 0000000..7ea1277 --- /dev/null +++ b/.config/nvim/old.lua @@ -0,0 +1,777 @@ +--[[ + +===================================================================== +==================== READ THIS BEFORE CONTINUING ==================== +===================================================================== + +Kickstart.nvim is *not* a distribution. + +Kickstart.nvim is a template for your own configuration. + The goal is that you can read every line of code, top-to-bottom, understand + what your configuration is doing, and modify it to suit your needs. + + Once you've done that, you should start exploring, configuring and tinkering to + explore Neovim! + + If you don't know anything about Lua, I recommend taking some time to read through + a guide. One possible example: + - https://learnxinyminutes.com/docs/lua/ + + + And then you can explore or search through `:help lua-guide` + - https://neovim.io/doc/user/lua-guide.html + + +Kickstart Guide: + +I have left several `:help X` comments throughout the init.lua +You should run that command and read that help section for more information. + +In addition, I have some `NOTE:` items throughout the file. +These are for you, the reader to help understand what is happening. Feel free to delete +them once you know what you're doing, but they should serve as a guide for when you +are first encountering a few different constructs in your nvim config. + +I hope you enjoy your Neovim journey, +- TJ + +P.S. You can delete this when you're done too. It's your config now :) +--]] + +-- Set as the leader key +-- See `:help mapleader` +-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +-- [[ Install `lazy.nvim` plugin manager ]] +-- https://github.com/folke/lazy.nvim +-- `:help lazy.nvim.txt` for more info +local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' +if not vim.loop.fs_stat(lazypath) then + vim.fn.system { + 'git', + 'clone', + '--filter=blob:none', + 'https://github.com/folke/lazy.nvim.git', + '--branch=stable', -- latest stable release + lazypath, + } +end +vim.opt.rtp:prepend(lazypath) + +-- [[ Configure plugins ]] +-- NOTE: Here is where you install your plugins. +-- You can configure plugins using the `config` key. +-- +-- You can also configure plugins after the setup call, +-- as they will be available in your neovim runtime. +require('lazy').setup({ + -- NOTE: First, some plugins that don't require any configuration + + -- Git related plugins + 'tpope/vim-fugitive', + 'tpope/vim-rhubarb', + + -- Detect tabstop and shiftwidth automatically + 'tpope/vim-sleuth', + + -- NOTE: This is where your plugins related to LSP can be installed. + -- The configuration is done below. Search for lspconfig to find it below. + { + -- LSP Configuration & Plugins + 'neovim/nvim-lspconfig', + dependencies = { + -- Automatically install LSPs to stdpath for neovim + 'williamboman/mason.nvim', + 'williamboman/mason-lspconfig.nvim', + + -- Useful status updates for LSP + -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` + { 'j-hui/fidget.nvim', opts = {} }, + + -- Additional lua configuration, makes nvim stuff amazing! + 'folke/neodev.nvim', + }, + }, + + { + -- Autocompletion + 'hrsh7th/nvim-cmp', + dependencies = { + -- Snippet Engine & its associated nvim-cmp source + 'L3MON4D3/LuaSnip', + 'saadparwaiz1/cmp_luasnip', + + -- Adds LSP completion capabilities + 'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-path', + + -- Adds a number of user-friendly snippets + 'rafamadriz/friendly-snippets', + }, + }, + + -- Useful plugin to show you pending keybinds. + -- { 'folke/which-key.nvim', opts = {} }, + + { + -- Adds git related signs to the gutter, as well as utilities for managing changes + 'lewis6991/gitsigns.nvim', + opts = { + -- See `:help gitsigns.txt` + signs = { + add = { text = '+' }, + change = { text = '~' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + }, + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map({ 'n', 'v' }, ']c', function() + if vim.wo.diff then + return ']c' + end + vim.schedule(function() + gs.next_hunk() + end) + return '' + end, { expr = true, desc = 'Jump to next hunk' }) + + map({ 'n', 'v' }, '[c', function() + if vim.wo.diff then + return '[c' + end + vim.schedule(function() + gs.prev_hunk() + end) + return '' + end, { expr = true, desc = 'Jump to previous hunk' }) + + -- Actions + -- visual mode + map('v', 'hs', function() + gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'stage git hunk' }) + map('v', 'hr', function() + gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'reset git hunk' }) + -- normal mode + map('n', 'hs', gs.stage_hunk, { desc = 'git stage hunk' }) + map('n', 'hr', gs.reset_hunk, { desc = 'git reset hunk' }) + map('n', 'hS', gs.stage_buffer, { desc = 'git Stage buffer' }) + map('n', 'hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' }) + map('n', 'hR', gs.reset_buffer, { desc = 'git Reset buffer' }) + map('n', 'hp', gs.preview_hunk, { desc = 'preview git hunk' }) + map('n', 'hb', function() + gs.blame_line { full = false } + end, { desc = 'git blame line' }) + map('n', 'hd', gs.diffthis, { desc = 'git diff against index' }) + map('n', 'hD', function() + gs.diffthis '~' + end, { desc = 'git diff against last commit' }) + + -- Toggles + map('n', 'tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' }) + map('n', 'td', gs.toggle_deleted, { desc = 'toggle git show deleted' }) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', { desc = 'select git hunk' }) + end, + }, + }, + { + 'Mofiqul/vscode.nvim', + priority = 1000, + config = function() + vim.cmd.colorscheme 'vscode' + end, + }, + -- auto bracket closing + { + 'm4xshen/autoclose.nvim', + }, + -- { + -- -- Theme inspired by Atom + -- 'navarasu/onedark.nvim', + -- priority = 100, + -- config = function() + -- vim.cmd.colorscheme 'onedark' + -- end, + -- }, + + { + -- Set lualine as statusline + 'nvim-lualine/lualine.nvim', + -- See `:help lualine.txt` + opts = { + options = { + icons_enabled = false, + theme = 'onedark', + component_separators = '|', + section_separators = '', + }, + }, + }, + + { + -- Add indentation guides even on blank lines + 'lukas-reineke/indent-blankline.nvim', + -- Enable `lukas-reineke/indent-blankline.nvim` + -- See `:help ibl` + main = 'ibl', + opts = {}, + }, + + -- "gc" to comment visual regions/lines + { 'numToStr/Comment.nvim', opts = {} }, + + -- Fuzzy Finder (files, lsp, etc) + { + 'nvim-telescope/telescope.nvim', + branch = '0.1.x', + dependencies = { + 'nvim-lua/plenary.nvim', + -- Fuzzy Finder Algorithm which requires local dependencies to be built. + -- Only load if `make` is available. Make sure you have the system + -- requirements installed. + { + 'nvim-telescope/telescope-fzf-native.nvim', + -- NOTE: If you are having trouble with this installation, + -- refer to the README for telescope-fzf-native for more instructions. + build = 'make', + cond = function() + return vim.fn.executable 'make' == 1 + end, + }, + }, + }, + + { + -- Highlight, edit, and navigate code + 'nvim-treesitter/nvim-treesitter', + dependencies = { + 'nvim-treesitter/nvim-treesitter-textobjects', + }, + build = ':TSUpdate', + }, + + -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart + -- These are some example plugins that I've included in the kickstart repository. + -- Uncomment any of the lines below to enable them. + -- require 'kickstart.plugins.autoformat', + -- require 'kickstart.plugins.debug', + + -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` + -- You can use this folder to prevent any conflicts with this init.lua if you're interested in keeping + -- up-to-date with whatever is in the kickstart repo. + -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. + -- + -- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins + -- { import = 'custom.plugins' }, +}, {}) + +-- [[ Setting options ]] +-- See `:help vim.o` +-- NOTE: You can change these options as you wish! + +-- Set highlight on search +vim.o.hlsearch = false + +-- Make line numbers default +vim.wo.number = true + +-- Enable mouse mode +vim.o.mouse = 'a' + +-- Sync clipboard between OS and Neovim. +-- Remove this option if you want your OS clipboard to remain independent. +-- See `:help 'clipboard'` +vim.o.clipboard = 'unnamedplus' + +-- Enable break indent +vim.o.breakindent = true + +--tabwitdh +vim.o.tabstop = 4 +vim.o.shiftwidth = 4 + +-- relative line numbers +vim.o.relativenumber = true + +-- Save undo history +vim.o.undofile = true + +-- Case-insensitive searching UNLESS \C or capital in search +vim.o.ignorecase = true +vim.o.smartcase = true + +-- Keep signcolumn on by default +vim.wo.signcolumn = 'yes' + +-- Decrease update time +vim.o.updatetime = 250 +vim.o.timeoutlen = 300 + +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,noselect' + +-- NOTE: You should make sure your terminal supports this +vim.o.termguicolors = true + +-- [[ Basic Keymaps ]] + +-- Keymaps for better default experience +-- See `:help vim.keymap.set()` +vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) + +-- Remap for dealing with word wrap +vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) + +-- Diagnostic keymaps +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) +vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) + + + +-- [[ Highlight on yank ]] +-- See `:help vim.highlight.on_yank()` +local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) +vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = '*', +}) + +-- configure autoclose +require("autoclose").setup({ + keys = { + ["("] = { escape = false, close = true, pair = "()" }, + ["["] = { escape = false, close = true, pair = "[]" }, + ["{"] = { escape = false, close = true, pair = "{}" }, + + [">"] = { escape = true, close = false, pair = "<>" }, + [")"] = { escape = true, close = false, pair = "()" }, + ["]"] = { escape = true, close = false, pair = "[]" }, + ["}"] = { escape = true, close = false, pair = "{}" }, + + ['"'] = { escape = true, close = true, pair = '""' }, + ["'"] = { escape = true, close = true, pair = "''" }, + ["`"] = { escape = true, close = true, pair = "``" }, + }, + options = { + disabled_filetypes = { "text" }, + disable_when_touch = true, + touch_regex = "[%w(%[{]", + pair_spaces = false, + auto_indent = true, + disable_command_mode = false, + }, +}) + +-- [[ Configure Telescope ]] +-- See `:help telescope` and `:help telescope.setup()` +require('telescope').setup { + defaults = { + mappings = { + i = { + [''] = false, + [''] = false, + }, + }, + }, +} + +-- Enable telescope fzf native, if installed +pcall(require('telescope').load_extension, 'fzf') + +-- Telescope live_grep in git root +-- Function to find the git root directory based on the current buffer's path +local function find_git_root() + -- Use the current buffer's path as the starting point for the git search + local current_file = vim.api.nvim_buf_get_name(0) + local current_dir + local cwd = vim.fn.getcwd() + -- If the buffer is not associated with a file, return nil + if current_file == '' then + current_dir = cwd + else + -- Extract the directory from the current file's path + current_dir = vim.fn.fnamemodify(current_file, ':h') + end + + -- Find the Git root directory from the current file's path + local git_root = vim.fn.systemlist('git -C ' .. vim.fn.escape(current_dir, ' ') .. ' rev-parse --show-toplevel')[1] + if vim.v.shell_error ~= 0 then + print 'Not a git repository. Searching on current working directory' + return cwd + end + return git_root +end + +-- Custom live_grep function to search in git root +local function live_grep_git_root() + local git_root = find_git_root() + if git_root then + require('telescope.builtin').live_grep { + search_dirs = { git_root }, + } + end +end + +vim.api.nvim_create_user_command('LiveGrepGitRoot', live_grep_git_root, {}) + +-- See `:help telescope.builtin` +vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) +vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) +vim.keymap.set('n', '/', function() + -- You can pass additional configuration to telescope to change theme, layout, etc. + require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) +end, { desc = '[/] Fuzzily search in current buffer' }) + +local function telescope_live_grep_open_files() + require('telescope.builtin').live_grep { + grep_open_files = true, + prompt_title = 'Live Grep in Open Files', + } +end +vim.keymap.set('n', 's/', telescope_live_grep_open_files, { desc = '[S]earch [/] in Open Files' }) +vim.keymap.set('n', 'ss', require('telescope.builtin').builtin, { desc = '[S]earch [S]elect Telescope' }) +vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) +vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) +vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) +vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) +vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) +vim.keymap.set('n', 'sG', ':LiveGrepGitRoot', { desc = '[S]earch by [G]rep on Git Root' }) +vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) +vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) + +-- [[ Configure Treesitter ]] +-- See `:help nvim-treesitter` +-- Defer Treesitter setup after first render to improve startup time of 'nvim {filename}' +vim.defer_fn(function() + require('nvim-treesitter.configs').setup { + -- Add languages to be installed here that you want installed for treesitter + ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' }, + + -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) + auto_install = false, + + highlight = { enable = true }, + indent = { enable = true }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = '', + node_incremental = '', + scope_incremental = '', + node_decremental = '', + }, + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ['aa'] = '@parameter.outer', + ['ia'] = '@parameter.inner', + ['af'] = '@function.outer', + ['if'] = '@function.inner', + ['ac'] = '@class.outer', + ['ic'] = '@class.inner', + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + [']m'] = '@function.outer', + [']]'] = '@class.outer', + }, + goto_next_end = { + [']M'] = '@function.outer', + [']['] = '@class.outer', + }, + goto_previous_start = { + ['[m'] = '@function.outer', + ['[['] = '@class.outer', + }, + goto_previous_end = { + ['[M'] = '@function.outer', + ['[]'] = '@class.outer', + }, + }, + swap = { + enable = true, + swap_next = { + ['a'] = '@parameter.inner', + }, + swap_previous = { + ['A'] = '@parameter.inner', + }, + }, + }, + } +end, 0) + +-- [[ Configure LSP ]] +-- This function gets run when an LSP connects to a particular buffer. +local on_attach = function(_, bufnr) + -- NOTE: Remember that lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself + -- many times. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end + + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end + + nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') + + nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') + nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') + nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') + nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + nmap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, '[W]orkspace [L]ist Folders') + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) +end + +-- document existing key chains +-- require('which-key').register { +-- ['c'] = { name = '[C]ode', _ = 'which_key_ignore' }, +-- ['d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, +-- ['g'] = { name = '[G]it', _ = 'which_key_ignore' }, +-- ['h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' }, +-- ['r'] = { name = '[R]ename', _ = 'which_key_ignore' }, +-- ['s'] = { name = '[S]earch', _ = 'which_key_ignore' }, +-- ['t'] = { name = '[T]oggle', _ = 'which_key_ignore' }, +-- ['w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, +-- } +-- -- register which-key VISUAL mode +-- -- required for visual hs (hunk stage) to work +-- require('which-key').register({ +-- [''] = { name = 'VISUAL ' }, +-- ['h'] = { 'Git [H]unk' }, +-- }, { mode = 'v' }) + + +-- mason-lspconfig requires that these setup functions are called in this order +-- before setting up the servers. +require('mason').setup() +require('mason-lspconfig').setup() + +-- Enable the following language servers +-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. +-- +-- Add any additional override configuration in the following tables. They will be passed to +-- the `settings` field of the server config. You must look up that documentation yourself. +-- +-- If you want to override the default filetypes that your language server will attach to you can +-- define the property 'filetypes' to the map in question. +local servers = { + -- clangd = {}, + -- gopls = {}, + -- pyright = {}, + -- rust_analyzer = {}, + -- tsserver = {}, + -- html = { filetypes = { 'html', 'twig', 'hbs'} }, + + lua_ls = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + -- NOTE: toggle below to ignore Lua_LS's noisy `missing-fields` warnings + -- diagnostics = { disable = { 'missing-fields' } }, + }, + }, +} + +-- Setup neovim lua configuration +require('neodev').setup() + +-- nvim-cmp supports additional completion capabilities, so broadcast that to servers +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) + +-- Ensure the servers above are installed +local mason_lspconfig = require 'mason-lspconfig' + +mason_lspconfig.setup { + ensure_installed = vim.tbl_keys(servers), +} + +mason_lspconfig.setup_handlers { + function(server_name) + require('lspconfig')[server_name].setup { + capabilities = capabilities, + on_attach = on_attach, + settings = servers[server_name], + filetypes = (servers[server_name] or {}).filetypes, + } + end, +} + + +local nvim_lsp = require('lspconfig') + +-- Configure JDTLS with completion disabled +nvim_lsp.jdtls.setup { + capabilities = { + textDocument = { + completion = { + completionItem = { + snippetSupport = false, + } + } + } + } +} +-- My Keymaps +vim.opt.clipboard = 'unnamedplus' + + +-- HJKL Remap +-- normal mode +vim.api.nvim_set_keymap('n', 'i', 'k', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('n', 'k', 'j', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('n', 'j', 'h', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('n', 'h', 'i', { noremap = true, silent = true}) +-- visual mode +vim.api.nvim_set_keymap('v', 'i', 'k', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('v', 'k', 'j', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('v', 'j', 'h', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('v', 'h', 'i', { noremap = true, silent = true}) +-- operator pending mode +vim.api.nvim_set_keymap('o', 'i', 'k', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('o', 'k', 'j', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('o', 'j', 'h', { noremap = true, silent = true}) +vim.api.nvim_set_keymap('o', 'h', 'i', { noremap = true, silent = true}) + +-- vim.api.nvim_set_keymap('i', '', '', { noremap = true, silent = true}) +-- Goto start of line +vim.api.nvim_set_keymap('n', '#', '_', { noremap = true, silent = true}) + +-- Switch buffers +vim.api.nvim_set_keymap('n', '', ':bnext', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', ':bprev', { noremap = true, silent = true }) + +-- [[ Configure nvim-cmp ]] +-- See `:help cmp` +local cmp = require 'cmp' +local luasnip = require 'luasnip' +require('luasnip.loaders.from_vscode').lazy_load() + +-- Custom function to handle Esc key in insert mode +function close_completion_or_escape() + if cmp.visible() then + cmp.close() + else + return vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n", true) + end +end + +-- Map in insert mode to call the custom function +vim.api.nvim_set_keymap('i', '', 'lua close_completion_or_escape()', { noremap = true, expr = false, silent = true }) + +luasnip.config.setup {} + +luasnip.config.set_config({ + region_check_events = 'InsertEnter', + delete_check_events = 'InsertLeave' +}) + +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + completion = { + completeopt = 'menu,menuone,noinsert', + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.confirm { select = true } + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + -- if cmp.visible() then + -- cmp.select_next_item() + -- elseif luasnip.expand_or_locally_jumpable() then + -- luasnip.expand_or_jump() + -- else + -- fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + { name = 'path' }, + }, +} + + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et diff --git a/.config/nvim/plugin/floater.lua b/.config/nvim/plugin/floater.lua new file mode 100644 index 0000000..cadd36f --- /dev/null +++ b/.config/nvim/plugin/floater.lua @@ -0,0 +1,142 @@ +---Opens a floating windo +---@param buf? integer buffer-ID of buffer to put in thw window +---@param w_percent? decimal width of floating window will be this * full width +---@param h_percent? decimal height of floating window will be this * full height +---@param opts any options to pass to nvim_open_win +local function open_floating_win(buf, w_percent, h_percent, opts) + buf = buf or vim.api.nvim_create_buf(true, false) + w_percent = w_percent or 0.8 + h_percent = h_percent or 0.8 + local default_opts = { + relative = 'editor', + row = (vim.o.lines - vim.o.lines * h_percent)/2, + col = (vim.o.columns - vim.o.columns * w_percent)/2, + width = math.floor(vim.o.columns * w_percent), + height = math.floor(vim.o.lines * h_percent), + style = 'minimal', + border = 'rounded' + } + opts = vim.tbl_deep_extend('force', default_opts, opts or {}) + vim.api.nvim_open_win(buf, true, opts) +end + +---@class TermState +---@field bufs integer[] +---@field last_used integer[] +---@field curr_buf_index integer +---@field win integer +local term_state = { + bufs = { -1, -1, -1, -1 }, + last_used = { 1, 2, 3, 4 }, + curr_buf_index = 1, + win = -1, +} + +vim.api.nvim_create_user_command('Floaterminal', function(args_table) + + local is_new = false + if args_table.args ~= '' then + + local operation = args_table.args + + if operation == 'next' then + term_state.curr_buf_index = term_state.curr_buf_index + 1 + if term_state.curr_buf_index > 4 then + term_state.curr_buf_index = 1 + end + elseif operation == 'prev' then + term_state.curr_buf_index = term_state.curr_buf_index - 1 + if term_state.curr_buf_index < 1 then + term_state.curr_buf_index = 4 + end + else + error('invalid argument, use next or prev') + end + + if not vim.api.nvim_buf_is_valid(term_state.bufs[term_state.curr_buf_index]) then + term_state.bufs[term_state.curr_buf_index] = vim.api.nvim_create_buf(true, false) + is_new = true + end + + for index, value in ipairs(term_state.last_used) do + if value == term_state.curr_buf_index then + table.remove(term_state.last_used, index) + break + end + end + table.insert(term_state.last_used, 1, term_state.curr_buf_index) + + vim.api.nvim_set_current_buf(term_state.bufs[term_state.curr_buf_index]) + + else + + for _ = 1, 4 do + if not vim.api.nvim_buf_is_valid(term_state.bufs[term_state.last_used[1]]) then + local invalid_buf_index = table.remove(term_state.last_used, 1) + table.insert(term_state.last_used, 4, invalid_buf_index) + end + end + + if not vim.api.nvim_buf_is_valid(term_state.bufs[term_state.last_used[1]]) then + term_state.bufs[term_state.last_used[1]] = vim.api.nvim_create_buf(true, false) + is_new = true + end + + open_floating_win(term_state.bufs[term_state.last_used[1]]) + + term_state.win = vim.api.nvim_get_current_win() + + end + + if is_new then + vim.cmd.term() + end + if vim.api.nvim_get_mode().mode == 'nt' then + vim.api.nvim_feedkeys('a', 'n', true) + end + +end, { nargs = '?', desc = 'open the floaterminaaal' }) + + +-- local oil_buf = -1 +-- +-- vim.api.nvim_create_user_command('Floateroil', function() +-- local is_new = false +-- if not vim.api.nvim_buf_is_valid(oil_buf) then +-- oil_buf = vim.api.nvim_create_buf(true, false) +-- is_new = true +-- end +-- +-- open_floating_win(oil_buf) +-- if is_new then +-- vim.cmd('Oil') +-- end +-- +-- end, { desc = 'open the floateroil' }) + + +local dev_log_buf = -1 +vim.api.nvim_create_user_command('FloutterLog', function (args) + local name = args.args + if not vim.api.nvim_buf_is_valid(dev_log_buf) then + dev_log_buf = vim.api.nvim_create_buf(true, false) + vim.api.nvim_buf_set_name(dev_log_buf, name) + end + vim.keymap.set('n', '', 'q', { desc = 'close dev log', buffer = dev_log_buf }) + open_floating_win(dev_log_buf) + + -- AutoScroll Logic + local lines = vim.api.nvim_buf_line_count(dev_log_buf) + local cursor = vim.api.nvim_win_get_cursor(0)[1] + vim.api.nvim_create_autocmd('TextChanged', { + buffer = dev_log_buf, + callback = function () + cursor = vim.api.nvim_win_get_cursor(0)[1] + if cursor == lines then + vim.cmd('normal! G') + end + lines = vim.api.nvim_buf_line_count(dev_log_buf) + end + }) +end, { desc = 'flutter dev log floating', nargs = 1 }) + diff --git a/.config/rofi/color.rasi b/.config/rofi/color.rasi new file mode 100644 index 0000000..235ce0a --- /dev/null +++ b/.config/rofi/color.rasi @@ -0,0 +1,166 @@ +* { + //active-background: {color2}; + active-foreground: @foreground; + normal-background: @background; + normal-foreground: @foreground; + //urgent-background: {color1}; + urgent-foreground: @foreground; + + alternate-active-background: @background; + alternate-active-foreground: @foreground; + alternate-normal-background: @background; + alternate-normal-foreground: @foreground; + alternate-urgent-background: @background; + alternate-urgent-foreground: @foreground; + + //selected-active-background: {color1}; + selected-active-foreground: @foreground; + //selected-normal-background: {color2}; + selected-normal-foreground: @foreground; + //selected-urgent-background: {color3}; + selected-urgent-foreground: @foreground; + + background-color: @background; + background: rgba(0,0,0,0.7); + //foreground: {foreground}; + border-color: @background; + spacing: 2; +} + +#window { + background-color: @background; + border: 0; + padding: 2.5ch; +} + +#mainbox { + border: 0; + padding: 0; +} + +#message { + border: 2px 0px 0px; + border-color: @border-color; + padding: 1px; +} + +#textbox { + text-color: @foreground; +} + +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} + +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em; + text-color: @normal-foreground; +} + +#listview { + fixed-height: 0; + border: 2px 0px 0px; + border-color: @border-color; + spacing: 2px; + scrollbar: true; + padding: 2px 0px 0px; +} + +#element { + border: 0; + padding: 1px; +} + +#element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +#element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +#element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +#element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} + +#element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +#element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} + +#element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} + +#element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} + +#element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} + +#element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} + +#scrollbar { + width: 4px; + border: 0; + handle-width: 8px; + padding: 0; +} + +#sidebar { + border: 2px 0px 0px; + border-color: @border-color; +} + +#button { + text-color: @normal-foreground; +} + +#button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +#inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px; +} + +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} + +#entry { + spacing: 0; + text-color: @normal-foreground; +} + +#prompt { + spacing: 0; + text-color: @normal-foreground; +} diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..81df6aa --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,107 @@ +configuration { + kb-remove-to-eol: ""; + kb-row-up: "Control+i"; + kb-row-down: "Control+k"; +} + +* { + font: "HackNerdFont 13"; + g-spacing: 10px; + g-margin: 0; + b-color: #000000FF; + fg-color: #FFFFFFFF; + fgp-color: #888888FF; + b-radius: 8px; + g-padding: 8px; + hl-color: #FFFFFFFF; + hlt-color: #000000FF; + alt-color: #111111FF; + wbg-color: #000000CC; + w-border: 2px solid; + w-border-color: #FFFFFFFF; + w-padding: 12px; +} + +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; +} + +listview { + columns: 1; + lines: 12; + fixed-height: true; + fixed-columns: true; + cycle: false; + scrollbar: false; + border: 0px solid; +} + +window { + transparency: "real"; + width: 450px; + border-radius: @b-radius; + background-color: @wbg-color; + border: @w-border; + border-color: #88B1C7; + padding: @w-padding; +} + +prompt { + text-color: @fg-color; +} + +inputbar { + children: ["prompt", "entry"]; + spacing: @g-spacing; +} + +entry { + placeholder: "Search Apps"; + text-color: @fg-color; + placeholder-color: @fgp-color; +} + +mainbox { + spacing: @g-spacing; + margin: @g-margin; + padding: @g-padding; + children: ["inputbar", "listview", "message"]; +} + +element { + spacing: @g-spacing; + margin: @g-margin; + padding: @g-padding; + border: 0px solid; + border-radius: @b-radius; + border-color: @b-color; + background-color: transparent; + text-color: @fg-color; +} + +element normal.normal { + background-color: transparent; + text-color: @fg-color; +} + +element alternate.normal { + background-color: @alt-color; + text-color: @fg-color; +} + +element selected.active { + background-color: #1793d1; + text-color: @hlt-color; +} + +element selected.normal { + background-color: #1793d1; + text-color: @hlt-color; +} + +message { + background-color: red; + border: 0px solid; +} diff --git a/.config/rofi/config1.rasi b/.config/rofi/config1.rasi new file mode 100644 index 0000000..1394d1f --- /dev/null +++ b/.config/rofi/config1.rasi @@ -0,0 +1,101 @@ +* { + font: "HackNerdFont-Regular 13"; + g-spacing: 10px; + g-margin: 0; + b-color: #000000FF; + fg-color: #FFFFFFFF; + fgp-color: #888888FF; + b-radius: 8px; + g-padding: 8px; + hl-color: #FFFFFFFF; + hlt-color: #000000FF; + alt-color: #111111FF; + wbg-color: #000000CC; + w-border: 2px solid; + w-border-color: #FFFFFFFF; + w-padding: 12px; +} + +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; +} + +listview { + columns: 1; + lines: 12; + fixed-height: true; + fixed-columns: true; + cycle: false; + scrollbar: false; + border: 0px solid; +} + +window { + transparency: "real"; + width: 450px; + border-radius: @b-radius; + background-color: @wbg-color; + border: @w-border; + border-color: @w-border-color; + padding: @w-padding; +} + +prompt { + text-color: @fg-color; +} + +inputbar { + children: ["prompt", "entry"]; + spacing: @g-spacing; +} + +entry { + placeholder: "Search Apps"; + text-color: @fg-color; + placeholder-color: @fgp-color; +} + +mainbox { + spacing: @g-spacing; + margin: @g-margin; + padding: @g-padding; + children: ["inputbar", "listview", "message"]; +} + +element { + spacing: @g-spacing; + margin: @g-margin; + padding: @g-padding; + border: 0px solid; + border-radius: @b-radius; + border-color: @b-color; + background-color: transparent; + text-color: @fg-color; +} + +element normal.normal { + background-color: transparent; + text-color: @fg-color; +} + +element alternate.normal { + background-color: @alt-color; + text-color: @fg-color; +} + +element selected.active { + background-color: @hl-color; + text-color: @hlt-color; +} + +element selected.normal { + background-color: @hl-color; + text-color: @hlt-color; +} + +message { + background-color: red; + border: 0px solid; +} diff --git a/.config/rofi/config2.rasi b/.config/rofi/config2.rasi new file mode 100644 index 0000000..3a1cb7c --- /dev/null +++ b/.config/rofi/config2.rasi @@ -0,0 +1,76 @@ +* { + +} +configuration { +/* modes: "window,drun,run,ssh";*/ + font: "HackNerdFont 12"; + show-icons: true; + hover-select: true; + no-steal-focus: false; + eh: 2; + matching: "prefix"; + display-drun: " "; + + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } +} + +listview { + lines: 12; + scrollbar: false; + cycle: false; +} + +window { + width: 450px; + height: 575px; + border-radius: 10px; + background-color: #000000; +} + +prompt { + text-color: #FFFFFF; +} + +inputbar { + children: ["prompt", "entry"]; +} + +entry { + placeholder: "Search Apps"; + text-color: #FFFFFF; +} + +mainbox { + padding: 5px; + children: ["inputbar", "listview", "message"]; +} + +element { + margin: 5px; + border-radius: 10px; +} + +element normal.normal { + background-color: #1E1E1E; + text-color: #FFFFFF; +} +element alternate.normal { + background-color: #111111; + text-color: #FFFFFF; +} +element selected.active { + background-color: #1793d1; + text-color: #FFFFFF; +} + +element selected.normal { + background-color: #1793d1; + text-color: #FFFFFF; +} diff --git a/.config/rofi/werid.rasi b/.config/rofi/werid.rasi new file mode 100644 index 0000000..c24b6a2 --- /dev/null +++ b/.config/rofi/werid.rasi @@ -0,0 +1,246 @@ +/* ---- 💫 https://github.com/JaKooLit 💫 ---- */ +/* Main Config (main) */ + +/* ---- Configuration ---- */ +configuration { + modi: "drun,run,filebrowser"; + font: "Fira Code SemiBold 12"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: "󱂬"; + drun-display-format: "{name}"; + hover-select: true; + me-select-entry: "MouseSecondary"; + me-accept-entry: "MousePrimary"; + window-format: "{w} · {c} · {t}"; + dpi: 1; + +} + +/* ---- Load pywal colors (custom wal template) ---- */ +@import "~/.config/rofi/color.rasi" + +/* ---- Window ---- */ +window { + width: 600px; + /*height: 450px;*/ + x-offset: 0px; + y-offset: 0px; + spacing: 0px; + padding: 1px; + margin: 0px; + border: 2px; + border-color: @active-background; + cursor: "default"; + location: center; + anchor: center; + fullscreen: false; + enabled: true; + border-radius: 12px; + background-image: url("~/.config/rofi/.current_wallpaper", height); +} + +/* ---- Mainbox ---- */ +mainbox { + enabled: true; + orientation: vertical; + padding: 8px; + background-color: transparent; + children: [ "inputbar", "imagebox" ]; + border-radius: 12px; +} + +/* ---- Imagebox ---- */ +imagebox { + background-color: transparent; + orientation: horizontal; + children: [ "mode-switcher", "listbox"]; +} + +/* ---- Listbox ---- */ +listbox { + spacing: 4px; + orientation: vertical; + children: ["listview" ]; + padding: 6px; + border-radius: 12px; + border: 1px; + border-color: @active-background; + background-color: @background; +} + +/* ---- Dummy ---- */ +dummy { + background-color: transparent; +} + +/* ---- Inputbar ---- */ +inputbar { + enabled: true; + text-color: @foreground; + spacing: 10px; + border-radius: 12px; + border-color: @foreground; + background-color: @background; + children: [ "textbox-prompt-colon","entry" ]; + border: 1px; + border-color: @active-background; +} + +textbox-prompt-colon { + enabled: true; + padding: 6px 0px 6px 10px; + expand: false; + str: "🐧"; + text-color: inherit; + background-color: transparent; +} + +entry { + enabled: true; + padding: 6px 0px 0px 0px; + text-color: inherit; + cursor: text; + placeholder: "Search (ctrl tab to choose mode)"; + placeholder-color: inherit; + background-color: transparent; +} + +/* ---- Mode Switcher ---- */ +mode-switcher{ + orientation: vertical; + enabled: true; + spacing: 12px; + background-color: transparent; + text-color: @foreground; +} + +button { + padding: 0px 12px 0px 8px; + border-radius: 12px; + background-color: @background; + text-color: inherit; + cursor: pointer; + border: 1px; + border-color: @active-background; +} + +button selected { + background-color: @selected-normal-background; + text-color: @foreground; + border: 1px; + border-color: @background; + +} + +/* ---- Listview ---- */ +listview { + enabled: true; + columns: 2; + lines: 5; + spacing: 2px; + padding: 6px; + dynamic: true; + cycle: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: false; + background-color: transparent; + border-radius: 12px; + border: 0px; +} + +/* ---- Element ---- */ +element { + enabled: true; + padding: 5px; + margin: 2px; + cursor: pointer; + background-color: transparent; + border-radius: 12px; + border: 0px; +} + +element normal.normal { + background-color: inherit; + text-color: @foreground; +} + +element normal.urgent { + background-color: inherit; + text-color: @foreground; +} + +element normal.active { + background-color: inherit; + text-color: @foreground; +} + +element selected.normal { + background-color: @selected-normal-background; + text-color: @foreground; +} + +element selected.urgent { + background-color: inherit; + text-color: @foreground; +} + +element selected.active { + background-color: inherit; + text-color: @foreground; +} + +element alternate.normal { + background-color: inherit; + text-color: @foreground; +} + +element alternate.urgent { + background-color: inherit; + text-color: @foreground; +} + +element alternate.active { + background-color: inherit; + text-color: @foreground; +} + +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} + +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0; +} + +/*****----- Message -----*****/ +message { + background-color: @background; + margin: 20px 0px 0px 0px; + border-radius: 12px; +} + +textbox { + padding: 10px; + background-color: @background; + text-color: @foreground; +} + +error-message { + padding: 15px; + border-radius: 12px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..78e3ff0 --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,46 @@ +add_newline = false +format = """ + \ +[](#3B4252)\ +$os\ +[ ](bg:#1793d1 fg:#3B4252)\ +$username\ +[ ](bg:#3B4252 fg:#1793d1)\ +$directory\ +[ ](bg:#33658A fg:#3B4252)\ +$git_branch\ +[](fg:#33658A) \ +""" +# format = """$os$username$directory$git_branch""" + +[character] +success_symbol = '' +error_symbol = '' + +[os] +format = '[$symbol]($style)' +style = 'fg:#1793d1 bg:#3B4252' +disabled = false + +[os.symbols] +Arch = "󰣇 " + +# Shows the username +[username] +style_root = "bg:#1793d1 fg:#800000 bold" +style_user = "bg:#1793d1 fg:#ffffff" +format = '[$user ]($style)' +disabled = false +show_always = true + +[directory] +home_symbol = '󰋜 ~' +read_only_style = 'bg:#3B4252 fg:#FB0202' +read_only = ' ' +style = '#00B1D4 bg:#3B4252' +format = '[$path ]($style)[$read_only]($read_only_style)' + +[git_branch] +format = '[$symbol $branch ]($style)' +symbol = '' +style = 'fg:#00fff2 bg:#33658A bold' diff --git a/.config/swaync/config.json b/.config/swaync/config.json new file mode 100644 index 0000000..f7d6b02 --- /dev/null +++ b/.config/swaync/config.json @@ -0,0 +1,93 @@ +{ + "$schema": "/etc/xdg/swaync/configSchema.json", + "positionX": "right", + "positionY": "top", + "layer": "overlay", + "control-center-layer": "top", + "layer-shell": true, + "layer-shell-cover-screen": true, + "cssPriority": "application", + "control-center-margin-top": 20, + "control-center-margin-bottom": 400, + "control-center-margin-right": 20, + "control-center-margin-left": 0, + "notification-2fa-action": true, + "notification-inline-replies": false, + "notification-icon-size": 64, + "notification-body-image-height": 100, + "notification-body-image-width": 200, + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + "fit-to-screen": true, + "relative-timestamps": true, + "control-center-width": 500, + "control-center-height": 600, + "notification-window-width": 500, + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": true, + "text-empty": "No Notifications", + "script-fail-notify": true, + "scripts": { + "example-script": { + "exec": "echo 'Do something...'", + "urgency": "Normal" + }, + "example-action-script": { + "exec": "echo 'Do something actionable!'", + "urgency": "Normal", + "run-on": "action" + } + }, + "notification-visibility": { + "example-name": { + "state": "muted", + "urgency": "Low", + "app-name": "Spotify" + } + }, + "widgets": [ + "inhibitors", + "title", + "dnd", + "notifications" + ], + "widget-config": { + "inhibitors": { + "text": "Inhibitors", + "button-text": "Clear All", + "clear-all-button": true + }, + "title": { + "text": "Notifications", + "clear-all-button": true, + "button-text": "Clear All" + }, + "dnd": { + "text": "Do Not Disturb" + }, + "label": { + "max-lines": 5, + "text": "Label Text" + }, + "mpris": { + "image-size": 96, + "image-radius": 12, + "blacklist": [] + }, + "buttons-grid": { + "actions": [ + { + "label": "直", + "type": "toggle", + "active": true, + "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'", + "update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'" + } + ] + } + } +} diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..8346c96 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,42 @@ +// __ __ _ +// \ \ / /_ _ _ _| |__ __ _ _ __ +// \ \ /\ / / _` | | | | '_ \ / _` | '__| +// \ V V / (_| | |_| | |_) | (_| | | +// \_/\_/ \__,_|\__, |_.__/ \__,_|_| +// |___/ +// +// +// ----------------------------------------------------- +// +{ + // General Settings + + + + + // Load Modules + "include": ["~/.config/waybar/modules.jsonc"], + + // Modules Left + "modules-left": [ + "custom/arch", + "hyprland/workspaces", + "wlr/taskbar", + "hyprland/window" + ], + + // Modules Center + "modules-center": [ + "clock" + ], + + // Modules Right + "modules-right": [ + "hyprland/language", + "custom/notification", + "keyboard-state", + "pulseaudio", + "battery", + "network" + ] +} diff --git a/.config/waybar/modules.jsonc b/.config/waybar/modules.jsonc new file mode 100644 index 0000000..a60ab66 --- /dev/null +++ b/.config/waybar/modules.jsonc @@ -0,0 +1,148 @@ +// __ __ _ _ +// | \/ | ___ __| |_ _| | ___ ___ +// | |\/| |/ _ \ / _` | | | | |/ _ \/ __| +// | | | | (_) | (_| | |_| | | __/\__ \ +// |_| |_|\___/ \__,_|\__,_|_|\___||___/ +// +// +// +// ----------------------------------------------------- +// +{ + // Workspaces + "hyprland/workspaces" : { + "on-click": "activate", + "active-only": false, + "all-outputs": true, + "format": "{}", + "format-icons": { + "urgent": "", + "active": "", + "default": "" + }, + "persistent-workspaces": { + "*": 3 + } + }, + + // Taskbar + "wlr/taskbar": { + "format": "{icon}", + "icon-size": 18, + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "thunderbird", + "com.rtosta.zapzap" + ] + }, + + // Hyprland Window + "hyprland/window": { + "separate-outputs": true + }, + + + "custom/arch": { + "format": "󰣇", + "on-click": "~/dotfiles/scripts/changeWallpaper.sh", + "tooltip": false + }, + + + // Keyboard Layout + "hyprland/language": { + "format": "{short}" + }, + + // Keyboard State + "keyboard-state": { + "numlock": true, + "capslock": false, + "format": { + "numlock": "{icon}" + }, + "format-icons": { + "locked": "󰎦", + "unlocked": "" + }, + "interval": 0.1 + }, + + // Clock + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + // START CLOCK FORMAT + "format": "{:%d %b - %I:%M %p}" + // END CLOCK FORMAT + }, + + // Network + "network": { + "format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], + "format-wifi": "{icon} {signalStrength}%", + "format-ethernet": "󰈁 {ifname}", + "format-disconnected": "󰤭", + "tooltip-format-wifi": "{essid}", + "max-length": 50, + "on-click": "kitty nmtui", + "interval": 5 + }, + + // Battery + "battery": { + "states": { + "good": 80, + "warning": 30, + "critical": 25 + }, + "interval": 5, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% 󰂄", + "format-plugged": "{capacity}% 󰂄", + "format-icons": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] + }, + + // Pulseaudio + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{icon}{volume}%", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": "󰝟 {volume}%", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": " ", + "phone": "", + "portable": "", + "car": "", + "default": ["󰕿 ", "󰖀 ", "󰕾 "] + }, + "on-click": "pavucontrol" + }, + + "custom/notification": { + "tooltip": false, + "format": "{icon}", + "format-icons": { + "notification": "", + "none": "", + "dnd-notification": "", + "dnd-none": "", + "inhibited-notification": "", + "inhibited-none": "", + "dnd-inhibited-notification": "", + "dnd-inhibited-none": "" + }, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "escape": true + } + +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..bd3689f --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,298 @@ +/* + * __ __ _ ____ _ _ + * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___ + * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \ + * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/ + * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___| + * |___/ |___/ + * + * by Stephan Raabe (2023) + * ----------------------------------------------------- +*/ + +/* ----------------------------------------------------- + * Import Pywal colors + * ----------------------------------------------------- */ +/* @import 'style-light.css'; */ + +/* ----------------------------------------------------- + * General + * ----------------------------------------------------- */ + +* { + font-family: HackNerdFont-Regular; + border: none; +} + +window#waybar { + background-color: rgba(0,0,0,0.8); + border-bottom: 0px solid #ffffff; + /* color: #FFFFFF; */ + background: transparent; + transition-property: background-color; + transition-duration: .5s; +} + +#custom-arch{ + font-size: 30px; + margin-left: 10px; + margin-right: 5px; + color: #1793d1; +} + +/* ----------------------------------------------------- + * Workspaces + * ----------------------------------------------------- */ + +#workspaces { + /* background: white; */ + margin: 2px 10px 3px 10px; + padding: 0px 0px; + border-radius: 15px; + border: 0px; + font-size: 10px; + color: white; + font-size: 16px; +} + +#workspaces button { + padding: 0px 5px; + margin: 4px 3px; + border-radius: 15px; + border: 0px; + transition: all 0.3s ease-in-out; +} + +#workspaces button.active { + background: #1793d1; + border-radius: 15px; + min-width: 40px; + transition: all 0.3s ease-in-out; +} + +#workspaces button:hover { + min-width: 40px; +} + +/* ----------------------------------------------------- + * Tooltips + * ----------------------------------------------------- */ + +tooltip { + border-radius: 10px; + opacity:0.8; + padding:0px; + margin:0px; +} + +tooltip label { + color: white; +} + +/* ----------------------------------------------------- + * Window + * ----------------------------------------------------- */ + +#window { + margin: 5px 15px 5px 0px; + padding: 2px 10px 0px 10px; + border-radius: 12px; + font-size:16px; + font-weight:normal; + opacity:0.8; +} + +window#waybar.empty #window { + background-color:transparent; +} + +/* ----------------------------------------------------- + * Taskbar + * ----------------------------------------------------- */ + +#taskbar { + margin: 3px 15px 3px 0px; + padding:0px; + border-radius: 15px; + font-weight: normal; + font-style: normal; + opacity:0.8; + border:3px solid white; +} + +#taskbar button { + margin:0; + border-radius: 15px; + padding: 0px 5px 0px 5px; +} + +/* ----------------------------------------------------- + * Modules + * ----------------------------------------------------- */ + +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +/* ----------------------------------------------------- + * Custom Exit + * ----------------------------------------------------- */ + +#custom-exit { + margin: 0px 20px 0px 0px; + padding:0px; + font-size:16px; +} + +/* ----------------------------------------------------- + * Custom Updates + * ----------------------------------------------------- */ + +#custom-updates { + font-size: 16px; + border-radius: 15px; + padding: 2px 10px 0px 10px; + margin: 5px 15px 5px 0px; + opacity:0.8; +} + +#custom-updates.green { +} + +#custom-updates.yellow { + background-color: #ff9a3c; + color: #FFFFFF; +} + +#custom-updates.red { + background-color: #dc2f2f; + color: #FFFFFF; +} + + +/* ----------------------------------------------------- + * Clock + * ----------------------------------------------------- */ + +#clock { + font-size: 16px; + border-radius: 15px; + padding: 1px 10px 0px 10px; + margin: 3px 15px 3px 0px; + opacity:0.8; + border:3px solid white; +} +/* ----------------------------------------------------- + * Language + * ----------------------------------------------------- */ + +#language{ + margin-right: 15px; +} + +/* ----------------------------------------------------- + * KeyBoard State + * ----------------------------------------------------- */ + +#keyboard-state { + margin-right: 10px; + margin-left: 10px; + font-size: 20px; +} + +/* ----------------------------------------------------- + * Notifications + * ----------------------------------------------------- */ + +#custom-notification { + padding-right: 10px; + font-size: 16px; +} + +/* ----------------------------------------------------- + * Pulseaudio + * ----------------------------------------------------- */ + +#pulseaudio { + font-size: 16px; + border-radius: 15px; + padding: 0px; + margin: 0px 10px 0px 0px; + opacity:0.8; +} + +#pulseaudio.muted { +} + +/* ----------------------------------------------------- + * Network + * ----------------------------------------------------- */ + +#network { + font-size: 16px; + border-radius: 15px; + padding: 0px; + margin: 0px 10px 0px 0px; + opacity:0.8; +} + +#network.ethernet { +} + +#network.wifi { +} + +/* ----------------------------------------------------- + * Bluetooth + * ----------------------------------------------------- */ + +#bluetooth, #bluetooth.on, #bluetooth.connected { + font-size: 16px; + border-radius: 15px; + padding: 2px 10px 0px 10px; + margin: 5px 10px 5px 0px; + opacity:0.8; +} + +#bluetooth.off { + background-color: transparent; + padding: 0px; + margin: 0px; +} + +/* ----------------------------------------------------- + * Battery + * ----------------------------------------------------- */ + +#battery { + font-size: 16px; + border-radius: 15px; + padding: 0px; + margin: 0px 10px 0px 0px; + opacity:0.8; +} + +#battery.charging, #battery.plugged { +} + +@keyframes blink { + to { + background-color: @backgroundlight; + color: @textcolor2; + } +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + + diff --git a/.config/zed/keymap.json b/.config/zed/keymap.json new file mode 100644 index 0000000..67b2b9d --- /dev/null +++ b/.config/zed/keymap.json @@ -0,0 +1,137 @@ +// Zed keymap +// +// For information on binding keys, see the Zed +// documentation: https://zed.dev/docs/key-bindings +// +// To see the default key bindings run `zed: open default keymap` +// from the command palette. +[ + { + "bindings": { + "ctrl-o": "file_finder::Toggle", + "ctrl-shift-o": "workspace::Open", + "ctrl-m": "workspace::ToggleRightDock", + + "ctrl-l": "terminal_panel::ToggleFocus", + "ctrl-e": "project_panel::ToggleFocus", + "ctrl-g": "assistant::ToggleFocus" + } + }, + { + "context": "EmptyPane", + "bindings": { + } + }, + { + "context": "FileFinder && menu_open", + "bindings": { + "j": "pane::SplitLeft", + "i": "pane::SplitUp", + "k": "pane::SplitDown" + } + }, + { + "context": "Editor", + "bindings": { + "ctrl-i": ["workspace::SendKeystrokes", "up"], + "ctrl-k": ["workspace::SendKeystrokes", "down"], + "ctrl-w": "pane::CloseActiveItem", + + "ctrl-shift-i": "editor::AddSelectionAbove", + "ctrl-shift-k": "editor::AddSelectionBelow" + } + }, + { + "context": "Terminal", + "bindings": { + "ctrl-w": "pane::CloseActiveItem", + "ctrl-n": "workspace::NewTerminal", + + "ctrl-i": ["workspace::SendKeystrokes", "up"], + "ctrl-k": ["workspace::SendKeystrokes", "down"], + "ctrl-l": null, + + "ctrl-j": "terminal_panel::ToggleFocus" + } + }, + { + "context": "ProjectPanel && not_editing", + "bindings": { + "i": ["workspace::SendKeystrokes", "up"], + "k": ["workspace::SendKeystrokes", "down"], + "j": ["workspace::SendKeystrokes", "left"], + "l": ["workspace::SendKeystrokes", "right"], + + "n": "project_panel::NewFile", + "shift-n": "project_panel::NewDirectory", + "d": "project_panel::Delete", + "o": "project_panel::RevealInFileManager", + "x": "project_panel::Cut", + "c": "project_panel::Copy", + "p": "project_panel::Paste" + } + }, + { + "context": "ProjectPanel", + "bindings": { + "ctrl-j": "project_panel::ToggleFocus", + "ctrl-m": "workspace::ToggleRightDock", + "ctrl-e": null + } + }, + { + "context": "ContextEditor > Editor", // this is AssistantPanel + "bindings": { + "ctrl-j": "assistant::ToggleFocus", + "ctrl-g": null + } + }, + { + "context": "VimControl && !menu", + "bindings": { + "h": ["vim::PushObject", { "around": false }], + "i": "vim::Up", + "j": "vim::Left", + "k": "vim::Down", + + "tab": ["workspace::SendKeystrokes", "> >"], + "shift-tab": ["workspace::SendKeystrokes", "< <"], + + "ctrl-d": ["workspace::SendKeystrokes", "ctrl-d z z"], + "ctrl-u": ["workspace::SendKeystrokes", "ctrl-u z z"], + + "#": "vim::StartOfLineDownward", + + "ctrl-k ctrl-l": "workspace::ActivatePaneRight", + "ctrl-k ctrl-j": "workspace::ActivatePaneLeft", + "ctrl-k ctrl-i": "workspace::ActivatePaneUp", + "ctrl-k ctrl-k": "workspace::ActivatePaneDown", + + "ctrl-space": "editor::GoToDefinitionSplit" + } + }, + { + "context": "vim_mode == normal", + "bindings": { + "h": "vim::InsertBefore" + } + }, + { + "context": "vim_mode == visual", + "bindings": { + "h": ["vim::PushObject", { "around": false }] + } + }, + { + "context": "vim_operator == a || vim_operator == i || vim_operator == cs", + "bindings": { + "h": "vim::IndentObj" + } + }, + { + "context": "ProjectPanel || CollabPanel || OutlinePanel || ChatPanel || VimControl || EmptyPane || SharedScreen || MarkdownPreview || KeyContextView", + "bindings": { + "ctrl-w": "pane::CloseActiveItem" + } + } +] diff --git a/.config/zed/keymap_backup.json b/.config/zed/keymap_backup.json new file mode 100644 index 0000000..1408662 --- /dev/null +++ b/.config/zed/keymap_backup.json @@ -0,0 +1,135 @@ +// Zed keymap +// +// For information on binding keys, see the Zed +// documentation: https://zed.dev/docs/key-bindings +// +// To see the default key bindings run `zed: open default keymap` +// from the command palette. +[ + { + "context": "", + "bindings": { + "ctrl-o": "file_finder::Toggle", + "ctrl-shift-o": "workspace::Open", + "ctrl-m": "workspace::ToggleRightDock" + } + }, + { + "context": "EmptyPane", + "bindings": { + "ctrl-l": "terminal_panel::ToggleFocus", + "ctrl-e": "project_panel::ToggleFocus", + "ctrl-g": "assistant::ToggleFocus" + } + }, + { + "context": "FileFinder && menu_open", + "bindings": { + "j": "pane::SplitLeft", + "i": "pane::SplitUp", + "k": "pane::SplitDown" + } + }, + { + "context": "Editor", + "bindings": { + "ctrl-i": ["workspace::SendKeystrokes", "up"], + "ctrl-k": ["workspace::SendKeystrokes", "down"], + "ctrl-w": "pane::CloseActiveItem", + + "ctrl-shift-i": "editor::AddSelectionAbove", + "ctrl-shift-k": "editor::AddSelectionBelow", + + "ctrl-l": "terminal_panel::ToggleFocus", + "ctrl-e": "project_panel::ToggleFocus", + "ctrl-g": "assistant::ToggleFocus" + } + }, + { + "context": "Terminal", + "bindings": { + "ctrl-w": "pane::CloseActiveItem", + "ctrl-n": "workspace::NewTerminal", + + "ctrl-i": ["workspace::SendKeystrokes", "up"], + "ctrl-k": ["workspace::SendKeystrokes", "down"], + + "ctrl-j": "terminal_panel::ToggleFocus", + + "ctrl-shift-i": null, + "ctrl-shift-k": "project_panel::ToggleFocus" + } + }, + { + "context": "ProjectPanel && not_editing", + "bindings": { + "i": ["workspace::SendKeystrokes", "up"], + "k": ["workspace::SendKeystrokes", "down"], + "j": ["workspace::SendKeystrokes", "left"], + "l": ["workspace::SendKeystrokes", "right"], + + "n": "project_panel::NewFile", + "shift-n": "project_panel::NewDirectory", + "d": "project_panel::Delete", + "o": "project_panel::RevealInFileManager", + "x": "project_panel::Cut", + "c": "project_panel::Copy", + "p": "project_panel::Paste" + } + }, + { + "context": "ProjectPanel", + "bindings": { + "ctrl-j": "project_panel::ToggleFocus", + "ctrl-shift-i": "terminal_panel::ToggleFocus", + "ctrl-shift-k": "assistant::ToggleFocus", + "ctrl-w": "workspace::ToggleRightDock" + } + }, + { + "context": "VimControl && !menu", + "bindings": { + "h": ["vim::PushObject", { "around": false }], + "i": "vim::Up", + "j": "vim::Left", + "k": "vim::Down", + + "tab": ["workspace::SendKeystrokes", "> >"], + "shift-tab": ["workspace::SendKeystrokes", "< <"], + + "ctrl-d": ["workspace::SendKeystrokes", "ctrl-d z z"], + "ctrl-u": ["workspace::SendKeystrokes", "ctrl-u z z"], + + "#": "vim::StartOfLineDownward", + + // "ctrl-shift-l": ["workspace::ActivatePaneInDirection", "Right"], + // "ctrl-shift-j": ["workspace::ActivatePaneInDirection", "Left"], + // "ctrl-shift-i": ["workspace::ActivatePaneInDirection", "Up"], + // "ctrl-shift-k": ["workspace::ActivatePaneInDirection", "Down"] + } + }, + { + "context": "vim_mode == normal", + "bindings": { + "h": "vim::InsertBefore" + } + }, + { + "context": "vim_mode == visual", + "bindings": { + "h": ["vim::PushOperator", { "Object": { "around": false } }] + } + }, + { + "context": "vim_operator == a || vim_operator == i || vim_operator == cs", + "bindings": { + "h": "vim::IndentObj" + } + }, + { + "context": "ProjectPanel || CollabPanel || OutlinePanel || ChatPanel || VimControl || EmptyPane || SharedScreen || MarkdownPreview || KeyContextView", + "bindings": { + "ctrl-w": "pane::CloseActiveItem" + } + } +] diff --git a/.config/zed/settings.json b/.config/zed/settings.json new file mode 100644 index 0000000..ad1861d --- /dev/null +++ b/.config/zed/settings.json @@ -0,0 +1,85 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "use_on_type_format": false, + "git_panel": { + "dock": "right" + }, + "chat_panel": { + "dock": "left" + }, + "languages": { + "JSONC": { + "show_edit_predictions": false + } + }, + "show_edit_predictions": false, + "assistant": { + "default_profile": "minimal", + "default_model": { + "provider": "copilot_chat", + "model": "claude-3.7-sonnet" + }, + "version": "2" + }, + "terminal": { + "dock": "right", + "default_width": 550 + // "detect_venv": { + // "on": { + // "directories": ["venv", "env"], + // "activate_script": "default" + // } + // } + }, + "project_panel": { + "dock": "right" + }, + "base_keymap": "VSCode", + "telemetry": { + "metrics": false, + "diagnostics": false + }, + "vim_mode": true, + "ui_font_size": 16, + "buffer_font_size": 16.0, + "theme": { + "mode": "system", + "light": "VSCode Dark Modern", + "dark": "VSCode Dark Modern" + }, + + "buffer_font_family": "Hack Nerd Font", + "ui_font_family": "Hack Nerd Font", + + "toolbar": { + "breadcrumbs": false + }, + + "scrollbar": { + "show": "never" + }, + + "tabs": { + "git_status": true, + "file_icons": true + }, + + "format_on_save": "off", + + "vim": { + "toggle_relative_line_numbers": true + }, + "diagnostics": { + "inline": { + "enabled": true + } + } + +} diff --git a/.config/zed/settings_backup.json b/.config/zed/settings_backup.json new file mode 100644 index 0000000..8b18e6d --- /dev/null +++ b/.config/zed/settings_backup.json @@ -0,0 +1,78 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "git_panel": { + "dock": "right" + }, + "chat_panel": { + "dock": "left" + }, + "languages": { + "JSONC": { + "show_inline_completions": false + } + }, + "show_inline_completions": false, + "assistant": { + "default_model": { + "provider": "copilot_chat", + "model": "o1" + }, + "version": "2" + }, + "terminal": { + "dock": "right", + "default_width": 550 + // "detect_venv": { + // "on": { + // "directories": ["venv", "env"], + // "activate_script": "default" + // } + // } + }, + "project_panel": { + "dock": "right" + }, + "base_keymap": "VSCode", + "telemetry": { + "metrics": false, + "diagnostics": false + }, + "vim_mode": true, + "ui_font_size": 16, + "buffer_font_size": 15.0, + "theme": { + "mode": "system", + "light": "VSCode Dark Modern", + "dark": "VSCode Dark Modern" + }, + + "buffer_font_family": "Hack Nerd Font", + "ui_font_family": "Hack Nerd Font", + + "toolbar": { + "breadcrumbs": false + }, + + "scrollbar": { + "show": "never" + }, + + "tabs": { + "git_status": true, + "file_icons": true + }, + + "format_on_save": "off", + + "vim": { + "toggle_relative_line_numbers": true + } + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ba7d04 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +.config/** + + +!.config/nvim +!.config/nvim/** + +!.config/fastfetch +!.config/fastfetch/** + +!.config/fontconfig +!.config/fontconfig/** + +!.config/kitty +!.config/kitty/** + +!.config/lf +!.config/lf/** + +!.config/rofi +!.config/rofi/** + +!.config/starship.toml + +!.config/hypr +!.config/hypr/** + +!.config/swaync +!.config/swaync/** + +!.config/waybar +!.config/waybar/** + +!.config/eww +!.config/eww/** + +!.config/zed +!.config/zed/** diff --git a/.gitignore1 b/.gitignore1 new file mode 100644 index 0000000..4750207 --- /dev/null +++ b/.gitignore1 @@ -0,0 +1,15 @@ +.config/discord/ +.config/ZapZap +.config/cef_user_data +.config/eog +.config/libreoffice/4/user +.config/vlc +.config/clipse/tmp_files +.config/clipse/clipboard_history.json +.config/chromium +.config/balenaEtcher +.config/configstore +.config/github-copilot + +.config/Code +.config/gh diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a42637 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# My Dotfiles +my dotfiles for various applications diff --git a/bgs/1.png b/bgs/1.png new file mode 100644 index 0000000000000000000000000000000000000000..10472826e26a9b74acecbcb67fff7bf218492ea4 GIT binary patch literal 2888963 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

+tsjEULkL8dmu*VC~9~V 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 Y%O|*j=W%=P%;23kvZguu- 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%0Dprd0N$(!Ak&4Pz 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%0DcDA`g?GP+qd2-vW$e6OL(IXFGl70&IXgG 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

o` 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