Phase 1: Alt+Tab switcher, dark GTK theme, alacritty terminal

- Alt+Tab now shows a centered visual switcher overlay with window cards;
  cycling with Tab, committing on Alt release, cancelling with Escape
- GTK3 and GTK2 themes rewritten in dark navy palette matching skywm/
  skydeskbar color constants (was an off-brand tan/BeOS palette)
- Add alacritty to ISO packages with pre-configured dark color scheme;
  update all menu Terminal entries to launch alacritty instead of xterm
- Add KeyReleaseMask to WM root event selection to detect Alt release

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-07-23 13:11:37 -04:00
1 parent e641720a3c
commit 9089c14a19
10 files changed
+378 -101

No files matched your search

+23 -7
View File
@@ -66,6 +66,10 @@ void on_expose(WM *wm, XExposeEvent *e) {
menu_draw(wm);
return;
}
if (wm->swl_visible && e->window == wm->swl_win) {
switcher_draw(wm);
return;
}
Client *c = client_find_by_frame(wm, e->window);
if (c && !c->minimized) frame_draw(wm, c);
}
@@ -259,13 +263,17 @@ void on_key_press(WM *wm, XKeyEvent *e) {
if ((e->state & Mod1Mask) && sym == XK_F4 && wm->focused)
send_delete(wm, wm->focused->win);
/* Alt+Tab — cycle windows */
if ((e->state & Mod1Mask) && sym == XK_Tab && wm->clients) {
Client *start = wm->focused ? wm->focused->next : wm->clients;
Client *n = start;
while (n && n->minimized) n = n->next;
if (!n) { n = wm->clients; while (n && n->minimized) n = n->next; }
if (n && n != wm->focused) client_focus(wm, n);
/* Alt+Tab — visual switcher */
if ((e->state & Mod1Mask) && sym == XK_Tab) {
if (wm->swl_visible) switcher_next(wm);
else if (wm->clients) switcher_show(wm);
return;
}
/* While switcher is visible, eat all other keys until Alt released */
if (wm->swl_visible) {
if (sym == XK_Escape) switcher_hide(wm, 0);
return;
}
/* Alt+F9 — minimize */
@@ -300,3 +308,11 @@ void on_key_press(WM *wm, XKeyEvent *e) {
if (sym == XK_Escape && wm->menu_visible)
menu_hide(wm);
}
void on_key_release(WM *wm, XKeyEvent *e) {
if (!wm->swl_visible) return;
KeySym sym = XLookupKeysym(e, 0);
if (sym == XK_Alt_L || sym == XK_Alt_R ||
sym == XK_Meta_L || sym == XK_Meta_R)
switcher_hide(wm, 1);
}