mirror of
https://github.com/labwc/labwc.git
synced 2026-06-13 14:33:18 -04:00
Add full handle/grip assembly to the bottom of SSD window frames, following the Openbox themerc specification for geometry and theming. Theme parsing: - Parse window.handle.width (handle bar height, default 6) - Parse window.grip.width (corner grip width, default 20) - Parse window.[active|inactive].handle.bg with Solid/Gradient support - Parse window.[active|inactive].grip.bg (inherits from handle if unset) - Pre-render 1px-wide fill buffers and cairo patterns for handle/grip Scene graph (new ssd-handle.c): - Handle assembly replaces bottom border when active, with its own left/right/top borders and three-segment bottom border - Grips at left/right corners for diagonal resize (sw/se-resize) - Center handle for vertical resize (s-resize) - Vertical separator lines between grips and handle using border color - Per Openbox spec, handle_width is content-only height with borders drawn around it (total assembly height = 2*border_width + handle_width) Interactive visual states (grips only): - Hover: 20% black overlay on grip content area - Pressed: 40% black overlay with 1px inset shadow (dark top/left, light bottom/right) for a pushed-in 3D effect - Dragging: 20% overlay with inset shadow maintained - Global hover tracking (server.hovered_handle_ssd/element) ensures proper cleanup when cursor moves across views or to desktop Decoration toggle cycle (ToggleDecorations action): - New LAB_SSD_MODE_BORDER_HANDLE between BORDER and FULL - keepBorder=true: full -> border+handle -> border -> none -> full - keepBorder=false: full -> none -> full (unchanged) Node types and input: - New LAB_NODE_HANDLE, LAB_NODE_GRIP_LEFT, LAB_NODE_GRIP_RIGHT - Integrated into LAB_NODE_BORDER/BORDER_BOTTOM containment so existing Border context mousebinds (Resize) work automatically - Handle/grip descriptors resolved directly in get_cursor_context() bypassing ssd_get_resizing_type() for precise cursor shapes Visibility rules: - Hidden when maximized, shaded, or handle_width is 0 - Hidden in LAB_SSD_MODE_BORDER and LAB_SSD_MODE_NONE states - Bottom border in ssd-border.c disabled when handle is active Documentation: - labwc-theme.5.scd: document all handle/grip theme properties - labwc-actions.5.scd: update ToggleDecorations to 4-state cycle - docs/themerc: add handle/grip default values
153 lines
5.2 KiB
Text
153 lines
5.2 KiB
Text
# This file contains all themerc options with default values
|
|
#
|
|
# System-wide and local themes can be overridden by creating a copy of this
|
|
# file and renaming it to $HOME/.config/labwc/themerc-override. Be careful
|
|
# though - if you only want to override a small number of specific options,
|
|
# make sure all other lines are commented out or deleted.
|
|
|
|
# general
|
|
border.width: 1
|
|
|
|
#
|
|
# The global padding.{width,height} of openbox are not supported because
|
|
# the default labwc button geometry deviates from that of openbox
|
|
#
|
|
window.titlebar.padding.width: 0
|
|
window.titlebar.padding.height: 0
|
|
|
|
# window border
|
|
window.active.border.color: #aaaaaa
|
|
window.inactive.border.color: #aaaaaa
|
|
|
|
# ToggleKeybinds status indicator
|
|
window.active.indicator.toggled-keybind.color: #ff0000
|
|
|
|
# window titlebar background
|
|
window.active.title.bg.color: #e1dedb
|
|
window.inactive.title.bg.color: #f6f5f4
|
|
window.*.title.bg: Solid
|
|
|
|
# Vertical and SplitVertical gradients are supported for window.*.title.bg
|
|
# with the following additional color fields. See labwc-theme(5) for examples.
|
|
#
|
|
# window.*.title.bg.colorTo:
|
|
# window.*.title.bg.color.splitTo:
|
|
# window.*.title.bg.colorTo.splitTo:
|
|
|
|
# window titlebar text
|
|
window.active.label.text.color: #000000
|
|
window.inactive.label.text.color: #000000
|
|
window.label.text.justify: center
|
|
|
|
# window button width and spacing
|
|
window.button.width: 26
|
|
window.button.height: 26
|
|
window.button.spacing: 0
|
|
|
|
# window button hover overlay
|
|
window.button.hover.bg.color: #80808020
|
|
window.button.hover.bg.corner-radius: 0
|
|
|
|
# window buttons
|
|
window.active.button.unpressed.image.color: #000000
|
|
window.inactive.button.unpressed.image.color: #000000
|
|
|
|
# window drop-shadows
|
|
window.active.shadow.size: 60
|
|
window.inactive.shadow.size: 40
|
|
window.active.shadow.color: #00000060
|
|
window.inactive.shadow.color: #00000040
|
|
|
|
# window bottom handle and grips
|
|
window.handle.width: 6
|
|
window.grip.width: 20
|
|
window.active.handle.bg: Solid
|
|
window.active.handle.bg.color: #a0a0a0
|
|
window.inactive.handle.bg: Solid
|
|
window.inactive.handle.bg.color: #c0c0c0
|
|
# Grips inherit from handle if not set explicitly
|
|
# window.active.grip.bg: Solid
|
|
# window.active.grip.bg.color: #a0a0a0
|
|
# window.inactive.grip.bg: Solid
|
|
# window.inactive.grip.bg.color: #c0c0c0
|
|
|
|
# Note that "menu", "iconify", "max", "close" buttons colors can be defined
|
|
# individually by inserting the type after the button node, for example:
|
|
#
|
|
# window.active.button.iconify.unpressed.image.color: #333333
|
|
|
|
# menu
|
|
menu.overlap.x: 0
|
|
menu.overlap.y: 0
|
|
menu.width.min: 20
|
|
menu.width.max: 200
|
|
menu.border.width: 1
|
|
menu.border.color: #aaaaaa
|
|
menu.items.bg.color: #fcfbfa
|
|
menu.items.text.color: #000000
|
|
menu.items.active.bg.color: #e1dedb
|
|
menu.items.active.text.color: #000000
|
|
menu.items.padding.x: 7
|
|
menu.items.padding.y: 4
|
|
menu.separator.width: 1
|
|
menu.separator.padding.width: 6
|
|
menu.separator.padding.height: 3
|
|
menu.separator.color: #888888
|
|
menu.title.bg.color: #589bda
|
|
menu.title.text.color: #ffffff
|
|
menu.title.text.justify: Center
|
|
|
|
# on screen display (window-cycle dialog)
|
|
osd.bg.color: #e1dedb
|
|
osd.border.color: #000000
|
|
osd.border.width: 1
|
|
osd.label.text.color: #000000
|
|
|
|
# width can be set as percent (of screen width)
|
|
# example 50% or 75% instead of 600, max 100%
|
|
osd.window-switcher.style-classic.width: 600
|
|
|
|
osd.window-switcher.style-classic.padding: 4
|
|
osd.window-switcher.style-classic.item.padding.x: 10
|
|
osd.window-switcher.style-classic.item.padding.y: 1
|
|
osd.window-switcher.style-classic.item.active.border.width: 2
|
|
osd.window-switcher.style-classic.item.active.border.color: #706f6d
|
|
osd.window-switcher.style-classic.item.active.bg.color: #bfbcba
|
|
# The icon size the same as the font size by default
|
|
# osd.window-switcher.style-classic.item.icon.size: 50
|
|
|
|
osd.window-switcher.style-thumbnail.width.max: 80%
|
|
osd.window-switcher.style-thumbnail.padding: 4
|
|
osd.window-switcher.style-thumbnail.item.width: 300
|
|
osd.window-switcher.style-thumbnail.item.height: 250
|
|
osd.window-switcher.style-thumbnail.item.padding: 10
|
|
osd.window-switcher.style-thumbnail.item.active.border.width: 2
|
|
osd.window-switcher.style-thumbnail.item.active.border.color: #706f6d
|
|
osd.window-switcher.style-thumbnail.item.active.bg.color: #bfbcba
|
|
osd.window-switcher.style-thumbnail.item.icon.size: 60
|
|
|
|
osd.window-switcher.preview.border.width: 1
|
|
osd.window-switcher.preview.border.color: #dddda6,#000000,#dddda6
|
|
|
|
osd.workspace-switcher.boxes.width: 20
|
|
osd.workspace-switcher.boxes.height: 20
|
|
osd.workspace-switcher.boxes.border.width: 2
|
|
|
|
# Default values for following options change depending on the rendering
|
|
# backend. For software-based renderers, *.bg.enabled is "no" and
|
|
# *.border.enabled is "yes" if not set. For hardware-based renderers,
|
|
# *.bg.enabled is "yes" and *.border.enabled is "no" if not set.
|
|
# Setting *.bg.enabled to "yes" for software-based renderer with translucent
|
|
# background color may severely impact performance.
|
|
#
|
|
# snapping.overlay.region.bg.enabled:
|
|
# snapping.overlay.edge.bg.enabled:
|
|
# snapping.overlay.region.border.enabled:
|
|
# snapping.overlay.edge.border.enabled:
|
|
|
|
snapping.overlay.region.bg.color: #8080b380
|
|
snapping.overlay.edge.bg.color: #8080b380
|
|
snapping.overlay.region.border.width: 1
|
|
snapping.overlay.edge.border.width: 1
|
|
snapping.overlay.region.border.color: #dddda6,#000000,#dddda6
|
|
snapping.overlay.edge.border.color: #dddda6,#000000,#dddda6
|