0c0066fef1
Custom tab_bar.py with flat tabs, right-aligned status area (git branch, CPU%, memory, uptime, hostname, clock) using Nerd Font icons. F12/Shift+F12 toggle for tab bar. Added Kitty-setup.md, theme-setup.md, and install scripts for kitty-only and full Debian theme deployment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
7.6 KiB
7.6 KiB
SESSION.md — Seth Linux Theme
Project Summary
Centralized Linux desktop theme for Seth's GNOME setup. Black titlebars, square corners, ultra-thin headerbars, dark mode with orange accent (#D35400). Configs for GTK3/4 CSS, kitty terminal, and GNOME gsettings.
Gitea
Context Files
gtk-3.0/gtk.css— GTK3/4 headerbar CSS (same file used for both)kitty/kitty-theme.conf— kitty terminal overrides (borderless, black titlebar, tab bar config, keybindings)kitty/tab_bar.py— custom tab bar: flat tabs + right-aligned status (git, cpu, mem, uptime, host, clock)kitty/tab-bar-hide.conf/tab-bar-show.conf— toggle snippets (may be unused now with inline --override approach)gnome/apply-gnome-settings.sh— GNOME dark mode, orange accent, Super+right resizeinstall.sh— deploys all configs to target user's ~/.config
Session Notes
Architecture
- GTK CSS goes in
~/.config/gtk-3.0/gtk.cssand~/.config/gtk-4.0/gtk.css(same content) - kitty uses its own config, not GTK —
wayland_titlebar_coloronly works with CSD, not Mutter SSD hide_window_decorations yesremoves Mutter's server-side decorations from kitty entirely (borderless)- GNOME Shell rounded corners are Mutter-controlled, not GTK CSS — need GNOME Shell theme or extension to override DE-wide
resize-with-right-button trueenables Super+right-drag to resize (was disabled by default)
Deployment
- Desktop runs on steel141 (192.168.0.141) under
seth@user claude@is headless, no DE — GUI configs must target/home/seth/.config/- From claude@:
sudo -u seth cp <file> /home/seth/.config/... - GTK3 apps pick up CSS changes live (open new window). GTK4/libadwaita apps need full relaunch. Kitty needs relaunch.
Current state (2026-04-07)
- GTK CSS: black headerbar, square corners, white text, transparent buttons, #999 backdrop text/icons, 36px min-height
- Kitty: borderless (
hide_window_decorations yes), JetBrainsMono Nerd Font, custom tab bar with status area - Kitty tab bar: flat style (no powerline), user@ prefix for non-seth users, right-aligned status (git branch, CPU%, memory, uptime, hostname, clock) with Nerd Font icons in orange
- Kitty tab bar toggle: F12 hides (min_tabs=999), Shift+F12 shows (min_tabs=1) via
remote_control load-config --override - GNOME: dark mode, orange accent, Super+right resize enabled
Open issues
- GNOME Shell rounded window corners — Mutter hardcodes CSD corner rounding at compositor level. No CSS override possible (tried
border-radius: 0 !importanton all nodes). No gsetting exists. GNOME Shell CSS.window-framedoesn't control it either. Only fix: patched Mutter or a GNOME Shell extension that modifies Mutter's clipping behavior. "Rounded Window Corners Reborn" extension only ADDS rounding (shader overlay), doesn't remove native rounding.
Resolved issues (2026-04-07)
- Nautilus sidebar/main headerbar height mismatch — Fixed by targeting
headerbar stackpage > boxandheaderbar stackwithmin-height: 0and zero padding. Root cause: NautilusPathBar inside a GtkStack in the main headerbar was taller than the sidebar's simple AdwWindowTitle. - Thin gray border line at top of headerbar — Fixed by targeting
decoration,window.csd,.titlebar:not(headerbar), andtoolbarview > .top-barwithborder: none; box-shadow: none; outline: none. Was a CSD decoration border, not on the headerbar node itself. - User Themes extension — Installed (
gnome-shell-extension-user-themeapt package), enabled, Sethian theme set viagsettings set org.gnome.shell.extensions.user-theme name "Sethian". Requiredgnome-shell --replaceto detect newly installed extension.
Design decisions
- 2026-04-07: Use stock Adwaita dark + CSS overrides, not a full third-party theme — minimal maintenance, survives GNOME updates
- 2026-04-07: Kitty borderless rather than trying to style Mutter's SSD — cleaner, no titlebar to fight with
- 2026-04-07: adw-gtk3 not needed if only overriding headerbar — stock Adwaita + user CSS is sufficient
- 2026-04-07: Flat tab style over powerline — powerline creates clipping artifacts with long titles, flat is simpler
- 2026-04-07: JetBrainsMono Nerd Font — needed for icon glyphs in tab bar status area
- 2026-04-07: Tab bar toggle via
remote_control load-config --override— no scripts/sockets needed, inline kitty RC
DANGER — never do these
- NEVER run
gnome-shell --replacefrom claude@ session — it replaces seth's shell process, kills the active session, resets all extensions and theming to defaults. Usedbus-sendreexec or ask seth to relog instead.
Kitty architecture notes
- Repo files (
seth-linux-theme/kitty/) and Seth's live config (/home/seth/.config/kitty/) are separate copies, not symlinks — must deploy manually tab_bar.pycustom draw function: kitty callsdraw_tab()for each tab.is_last=Trueis the hook for drawing right-aligned status- CPU % uses delta sampling from
/proc/stat— first draw shows "..." (no prior sample), subsequent draws show real usage kitty @ load-configmerges overrides into running instance without restartremote_controlfrom a keymap runs inside kitty's process — no socket/listen_on needed- Kitty does NOT hot-reload
tab_bar.py, font changes, or keybindings — full restart required - Ctrl+Shift+F5 only reloads colors/visuals
toggle_tab_baraction does NOT exist in kitty 0.41.1set-optionRC command does NOT exist — useload-config --overrideinsteadload-config-fileis wrong command name — correct isload-config- Nerd Font installed system-wide at
/usr/local/share/fonts/NerdFonts/
What was tried and didn't work
headerbar *withmin-height: 0— didn't equalize sidebar/main headerbar heightsheaderbar > windowhandle > centerboxtargeting — no effect on height mismatchwayland_titlebar_colorin kitty — ignored when Mutter uses server-side decorationsborder: noneon headerbar — doesn't remove the gray line at top (it's not a headerbar border)border-radius: 0 !importantonwindow,window.csd,decoration,.titlebar— doesn't remove rounded corners (Mutter compositor-level clipping)- GNOME Shell theme
.window-frame { border-radius: 0 }— doesn't control Mutter's window corner rounding - GTK_DEBUG=interactive on Nautilus — inspector window doesn't open (GNOME 48, Nautilus 48.3). Ctrl+Shift+D/I also failed. Shell restart required for newly installed extensions.
draw_tab_with_powerline— creates clipping artifacts with long tab titles (extra rectangle gets cut off)toggle_tab_barkitty action — doesn't exist in 0.41.1remote_control set-option— not a valid RC commandremote_control load-config-file— wrong name, correct isload-configmap ctrl+shift+f1— produces capital P instead of triggering action (escape sequence issue)- Toggle via background script +
kitty @+ socket — overcomplicated, socket discovery unreliable from background processes listen_on unix:/tmp/kitty-{kitty_pid}+ script withkitty @ --to— still failed, too many moving parts
Debugging notes (2026-04-07)
- Nautilus widget tree (from gresource):
NautilusWindow(AdwApplicationWindow) →AdwOverlaySplitView→ sidebar:AdwToolbarView→AdwHeaderBar; content:AdwToolbarView→NautilusToolbar(AdwBin) →AdwHeaderBarwith title =GtkBoxcontainingNautilusPathBarin aGtkStack - The main headerbar height was driven by NautilusPathBar's default min-height/padding in the GtkStack
- The gray top line was from the CSD
decorationnode and/ortoolbarview > .top-barborder