style(astal-menu): unfullscreen glyphs, animated takeover, CyberQueer TUIs
- Expand/collapse controls now use consistent fullscreen ()/unfullscreen () glyphs: the quad "Back" and the taskbar-panel "Back" became buttons (matching the appdrawer's - toggle). - The taskbar panel takeover now plays the same bouncy quad-pop scale as the quads when it expands, so every expansion in the menu is animated. - monitor-manager (curses) and timer-pick (bash TUI) now use the CyberQueer accent palette (red #E40046 + violet #5018dd, true-colour with ANSI fallback) instead of cyan/green, matching the rest of the config. - Added a .stepper-value style for the Columns count stepper. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SUN7gg6GGfnToghMijLm5Ymain
parent
48e32e7eea
commit
4c747221f2
|
|
@ -107,6 +107,14 @@ drawingarea {
|
|||
.quad-action:active,
|
||||
button:checked.quad-action { background: @accent; color: @bg; border-color: @accent; }
|
||||
|
||||
/* Columns count stepper value (between the − / + pills) */
|
||||
.stepper-value {
|
||||
min-width: 34px;
|
||||
font-weight: bold;
|
||||
color: @accent;
|
||||
font-feature-settings: "tnum";
|
||||
}
|
||||
|
||||
/* A MenuButton (the settings cog) wraps an inner `button` node that would render a
|
||||
* second ring inside the outer .quad-action pill — flatten it so only one border
|
||||
* shows. */
|
||||
|
|
|
|||
|
|
@ -68,7 +68,8 @@ class QuadGrid(Gtk.Overlay):
|
|||
self._takeover_reveal.set_valign(Gtk.Align.FILL)
|
||||
self._takeover_holder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
self._takeover_holder.add_css_class("quad-expanded")
|
||||
self._takeover_reveal.set_child(bordered(self._takeover_holder, radius=16, fill_bg=True))
|
||||
self._takeover_card = bordered(self._takeover_holder, radius=16, fill_bg=True)
|
||||
self._takeover_reveal.set_child(self._takeover_card)
|
||||
self.add_overlay(self._takeover_reveal)
|
||||
self._takeover_reveal.set_visible(False)
|
||||
|
||||
|
|
@ -80,8 +81,9 @@ class QuadGrid(Gtk.Overlay):
|
|||
A Back row is prepended so the covered quads can be restored."""
|
||||
header = Gtk.CenterBox()
|
||||
header.add_css_class("expanded-header")
|
||||
back = Gtk.Button(label=" Back")
|
||||
back = Gtk.Button(label="") # nf-fa-compress (unfullscreen)
|
||||
back.add_css_class("quad-action")
|
||||
back.set_tooltip_text("Collapse")
|
||||
back.connect("clicked", lambda *_: on_back())
|
||||
header.set_start_widget(back)
|
||||
self._takeover_holder.append(header)
|
||||
|
|
@ -90,6 +92,9 @@ class QuadGrid(Gtk.Overlay):
|
|||
|
||||
def show_takeover(self) -> None:
|
||||
self._takeover_reveal.set_visible(True)
|
||||
self._takeover_card.add_css_class("quad-pop") # same bouncy scale as a quad
|
||||
GLib.timeout_add(340, lambda: (self._takeover_card.remove_css_class("quad-pop"),
|
||||
GLib.SOURCE_REMOVE)[1])
|
||||
self._takeover_reveal.set_reveal_child(True)
|
||||
self.grid.add_css_class("dimmed")
|
||||
|
||||
|
|
@ -156,8 +161,9 @@ class QuadGrid(Gtk.Overlay):
|
|||
def _expanded_header(self, title: str) -> Gtk.Widget:
|
||||
header = Gtk.CenterBox()
|
||||
header.add_css_class("expanded-header")
|
||||
back = Gtk.Button(label=" Back") # nf arrow
|
||||
back = Gtk.Button(label="") # nf-fa-compress (unfullscreen)
|
||||
back.add_css_class("quad-action")
|
||||
back.set_tooltip_text("Collapse")
|
||||
back.connect("clicked", lambda *_: self.request_collapse())
|
||||
header.set_start_widget(back)
|
||||
lbl = Gtk.Label(label=title)
|
||||
|
|
|
|||
|
|
@ -347,8 +347,20 @@ class App:
|
|||
def _init_colors(self):
|
||||
curses.start_color()
|
||||
curses.use_default_colors()
|
||||
# 1 = selected (cyan bold)
|
||||
curses.init_pair(1, curses.COLOR_CYAN, -1)
|
||||
# Match the rest of the config (CyberQueer): accent red #E40046 for the
|
||||
# selection, electric violet #5018dd for headers/help. Define them as true
|
||||
# RGB when the terminal allows (kitty does); otherwise fall back to the
|
||||
# nearest ANSI colour so the tool still works on a basic console.
|
||||
accent, violet = curses.COLOR_CYAN, curses.COLOR_GREEN
|
||||
if curses.COLORS >= 256 and curses.can_change_color():
|
||||
try:
|
||||
curses.init_color(16, 894, 0, 275) # #E40046
|
||||
curses.init_color(17, 314, 94, 867) # #5018dd
|
||||
accent, violet = 16, 17
|
||||
except curses.error:
|
||||
pass
|
||||
# 1 = selected (accent red, bold)
|
||||
curses.init_pair(1, accent, -1)
|
||||
# 2 = normal (white)
|
||||
curses.init_pair(2, curses.COLOR_WHITE, -1)
|
||||
# 3 = mirror target (yellow)
|
||||
|
|
@ -357,8 +369,8 @@ class App:
|
|||
curses.init_pair(4, curses.COLOR_BLACK + 8 if curses.COLORS >= 16 else curses.COLOR_WHITE, -1)
|
||||
# 5 = status bar (reversed)
|
||||
curses.init_pair(5, -1, -1)
|
||||
# 6 = help (green)
|
||||
curses.init_pair(6, curses.COLOR_GREEN, -1)
|
||||
# 6 = help / headers (violet)
|
||||
curses.init_pair(6, violet, -1)
|
||||
|
||||
def _get_scale(self, pane_cols: int, pane_rows: int) -> float:
|
||||
"""Return cached scale; recompute only on resize or when a monitor escapes the viewport."""
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@ hide() { printf "${CSI}?25l"; }
|
|||
show() { printf "${CSI}?25h"; }
|
||||
|
||||
b="${CSI}1m" ; d="${CSI}2m" ; r="${CSI}0m"
|
||||
cy="${CSI}96m"; gn="${CSI}92m"
|
||||
# CyberQueer accents to match the rest of the config: red #E40046, violet #5018dd
|
||||
# (24-bit truecolor; kitty renders these exactly).
|
||||
cy="${CSI}38;2;228;0;70m" ; gn="${CSI}38;2;80;24;221m"
|
||||
yl="${CSI}93m"; wh="${CSI}97m"; gy="${CSI}90m"
|
||||
rv="${CSI}7m"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue