osd: support window switcher with thumbnails

The new-style window switcher can be enabled with
<windowSwitcher style="thumbnail">.

New theme entries:

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: #589bda
osd.window-switcher.style-thumbnail.item.active.bg.color: #c7e2fc
osd.window-switcher.style-thumbnail.item.icon.size: 60
This commit is contained in:
tokyo4j 2025-08-08 14:53:34 +09:00 committed by Johan Malm
parent 6e2805f692
commit 2e9292b7a3
13 changed files with 434 additions and 5 deletions

View file

@ -278,7 +278,7 @@ this is for compatibility with Openbox.
## WINDOW SWITCHER
```
<windowSwitcher show="yes" preview="yes" outlines="yes" allWorkspaces="no">
<windowSwitcher show="yes" style="classic" preview="yes" outlines="yes" allWorkspaces="no">
<fields>
<field content="icon" width="5%" />
<field content="desktop_entry_name" width="30%" />
@ -287,10 +287,14 @@ this is for compatibility with Openbox.
</windowSwitcher>
```
*<windowSwitcher show="" preview="" outlines="" allWorkspaces="">*
*<windowSwitcher show="" style="" preview="" outlines="" allWorkspaces="">*
*show* [yes|no] Draw the OnScreenDisplay when switching between
windows. Default is yes.
*style* [classic|thumbnail] Configures the style of the OnScreenDisplay.
"classic" displays window information like icons and titles in a vertical list.
"thumbnail" shows window thumbnail, icon and title in grids.
*preview* [yes|no] Preview the contents of the selected window when
switching between windows. Default is yes.
@ -302,7 +306,7 @@ this is for compatibility with Openbox.
are shown).
*<windowSwitcher><fields><field content="" width="%">*
Define window switcher fields.
Define window switcher fields when using *<windowSwitcher style="classic" />*.
*content* defines what the field shows and can be any of:

View file

@ -303,6 +303,10 @@ all are supported.
Text color of on-screen-display. Inherits
*window.active.label.text.color* if not set.
*osd.window-switcher.style-classic*
Theme for window switcher when using <windowSwitcher style="classic" />.
See below for details.
*osd.window-switcher.style-classic.width*
Width of window switcher in pixels. Width can also be a percentage of the
monitor width by adding '%' as suffix (e.g. 70%). Default is 600.
@ -328,6 +332,40 @@ all are supported.
If not set, the font size derived from <theme><font place="OnScreenDisplay">
is used.
*osd.window-switcher.style-thumbnail*
Theme for window switcher when using <windowSwitcher style="thumbnail" />.
See below for details.
*osd.window-switcher.style-thumbnail.width.max*
Maximum width of window switcher in pixels. Width can also be a percentage of
the monitor width by adding '%' as suffix (e.g. 70%). Default is 80%.
*osd.window-switcher.style-thumbnail.padding*
Padding of window switcher in pixels. This is the space between the
window-switcher border and its items. Default is 4.
*osd.window-switcher.style-thumbnail.item.width*
Width of window switcher items in pixels. Default is 300.
*osd.window-switcher.style-thumbnail.item.height*
Height of window switcher items in pixels. Default is 250.
*osd.window-switcher.style-thumbnail.item.padding*
Padding of window switcher items in pixels. This is the space between the
border around selected items and window thumbnail. Default is 2.
*osd.window-switcher.style-thumbnail.item.active.border.width*
Border width of selected window switcher items in pixels. Default is 2.
*osd.window-switcher.style-thumbnail.item.active.border.color*
Color of border around selected window switcher items. Default is #589bda.
*osd.window-switcher.style-thumbnail.item.active.bg.color*
Color of selected window switcher items. Default is #c7e2fc.
*osd.window-switcher.style-thumbnail.item.icon.size*
Size of window icons in window switcher items in pixels. Default is 60.
*osd.window-switcher.preview.border.width*
Border width of the outlines shown as the preview of the window selected
by window switcher. Inherits *osd.border.width* if not set.

View file

@ -75,7 +75,7 @@
</font>
</theme>
<windowSwitcher show="yes" preview="yes" outlines="yes" allWorkspaces="no">
<windowSwitcher show="yes" style="classic" preview="yes" outlines="yes" allWorkspaces="no">
<fields>
<field content="icon" width="5%" />
<field content="desktop_entry_name" width="30%" />

View file

@ -99,6 +99,17 @@ osd.window-switcher.style-classic.item.padding.y: 1
osd.window-switcher.style-classic.item.active.border.width: 2
# 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: #589bda
osd.window-switcher.style-thumbnail.item.active.bg.color: #c7e2fc
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