Use kitty instead of st as terminal

I decided to merge this without fast-forward (but still after a rebase)
to better keep the context of the block of commits needed after the
switch.

* kitty:
  README: Change terminal used to kitty
  kitty: Change to beam cursor
  kitty: Update mouse_maps to use Alt as kitty_mod
  kitty: Only set the mappings I need/use
  kitty: Change color scheme to modified Tango
  kitty: Enable close_on_child_death
  kitty: Make kitty startup fast
  i3: Switch to kitty
  i3: Save terminal related stuff in variables
  i3: Remove unneeded window class flag to st
  dircolors: Use a non-system color for DIR
  kitty: Configure to align with my st settings
  kitty: Add v0.42.0 default config
This commit is contained in:
2025-05-22 17:03:08 +02:00
3 changed files with 2817 additions and 16 deletions

View File

@@ -11,7 +11,14 @@ floating_modifier $mod
default_border pixel 1
hide_edge_borders smart
set $TERMINAL st
# Use --single-instance for faster startup. See the "daemon" exec below
set $TERMINAL kitty --single-instance
set $TERM_CLASS kitty
set $TERM_DIR_FLAG -d
set $TERM_TITLE_FLAG -T
set $TERM_TRANSPARENCY_FLAG -o background_opacity=
set $TERM_SCRATCHPAD_TRANS 0.45
set $TERM_CMD_FLAG
# Focus should not follow mouse
# focus_follows_mouse no
@@ -23,13 +30,24 @@ set $TERMINAL st
# Execs ########################################################################
# Starting a new kitty process is quite slow. With --single-instance (see
# $TERMINAL definition above) "new invocations will instead create a new
# top-level window in the existing kitty instance"[^1] to allow "kitty to share
# a single sprite cache on the GPU"[^1], so that startup is almost instant.
#
# For this to work best, launch one hidden "daemon" instance at startup so that
# the kitty process is always running, even when no OS windows exists.
#
# [^1]: kitty(1)
exec --no-startup-id $TERMINAL --start-as hidden --detach
# Multi monitor support
exec_always --no-startup-id ~/.config/i3/monitor-setup.sh &
# Keybindins ###################################################################
# Terminal
bindsym $mod+Return exec $TERMINAL -d "$(xcwd)"
bindsym $mod+Return exec $TERMINAL $TERM_DIR_FLAG "$(xcwd)"
bindsym $mod+Shift+Return exec $TERMINAL
# Program launcher
@@ -201,7 +219,7 @@ bindsym $mod+Shift+m move scratchpad
bindsym $mod+Shift+o scratchpad show
# scratchpad-terminal
for_window [class="^$TERMINAL-256color$" title="^scratchpad-terminal$"] \
for_window [class="^$TERM_CLASS$" title="^scratchpad-terminal$"] \
move scratchpad, \
scratchpad show, \
sticky enable, \
@@ -210,12 +228,11 @@ for_window [class="^$TERMINAL-256color$" title="^scratchpad-terminal$"] \
move position center
# Toggle the scratchpad-terminal or create a new one if none exists.
bindsym $mod+comma exec \
i3-msg '[class="^$TERMINAL-256color$" title="^scratchpad-terminal$"] \
i3-msg '[class="^$TERM_CLASS$" title="^scratchpad-terminal$"] \
scratchpad show' \
|| $TERMINAL -A 0.45 \
-d "$(xcwd)" \
-c $TERMINAL-256color \
-t scratchpad-terminal
|| $TERMINAL $TERM_TRANSPARENCY_FLAG$TERM_SCRATCHPAD_TRANS \
$TERM_DIR_FLAG "$(xcwd)" \
$TERM_TITLE_FLAG scratchpad-terminal
for_window [class="^TelegramDesktop$"] \
move scratchpad, \
@@ -238,13 +255,13 @@ bindsym $mod+Shift+b exec \
i3-msg '[class="^Bitwarden$"] scratchpad show' \
|| bitwarden-desktop
for_window [class="^$TERMINAL-256color$" title="^polybar-datetime-calendar$"] \
for_window [class="^$TERM_CLASS$" title="^polybar-datetime-calendar$"] \
floating enable, \
border pixel 3, \
resize set 378 300, \
move position 1411 32
for_window [class="^$TERMINAL-256color$" title="^polybar-wlan$"] \
for_window [class="^$TERM_CLASS$" title="^polybar-wlan$"] \
floating enable, \
border pixel 3, \
resize set 1125 750, \
@@ -260,12 +277,12 @@ bindsym --release Shift+Print exec cd ~/media/pics/screens/ && scrot -s -f
bindsym $mod+z exec ~/.local/bin/zoom-links
# Monitor selection with fzf
for_window [class="^$TERMINAL-256color$" title="^fzf-monitor-setup$"] \
for_window [class="^$TERM_CLASS$" title="^fzf-monitor-setup$"] \
floating enable, \
border pixel 3, \
resize set 378 300, \
move position 1 32
bindsym $mod+m exec \
pkill -f fzf-monitor-setup -O 1 \
|| $TERMINAL -t fzf-monitor-setup -e \
|| $TERMINAL $TERM_TITLE_FLAG fzf-monitor-setup $TERM_CMD_FLAG \
sh -c "~/.local/bin/monitor-setup && ~/.config/polybar/launch.sh"

2786
.config/kitty/kitty.conf Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -6,8 +6,7 @@ tools and environments.
Although some files support macOS, most of them assume that they are used on a
GNU/Linux system. The systems I use include an Artix, a Manjaro and an Ubuntu
installation. All of them running i3wm and the arch-based systems without a DE.
I use [my fork][1] of [st][2] as terminal, [zsh][3] as shell and [neovim][4] as
text editor.
I use [kitty][1] as terminal, [zsh][3] as shell and [neovim][4] as text editor.
The repository mimics my `$HOME`, trying to conform to the [XDG Base Directory
Specification][5] as close as possible. An exception is `etc/ -> /etc/`, as well
@@ -32,8 +31,7 @@ $ ./meta/install
<!--- Links -->
[1]: https://github.com/druckdev/st
[2]: https://st.suckless.org/
[1]: https://sw.kovidgoyal.net/kitty/
[3]: https://www.zsh.org/
[4]: https://github.com/neovim/neovim
[5]: https://wiki.archlinux.org/title/XDG_Base_Directory