In order to reduce commit noise in the main labwc
repository, scope
is managed here.
A set of user & system requirements were documented early in the project
(initially on the wiki then in this file) to form a baseline against which
developers can:
define what is in-scope and out-of-scope
measure progress
record decisions
declare the intent of the project
manage expectations
produce proporitionate design solutions
This document also help users understand what the project is about and if it is
the sort of compositor they wish to use.
Acceptance criteria for each requirement is in accordance with openbox 3.6
specification unless other wise stated.
Requirements are categorised as follows:
A
: in-scope: "must have" for minimum viable product
B+
: in-scope: "should/could have" - likely to implemented at some point
B
: discretionary: if devs feel like it and benefits are greater than
cost (burden) of maintenance and complexity
C
: out-of-scope: not intended to be implemented
Stabilize current scope and fix issues and bugs. This is quite important.
We do not want to spend time on an expanding scope with new features until
the project is reliable at its current scope.
Implement Cat A
requirements (COMPLETE).
Implement Cat B+
requirements.
Review Cat B
requirements and try to demote as many as possible to C
The graph below shows the current status of cat A and B requirements.
Requirements are organised into the sections listed below.
The first digit in the reference number relates to the section.
Sections 2-7 refer to the the openbox 3.6 specification. For further details
read the respective openbox wiki page.
General and Protocols
Configuration http://openbox.org/wiki/Help:Configuration
Bindings http://openbox.org/wiki/Help:Bindings
Global Actions http://openbox.org/wiki/Help:Actions
Window Actions http://openbox.org/wiki/Help:Actions
Theme http://openbox.org/wiki/Help:Themes
Menus http://openbox.org/wiki/Help:Menus
Extra
The following filtered views are auto-generated based on the tables in the
Requirements section below.
Cat
Status
Reference
Category
Description
Comment
A
complete
1.1.1
general
Optionally support Xwayland
A
complete
1.1.2
general
Parse <config-dir>/rc.xml
A
complete
1.1.3
general
Parse <config-dir>/environment
A
complete
1.1.4
general
Parse <config-dir>/autostart
A
complete
1.1.5
general
Parse <config-dir>/menu.xml
A
complete
1.1.6
general
Parse openbox themes files and associated xbm icons
A
complete
1.1.7
general
Catch SIGHUP to re-load config file and theme
A
complete
1.1.8
general
Support both CSD and SSD
A
complete
1.1.9
general
Support maximize, iconify, close buttons
A
complete
1.1.10
general
Support damage tracking to reduce CPU usage
A
complete
1.1.11
general
Support HiDPI
A
complete
1.1.12
general
Support on-screen display (osd)
A
complete
1.1.13
general
Support libinput configuration
A
complete
1.1.14
general
Support drag-n-drop
A
complete
1.1.15
general
Support input method editors (IME)
B
complete
1.1.16
general
Support --session
option
Cat
Status
Reference
Category
Description
Comment
B
complete
1.2.1
wayland-protocol
presentation-time
B
complete
1.2.2
wayland-protocol
viewporter
A
complete
1.2.3
wayland-protocol
xdg-shell-v3
B
complete
1.2.4
wayland-protocol
fullscreen-shell-unstable-v1
B
complete
1.2.5
wayland-protocol
idle-inhibit-unstable-v1
B
1.2.6.1
wayland-protocol
input-method-unstable-v1
B
complete
1.2.6.2
wayland-protocol
input-method-unstable-v2
B
1.2.7
wayland-protocol
input-timestamps-unstable-v1
B
1.2.8
wayland-protocol
keyboard-shortcuts-inhibit-unstable-v1
This is controversial 1
B
1.2.9
wayland-protocol
linux-dmabuf-unstable-v1
B
1.2.10
wayland-protocol
linux-explicit-synchronization-unstable-v1
B
complete
1.2.11
wayland-protocol
pointer-constraints-unstable-v1
B
1.2.12
wayland-protocol
pointer-gestures-unstable-v1
B
complete
1.2.13
wayland-protocol
primary-selection-unstable-v1
B
complete
1.2.14
wayland-protocol
relative-pointer-unstable-v1
B
complete
1.2.15
wayland-protocol
tablet-v2-manager
B
complete
1.2.16
wayland-protocol
text-input-unstable-v3
B
complete
1.2.17
wayland-protocol
xdg-decoration-unstable-v1
B
1.2.18
wayland-protocol
xdg-foreign-unstable-v2
B
complete
1.2.19
wayland-protocol
xdg-output-unstable-v1
B
1.2.20
wayland-protocol
xwayland-keyboard-grab-unstable-v1
B
complete
1.2.21
wayland-protocol
drm-lease-v1
B
complete
1.2.22
wayland-protocol
ext-session-lock-v1
This is more secure 2
B
complete
1.2.23
wayland-protocol
xdg-activation-v1
B
complete
1.2.24
wayland-protocol
single-pixel-buffer-v1
B
complete
1.2.25
wayland-protocol
cursor-shape-v1
B
complete
1.2.26
wayland-protocol
fractional-scale-v1
B
complete
1.2.27
wayland-protocol
tearing-control-manager-v1
B
1.2.28
wayland-protocol
content-type-v1
B
complete
1.2.29
wayland-protocol
xwayland-shell-v1
B
complete
1.2.30
wayland-protocol
security-context-v1
Note: initial support only
B
1.2.31
wayland-protocol
B
1.2.32
wayland-protocol
Cat
Status
Reference
Category
Description
Comment
B
complete
1.3.1
wlr-protocol
wlr-data-control-unstable-v1
B
complete
1.3.2
wlr-protocol
wlr-export-dmabuf-unstable-v1
A
complete
1.3.3
wlr-protocol
wlr-foreign-toplevel-management-unstable-v1
B
complete
1.3.4
wlr-protocol
wlr-gamma-control-unstable-v1
B
complete
1.3.5
wlr-protocol
wlr-input-inhibitor-unstable-v1
A
complete
1.3.6
wlr-protocol
wlr-layer-shell-unstable-v1
A
complete
1.3.7
wlr-protocol
wlr-output-management-unstable-v1
B
complete
1.3.8
wlr-protocol
wlr-output-power-management-unstable-v1
B
complete
1.3.9
wlr-protocol
wlr-screencopy-unstable-v1
B
complete
1.3.10
wlr-protocol
wlr-virtual-pointer-unstable-v1
B
complete
1.3.11
wlr-protocol
kde-server-decoration
xdg-decoration is preferable, but we support this until GTK move across
2.1 Configuration - Resistance
Cat
Status
Reference
Category
Description
Comment
B
2.1.1
resistance
strength
If we implement, consider a better name
A
complete
2.1.2
resistance
screenEdgeStrength
DEVIATION Can be negative
B
complete
2.1.3
resistance
windowEdgeStrength
EXTRA
2.2 Configuration - Focus
Cat
Status
Reference
Category
Description
Comment
C
2.2.1
focus
focusNew
C
2.2.2
focus
focusLast
B
complete
2.2.3
focus
followMouse
C
2.2.4
focus
focusDelay
B
complete
2.2.5
focus
followMouseRequiresMovement
DEVIATION It is called underMouse
in Openbox
B
complete
2.2.6
focus
raiseOnFocus
2.3 Configuration - Placement
<placement >
<policy >center|automatic|cursor</policy >
</placement >
Cat
Status
Reference
Category
Description
Comment
B
complete
2.3.1
placement
policy
DEVIATION: automatic is similar to smart
C
2.3.2
placement
center
Covered by policy
2.4 Configuration - Theme
Cat
Status
Reference
Category
Description
Comment
A
complete
2.4.1
theme
name
B+
2.4.2
theme
titleLayout
B
complete
2.4.4
theme
keepBorder
DEVIATION: gives ToggleDeocration 3 states
C
2.4.5
theme
animateIconify
A
complete
2.4.6
theme
<font place="ActiveWindow">
B
complete
2.4.7
theme
<font place="InactiveWindow">
B
2.4.8
theme
<font place="MenuHeader">
B
complete
2.4.9
theme
<font place="MenuItem">
B
complete
2.4.10
theme
<font place="OnScreenDisplay">
B
complete
2.4.11
theme
font.name
B
complete
2.4.12
theme
font.size
B
complete
2.4.13
theme
font.weight
B
complete
2.4.14
theme
font.slant
B
complete
2.4.15
theme
dropShadows
EXTRA
2.5 Configuration - Desktop
The solution shall provide simple workspace setup as follows:
<desktops number="">
<popupTime>1000</popupTime>
<names>
<name>foo</name>
<name>bar</name>
</names>
<prefix/>
<desktops>
UNDECIDED: Workspace control by clients, for example panels.
It depends on what happens with:
Cat
Status
Reference
Category
Description
Comment
B
complete
2.5.1
desktop
number
C
2.5.2
desktop
firstDesk
Use first <name>
B
complete
2.5.3
desktop
popupTime
B
complete
2.5.4
desktop
names
B
complete
2.5.5
desktop
prefix
EXTRA
2.6 Configuration - Resize
<resize>
<drawContents>no</drawContents>
<popupShow>Always</popupShow>
<popupPosition>Fixed</popupPosition>
<popupFixedposition>
<x>400</x>
<y>center</y>
</popupFixedPosition>
</resize>
Cat
Status
Reference
Category
Description
Comment
B
complete
2.6.1
resize
drawContents
B
complete
2.6.2
resize
popupShow
B
2.6.3
resize
popupPosition
B
2.6.4
resize
popupFixedposition
2.7 Configuration - Window Rules
Note: In Openbox this section is called <applications>
(per window settings)
and covers the following settings: decor
shade
position
size
focus
desktop
layer
iconic
skip_pager
skip_taskbar
fullscreen
maximized
<windowRules>
<windowRule identifier="alacritty">
<action name="Maximize"/>
</windowRule>
<windowRule identifier="foo*" serverDecoration="yes|no"/>
</windowRules>
Cat
Status
Reference
Category
Description
Comment
B
complete
2.7.1
window rules
windowRule
EXTRA
B
complete
2.7.2.1
window rule criteria
windowRule.identifier
EXTRA
B
complete
2.7.2.2
window rule criteria
windowRule.title
EXTRA
B
complete
2.7.2.3
window rule criteria
windowRule.matchOnce
EXTRA
B
complete
2.7.3.1
window rule property
windowRule.serverDecoration
EXTRA
B
complete
2.7.3.2
window rule property
windowRule.skipTaskbar
EXTRA
B
complete
2.7.3.3
window rule property
windowRule.skipWindowSwitcher
EXTRA
B
complete
2.7.3.4
window rule property
windowRule.ignoreFocusRequest
EXTRA
B
complete
2.7.3.5
window rule property
windowRule.fixedPosition
EXTRA
B
complete
2.7.3.6
window rule property
windowRule.ignoreConfigureRequest
EXTRA
B
complete
2.7.4
window rule type
windowRule.type
EXTRA
2.8 Configuration - Keyboard
Cat
Status
Reference
Category
Description
Comment
C
2.8.1
keyboard
rebindOnMappingNotify
C
2.8.2
keyboard
chainQuitKey
A
complete
2.8.3
keyboard
keybind
See section 3.1
B
complete
2.8.4
keyboard
numlock
EXTRA
B
complete
2.8.5
keyboard
layoutScope
EXTRA
2.9 Configuration - Mouse
Cat
Status
Reference
Category
Description
Comment
C
2.9.1
mouse
dragThreshold
A
complete
2.9.2
mouse
doubleClickTime
C
2.9.3
mouse
screenEdgeWarpTime
A
complete
2.9.3
mouse
context
B
complete
2.9.4
mouse
scrollFactor
EXTRA
2.9a Configuration - Touch
<touch deviceName =" " mapToOutput =" " />
Cat
Status
Reference
Category
Description
Comment
B
complete
2.9a.1
touch
deviceName
B
complete
2.9a.2
touch
mapToOutput
2.9b Configuration - Tablet
<tablet mapToOutput =" " rotate =" 0" >
<area top =" 0.0" left =" 0.0" width =" 0.0" height =" 0.0" />
<map button =" Tip" to =" Left" />
<map button =" Stylus" to =" Right" />
<map button =" Stylus2" to =" Middle" />
</tablet >
Cat
Status
Reference
Category
Description
Comment
B
complete
2.9b.1
tablet
mapToOutput
B
complete
2.9b.2
tablet
rotate
B
complete
2.9b.3
tablet
area
B
complete
2.9b.4
tablet
map
2.10 Configuration - Margins
<margin top="" bottom="" left="" right="" output="" />
Cat
Status
Reference
Category
Description
Comment
B
complete
2.10.1
margins
<margin>
2.11 Configuration - Menu
Cat
Status
Reference
Category
Description
Comment
B
complete
2.11.1
menu
ignoreButtonReleasePeriod
DEVIATION: called hideDelay
in openbox
C
2.11.2
menu
middle
B+
2.11.3
menu
submenuShowDelay
C
2.11.4
menu
applicationIcons
C
2.11.5
menu
manageDesktops
B
2.11.6
menu
file
TODO: is this supported already?
2.12 Configuration - Dock
Cat
Status
Reference
Category
Description
Comment
C
2.12.1
dock
2.13 Configuration - Core
The <core>
section is additional to openbox 3.6 spec.
Cat
Status
Reference
Category
Description
Comment
B
complete
2.13.1
core
decoration
EXTRA
B
complete
2.13.2
core
gap
EXTRA
B
complete
2.13.3
core
adaptiveSync
EXTRA
B
complete
2.13.4
core
reuseOutputMode
EXTRA
B
complete
2.13.5
core
xwaylandPersistence
EXTRA
2.14 Configuration - Window Switcher
The window switcher can be cycled in reverse using shift-tab or up/left
arrow whilst holding alt.
Cat
Status
Reference
Category
Description
Comment
B
complete
2.14.1
window switcher
show
EXTRA
B
complete
2.14.2
window switcher
preview
EXTRA
B
complete
2.14.3
window switcher
outlines
EXTRA
B
complete
2.14.4.1
window switcher
fields.field.content
EXTRA
B
complete
2.14.4.2
window switcher
fields.field.width
EXTRA
B
complete
2.14.5
window switcher
allWorkspaces
EXTRA
2.15 Configuration - Libinput
Cat
Status
Reference
Category
Description
Comment
B
complete
3.6.1
libinput
naturalScroll
EXTRA
B
complete
3.6.2
libinput
leftHanded
EXTRA
B
complete
3.6.3
libinput
pointerSpeed
EXTRA
B
complete
3.6.4
libinput
accelProfile
EXTRA
B
complete
3.6.5
libinput
tap
EXTRA
B
complete
3.6.6
libinput
tapButtonMap
EXTRA
B
complete
3.6.7
libinput
tapAndDrag
EXTRA
B
complete
3.6.8
libinput
dragLock
EXTRA
B
complete
3.6.9
libinput
middleEmulation
EXTRA
B
complete
3.6.10
libinput
disableWhiteTyping
EXTRA
B
complete
3.6.11
libinput
clickMethod
EXTRA
B
complete
3.6.12
libinput
sendEventsMode
EXTRA
B
complete
3.6.13
libinput
calibrationMatrix
EXTRA
3.1 Configuration - Keyboard Keybind
Cat
Status
Reference
Category
Description
Comment
A
complete
3.1.1
keyboard keybind
key
A
complete
3.1.2
keyboard keybind
action.name
A
complete
3.1.3
keyboard keybind
action.menu
A
complete
3.1.4
keyboard keybind
Support modifier keys
C
3.1.5
keyboard keybind
Support key chains
B
complete
3.1.6
keyboard binding
default
EXTRA
B
complete
3.1.7
keyboard binding
layoutDependent
EXTRA
B
complete
3.1.8
keyboard binding
onRelease
EXTRA
3.2 Configuration - Mouse Binding
Cat
Status
Reference
Category
Description
Comment
A
complete
3.2.1
mouse binding
context.name
A
complete
3.2.2
mouse binding
mousebind.button
A
complete
3.2.3
mouse binding
mousebind.action
B
complete
3.2.4
mouse binding
default
EXTRA
3.3 Configuration - Mouse Context
Cat
Status
Reference
Category
Description
Comment
B
complete
3.3.1
mouse context
Frame
B
complete
3.3.2
mouse context
Client
B
complete
3.3.3
mouse context
Desktop
B
complete
3.3.4
mouse context
Root
DEVIATION 3
A
complete
3.3.5
mouse context
Titlebar
B
complete
3.3.6
mouse context
Top
B
complete
3.3.7
mouse context
Bottom
B
complete
3.3.8
mouse context
Left
B
complete
3.3.9
mouse context
Right
B
complete
3.3.10
mouse context
TLCorner
B
complete
3.3.11
mouse context
TRCorner
B
complete
3.3.12
mouse context
BLCorner
B
complete
3.3.13
mouse context
BRCorner
B
3.3.14
mouse context
Icon
A
complete
3.3.15
mouse context
Iconfiy
A
complete
3.3.16
mouse context
Maximize
A
complete
3.3.17
mouse context
Close
C
3.3.18
mouse context
AllDesktops
C
3.3.19
mouse context
Shade
C
3.3.20
mouse context
Moveresize
B
complete
3.3.21
mouse context
Title
EXTRA
3.4 Configuration - Mouse Button
Cat
Status
Reference
Category
Description
Comment
A
complete
3.4.1
mouse button
Left
A
complete
3.4.1
mouse button
Right
B
3.4.1
mouse button
Middle
B
complete
3.4.1
mouse button
Up
(scroll)
B
complete
3.4.1
mouse button
Down
(scroll)
3.5 Configuration - Mouse Event
Cat
Status
Reference
Category
Description
Comment
A
complete
3.5.1
mouse event
Press
A
complete
3.5.2
mouse event
Click
A
complete
3.5.3
mouse event
DoubleClick
B
3.5.4
mouse event
Release
B
complete
3.5.5
mouse event
Drag
B
complete
3.5.6
mouse event
Scroll
DEVIATION: Scroll is used instead of Click for mouse-buttons Up/Down
Cat
Status
Reference
Category
Description
Comment
A
complete
4.1
global action
Execute
A
complete
4.2.1
global action
ShowMenu
B
complete
4.2.2
global action
ShowMenu.menu
B
complete
4.2.3
global action
ShowMenu.atCursor
EXTRA
A
complete
4.3
global action
NextWindow
C
4.4
global action
PreviousWindow
B
4.5
global action
DirectionalCycleWindows
B
4.6
global action
DirectionalTargetWindows
B
complete
4.7
global action
GoToDesktop
B
complete
4.7.1
global action
GoToDesktop.to
B
complete
4.7.1.1
global action
GoToDesktop.to::last
B
complete
4.7.1.2
global action
GoToDesktop.to::right
B
complete
4.7.1.3
global action
GoToDesktop.to::left
C
4.7.1.4
global action
GoToDesktop.to::current
C
4.7.1.5
global action
GoToDesktop.to::next
C
4.7.1.6
global action
GoToDesktop.to::previous
C
4.7.1.7
global action
GoToDesktop.to::up
C
4.7.1.8
global action
GoToDesktop.to::down
C
4.7.1.9
global action
GoToDesktop.to::north
C
4.7.1.10
global action
GoToDesktop.to::south
C
4.7.1.11
global action
GoToDesktop.to::west
C
4.7.1.12
global action
GoToDesktop.to::east
B
complete
4.7.2
global action
GoToDesktop.wrap
B
4.8
global action
AddDesktop
B
4.9
global action
RemoveDesktop
B
4.10
global action
ToggleShowDesktop
C
4.11
global action
ToggleDockAutohide
A
complete
4.12
global action
Reconfigure
C
4.13
global action
Restart
A
complete
4.14
global action
Exit
C
4.15
global action
SessionLogout
B
complete
4.16
global action
Debug
EXTRA
B
complete
4.17
global action
None
EXTRA Removes other actions within mouse bindings
B
complete
4.18
global action
Kill
EXTRA Send SIGTERM
B
complete
4.19
global action
FocusOutput
EXTRA
B
complete
4.20
global action
ToggleKeybinds
EXTRA
B
complete
4.21
global action
VirtualOutputAdd
EXTRA
B
complete
4.22
global action
VirtualOutputRemove
EXTRA
B
complete
4.23
global action
ToggleTabletMouseEmulation
EXTRA
B
complete
4.24
global action
ZoomIn
EXTRA
B
complete
4.25
global action
ZoomOut
EXTRA
Cat
Status
Reference
Category
Description
Comment
A
complete
5.1
window action
Focus
A
complete
5.2
window action
Raise
B
complete
5.3
window action
Lower
B
5.4
window action
RaiseLower
B
complete
5.5
window action
Unfocus
B
5.6
window action
FocusToBottom
A
complete
5.7
window action
Iconify
A
complete
5.8
window action
Close
B
complete
5.9
window action
ToggleShade
B
complete
5.10
window action
Shade
B
complete
5.11
window action
Unshade
B
complete
5.12
window action
ToggleOmnipresent
aka sticky
A
complete
5.13
window action
ToggleMaximize
B
5.13.1
window action
ToggleMaximize.direction
B
complete
5.14
window action
Maximize
B
5.14.1
window action
Maximize.direction
B
complete
5.15
window action
Unmaximize
B
5.15.1
window action
Unmaximize.direction
B
complete
5.16
window action
ToggleFullscreen
B
complete
5.17.1
window action
ToggleDecorations
B
complete
5.17.2
window action
SetDecorations
EXTRA
B
5.18
window action
Decorate
B
5.19
window action
Undecorate
B
complete
5.20
window action
SendToDesktop
B
complete
5.20.1
window action
SendToDesktop.to
EXTRA: support value 'current'
B
complete
5.20.2
window action
SendToDesktop.follow
B
complete
5.20.3
window action
SendToDesktop.wrap
A
complete
5.21
window action
Move
A
complete
5.22
window action
Resize
B
complete
5.23.1
window action
MoveTo
DEVIATION: MoveResizeTo
in Openbox
B
complete
5.23.2
window action
ResizeTo
B
complete
5.24
window action
MoveRelative
B
complete
5.25
window action
ResizeRelative
B
complete
5.26
window action
MoveToEdge
B
complete
5.26.1
window action
MoveToEdge.snapWindows
EXTRA
B
complete
5.27
window action
GrowToEdge
B
5.28
window action
GrowToFill
B
complete
5.29
window action
ShrinkToEdge
B
complete
5.30
window action
If
B
complete
5.31.1
window action
ForEach
B
complete
5.31.2
window action
ForEach.none
EXTRA
C
5.32
window action
Stop
B
complete
5.33
window action
ToggleAlwaysOnTop
B
complete
5.34
window action
ToggleAlwaysOnBottom
C
5.35
window action
SendToLayer
B
complete
5.36
window action
SnapToEdge
EXTRA
B
complete
5.37
window action
SnapToRegion
EXTRA
B
complete
5.38
window action
MoveToCursor
EXTRA
B
complete
5.39
window action
MoveToOutput
EXTRA
B
complete
5.40
window action
AutoPlace
EXTRA
Cat
Status
Reference
Category
Description
Comment
A
complete
6.1.1
geometry
border.width
B
6.1.2
geometry
menu.border.width
A
complete
6.1.3
geometry
menu.separator.width
B
complete
6.1.4
geometry
menu.separator.padding.width
B
complete
6.1.5
geometry
menu.separator.padding.height
A
complete
6.1.6
geometry
osd.border.width
C
6.1.7
geometry
window.client.padding.width
No need to pad between client surface and title/handle/border
C
6.1.8
geometry
window.client.padding.height
Ditto
C
6.1.9
geometry
window.handle.width
Handle not supported
B
6.1.10
geometry
padding.width
B
complete
6.1.11
geometry
padding.height
B
complete
6.1.11.1
geometry
titlebar.height
EXTRA
B
complete
6.1.12
geometry
menu.overlap.x
B
complete
6.1.13
geometry
menu.overlap.y
B
6.1.14
geometry
menu.overlap
B
complete
6.1.15
geometry
menu.width.min
EXTRA
B
complete
6.1.16
geometry
menu.width.max
EXTRA
B
complete
6.1.17
geometry
menu.items.padding.x
EXTRA
B
complete
6.1.18
geometry
menu.items.padding.y
EXTRA
B
complete
6.1.19.1
geometry
osd.window-switcher.width
EXTRA
B
complete
6.1.19.2
geometry
osd.window-switcher.item.padding.x
EXTRA
B
complete
6.1.19.3
geometry
osd.window-switcher.item.padding.y
EXTRA
B
complete
6.1.19.4
geometry
osd.window-switcher.padding
EXTRA
B
complete
6.1.19.5
geometry
osd.window-switcher.item.active.border.width
EXTRA
B
complete
6.1.20.1
geometry
osd.workspace-switcher.boxes.width
EXTRA
B
complete
6.1.20.2
geometry
osd.workspace-switcher.boxes.height
EXTRA
6.2 Theme - Border Colors
Cat
Status
Reference
Category
Description
Comment
A
complete
6.2.1
border colors
window.active.border.color
B
6.2.2
border colors
window.active.title.separator.color
A
complete
6.2.3
border colors
window.inactive.border.color
B
6.2.4
border colors
window.inactive.title.separator.color
A
complete
6.2.5
border colors
border.color
B
6.2.6
border colors
window.active.client.color
B
6.2.7
border colors
window.inactive.client.color
B
6.2.8
border colors
menu.border.color
A
complete
6.2.9
border colors
osd.border.color
6.3 Theme - Titlebar Colors
Cat
Status
Reference
Category
Description
Comment
A
complete
6.3.1
titlebar colors
window.active.label.text.color
A
complete
6.3.2
titlebar colors
window.inactive.label.text.color
A
complete
6.3.3
titlebar colors
window.active.button.unpressed.image.color
B
6.3.4
titlebar colors
window.active.button.pressed.image.color
B
6.3.5
titlebar colors
window.active.button.disabled.image.color
B
6.3.6
titlebar colors
window.active.button.hover.image.color
B
6.3.7
titlebar colors
window.active.button.toggled.unpressed.image.color
B
6.3.8
titlebar colors
window.active.button.toggled.pressed.image.color
B
6.3.9
titlebar colors
window.active.button.toggled.hover.image.color
B
6.3.10
titlebar colors
window.active.button.toggled.image.color
A
complete
6.3.11
titlebar colors
window.inactive.button.unpressed.image.color
B
6.3.12
titlebar colors
window.inactive.button.pressed.image.color
B
6.3.13
titlebar colors
window.inactive.button.disabled.image.color
B
6.3.14
titlebar colors
window.inactive.button.hover.image.color
B
6.3.15
titlebar colors
window.inactive.button.toggled.unpressed.image.color
B
6.3.16
titlebar colors
window.inactive.button.toggled.pressed.image.color
B
6.3.17
titlebar colors
window.inactive.button.toggled.hover.image.color
B
6.3.18
titlebar colors
window.inactive.button.toggled.image.color
6.4 Theme - Active Window Textures
Cat
Status
Reference
Category
Description
Comment
A
complete
6.4.1
active window textures
window.active.title.bg
B
6.4.2
active window textures
window.active.label.bg
C
6.4.3
active window textures
window.active.handle.bg
We don't support handle.
B
6.4.4
active window textures
window.active.grip.bg
B
complete
6.4.5
active window textures
window.active.shadow.size
EXTRA
B
complete
6.4.6
active window textures
window.active.shadow.color
EXTRA
6.5 Theme - Inactive Window Textures
Same as 6.4, just replace active
with inactive
6.6 Theme - Active Window Button Textures
Cat
Status
Reference
Category
Description
Comment
B
6.6.1
active window button textures
window.active.button.unpressed.bg
B
6.6.2
active window button textures
window.active.button.pressed.bg
B
6.6.3
active window button textures
window.active.button.hover.bg
B
6.6.4
active window button textures
window.active.button.disabled.bg
B
6.6.5
active window button textures
window.active.button.toggled.unpressed.bg
B
6.6.6
active window button textures
window.active.button.toggled.pressed.bg
B
6.6.7
active window button textures
window.active.button.toggled.hover.bg
B
6.6.8
active window button textures
window.active.button.toggled.bg
6.7 Theme - Inactive Window Button Textures
Cat
Status
Reference
Category
Description
Comment
B
6.7.1
inactive window button textures
window.inactive.button.unpressed.bg
B
6.7.2
inactive window button textures
window.inactive.button.pressed.bg
B
6.7.3
inactive window button textures
window.inactive.button.hover.bg
B
6.7.4
inactive window button textures
window.inactive.button.disabled.bg
B
6.7.5
inactive window button textures
window.inactive.button.toggled.unpressed.bg
B
6.7.6
inactive window button textures
window.inactive.button.toggled.pressed.bg
B
6.7.7
inactive window button textures
window.inactive.button.toggled.hover.bg
B
6.7.8
inactive window button textures
window.inactive.button.toggled.bg
6.8 Theme - Menu Colors
Cat
Status
Reference
Category
Description
Comment
B
6.8.1
menu colors
menu.title.text.color
A
complete
6.8.2
menu colors
menu.items.text.color
B
6.8.3
menu colors
menu.items.disabled.text.color
A
complete
6.8.4
menu colors
menu.items.active.text.color
B
6.8.5
menu colors
menu.items.active.disabled.text.color
A
complete
6.8.6
menu colors
menu.separator.color
6.9 Theme - Menu Textures
Cat
Status
Reference
Category
Description
Comment
A
complete
6.9.1
menu textures
menu.items.bg
A
complete
6.9.2
menu textures
menu.items.active.bg
B
6.9.3
menu textures
menu.title.bg
6.10 Theme - On-Screen-Display Textures
Cat
Status
Reference
Category
Description
Comment
A
complete
6.10.1
osd textures
osd.bg
we only set the color
C
6.10.2
osd textures
osd.label.bg
B
6.10.3
osd textures
osd.hilight.bg
for desktop osd only
B
6.10.4
osd textures
osd.unhilight.bg
for desktop osd only
6.11 Theme - On-Screen-Display Colors
Cat
Status
Reference
Category
Description
Comment
A
complete
6.11.1
osd colors
osd.label.text.color
B
6.11.2
osd colors
osd.hilight.bg.color
for desktop osd only
B
6.11.3
osd colors
osd.unhilight.bg.color
for desktop osd only
6.12 Theme - Text Justification
Cat
Status
Reference
Category
Description
Comment
B
complete
6.12.1
text justification
window.label.text.justify
B
6.12.2
text justification
menu.title.text.justify
6.13 Theme - Text Shadows
Cat
Status
Reference
Category
Description
Comment
C
6.13.1
text shadows
window.active.label.text.font
C
6.13.2
text shadows
window.inactive.label.text.font
C
6.13.3
text shadows
menu.items.font
C
6.13.4
text shadows
menu.title.text.font
C
6.13.5
text shadows
osd.label.text.font
Not yet supported.
6.15 Theme - Button Images
Parse svg, png and xbm icons.
The following are referred to as 'base buttons': max
, max_toggled
,
iconify
, close
, desk
, desk_toggled
, shade
, shade_toggled
,
bullet
and menu
.
In addition to the base buttons, the following variants exist:
_hover
, _pressed
and _disabled
Cat
Status
Reference
Category
Description
Comment
A
complete
6.15.1.1
theme button base
max.xbm
B
complete
6.15.1.2
theme button base
max_toggled.xbm
A
complete
6.15.1.3
theme button base
iconify.xbm
A
complete
6.15.1.4
theme button base
close.xbm
C
6.15.1.5
theme button base
desk.xbm
C
6.15.1.6
theme button base
desk_toggled.xbm
C
6.15.1.7
theme button base
shade.xbm
C
6.15.1.8
theme button base
shade_toggled.xbm
B
6.15.1.9
theme button base
bullet.xbm
B
complete
6.15.1.1
theme button base
menu.xbm
EXTRA
B
complete
6.15.2.1
theme button variant
_hover
B
6.15.2.2
theme button variant
_pressed
B
6.15.2.3
theme button variant
_disabled
B+
complete
6.15.3
theme button png
Support png buttons
EXTRA
B+
complete
6.15.4
theme button svg
Support svg buttons
EXTRA
6.16 Theme - Window Switcher
Cat
Status
Reference
Category
Description
Comment
B
complete
6.16.1
text window switcher
osd.window-switcher.width
EXTRA
B
complete
6.16.2
text window switcher
osd.window-switcher.padding
EXTRA
B
complete
6.16.3
text window switcher
osd.window-switcher.item.padding.x
EXTRA
B
complete
6.16.4
text window switcher
osd.window-switcher.item.padding.y
EXTRA
B
complete
6.16.5
text window switcher
osd.window-switcher.item.active.border.width
EXTRA
B
complete
6.16.6
text window switcher
osd.window-switcher.preview.border.width
EXTRA
B
complete
6.16.7
text window switcher
osd.window-switcher.preview.border.color
EXTRA
B
complete
6.16.8
text window switcher
osd.window-switcher.preview.boxes.width
EXTRA
B
complete
6.16.9
text window switcher
osd.window-switcher.preview.boxes.height
EXTRA
7 Menus
Cat
Status
Reference
Category
Description
Comment
B
complete
7.0.1
menu general
Parse menu.xml in accordance with Openbox 3.6 spec
B
complete
7.0.2
menu general
Handle pointer input
B+
complete
7.0.3
menu general
Handle keyboard input
A
complete
7.1.1
menu syntax general
id
B
complete
7.1.2
menu syntax general
label
C
7.1.3
menu syntax general
icon
B+
complete
7.1.4
menu syntax general
execute
Pipe-menus
C
7.1.5
menu syntax general
Menu keyboard shortcuts
A
complete
7.2.1
menu syntax item
label
C
7.2.2
menu syntax item
icon
A
complete
7.2.3
menu syntax item
action
A
complete
7.3.1
menu syntax separator
<separator />
For separator line only
B
7.3.2
menu syntax separator
<separator label="" />
For separator with text
8.1 Extra - General
Server-side-decoration: Make rounded corners square on maximize.
Server-side-decoration: Disable border on maximize
Cat
Status
Reference
Category
Description
Comment
A
complete
8.1.1
extra
Support rounded top window corners
rc.xml <theme><cornerRadius>
B
complete
8.2.1
extra
<snapping>
B
complete
8.2.2
extra
<snapping><range>
B
complete
8.2.3
extra
<snapping><topMaximize>
B
complete
8.2.4
extra
<snapping><notifyClient>
B
complete
8.2.5
extra
<snapping><overlay>
Provide a means of specifying regions as a percentage of output geometry as
follows:
<regions>
<region name="top-left" x="0%" y="0%" width="50%" height="50%" />
</regions>
The compositor shall support the following with respect to defined regions:
Cat
Status
Reference
Category
Description
Comment
B
complete
9.1.1
Regions
<regions><region>
handle
: The window handle is the piece of decorations on the bottom of windows
IPC stands for inter-process communication and is important in building a
complete desktop environment.
labwc
only understands the Wayland protocol. It cannot be controlled with
dbus, sway/i3-ipc or other IPC technology.
The labwc
devs do not intend to implement any custom IPC or Wayland
protocols, even if it's sometimes tempting to solve a short term problems.
So, IPC will only be through wayland-protocols and wlr-protocols ;
and SIGHUP if you want to count that.
The reason for this is that we believe that custom IPCs and Wayland
protocols create a fragmentation that hinders general Wayland adoption.
Where current protocols are not sufficient, we would rather work with
upstream and the wider eco-system to plug any gaps.
See issues #128, #190
Appendix C - Configuration Syntax
Occasionally we receive requests to support other configuration languages
and syntaxes. This is out-of-scope.
If this is high priority for anyone, I suggest helping to achieve prioirty
one and two; then split labwc
in a wlstem library and a compositor.
At this point new compositors with alternative config files should be easy
to implement.