diff --git a/src/faq.md b/src/faq.md index ab53986..68033d7 100644 --- a/src/faq.md +++ b/src/faq.md @@ -3,10 +3,22 @@ 1. [Keybinds](#keybinds) 1. [Unset Keybinds](#unset-keybinds) 2. [Common Keybinds](#common-keybinds) + 3. [Keybind Forwarding](#keybind-forwarding) 2. [Theme](#theme) 1. [Server Side Decoration](#server-side-decoration) 3. [Mouse and Trackpads](#mouse-and-trackpads) 1. [Libinput](#libinput) + 2. [Mousebinds](#mousebinds) + 3. [Cursor](#cursor) +4. [XML](#xml) + 1. [XML Nodenames](#xml-nodenames) +5. [Scripting](#scripting) + 1. [Run or Raise](#run-or-raise) +6. [Environment Variables](#environment-variables) +7. [Nested XWayland](#nested-xwayland) +8. [Hardware](#hardware) + 1. [Nvidia](#nvidia) + 2. [Laptop Lid](#laptop-lid) # 1. Keybinds {#keybinds} @@ -66,18 +78,49 @@ In true `sway` style: ``` +## 1.3 Keybind Forwarding {#keybind-forwarding} + +The [ToggleKeybinds] action allows better control of Virtual Machines, VNC +clients, nested compositors or similar. + +For example, to make alt-tab work in a nested compositor add the code below to +`~/.config/labwc/rc.xml` and then press F12 to disable all keybinds in the +parent compositor and thereby forward them to the nested instance. + +``` + + + +``` + +[ToggleKeybinds]: https://labwc.github.io/labwc-actions.5.html#entry_action_name=togglekeybinds + # 2. Theme {#theme} ## 2.1 Server Side Decoration {#server-side-decoration} ### Q: Is it possible to completely remove windows' title-bars? -Yes. Action `ToggleDecoration`, but it removes borders too. +Yes. + +Action `SetDecorations` can be used for this. This action can be used with +key/mousebinds or with window rules like this: + +``` + + + + + +``` + +With window rules it can be achieve more simply as in the example below, but +that will remove borders too: ``` - - - + + + ``` ### Q: I'd like to be able to remove the client-menu button. How can this be done? @@ -97,7 +140,7 @@ window.inactive.button.menu.unpressed.image.color: #000000 0 Not yet implemented. -## 3.2 Mousebinds +## 3.2 Mousebinds {#mousebinds} ### Q: I'm used to MS Windows and would like all window to unfocus when I click the desktop. How can this be achieved? @@ -112,4 +155,167 @@ Not yet implemented. ``` +## 3.3 Cursor {#cursor} + +### Q: I cannot see a cursor. What should I do? + +If no cursor is showing (sometimes reported by people running vwmare), try +adding `WLR_NO_HARDWARE_CURSORS=1` to `~/.config/labwc/environment`. + +If cursors do not update as expected, try installing a cursor theme (for +example `Adwaita`) and set `XCURSOR_THEME` in `~/.config/labwc/environment` +accordingly (for example `XCURSOR_THEME=Adwaita`). `labwc` handles missing +cursor themes by falling back on builtin old X11 cursors, but some applications +do not resulting in the wrong or no cursor being set. + +# 4. XML {#xml} + +## 4.1 XML Nodenames {#xml-nodenames} + +### Q: My config file does not work. How can I debug it? + +You a can a nested instance of labwc in a terminal to see the error messages +relating to bad XML syntax of missing elements/attributes. + +For more fine-grained analysis you can see the config/menu file nodenames when +`labwc` starts, by setting the following environment variables: + +``` +LABWC_DEBUG_CONFIG_NODENAMES=1 +LABWC_DEBUG_MENU_NODENAMES=1 +``` + +With `labwc` a nodename is a way to refer to each element and attribute in an +XML tree. For example, the `` element below would be assigned the nodename +`c.b.a`: + +``` + + + foo + + +``` + +Please note that `labwc` also parses the rc.xml configuration file in an +element/attribute agnostic way, which means that `foo` is +equivalent to ``. Be careful though, because this does not apply to +some aspects of menu.xml (specifically the attributes id, label and execute). + +In practical terms, this means that the following syntax could be used: + +``` + +``` + +...rather than then lengthier: + +``` + + + swaylock -c 000000" + + +``` + +See [labwc-config(5)-syntax] for more details. + +[labwc-config(5)-syntax]: https://labwc.github.io/labwc-config.5.html#syntax + +# 5. Scripting {#scripting} + +## 5.1 Run or Raise {#run-or-raise} + +The [wlr-foreign-toplevel-management] protocol provides clients with a list of +opened applications and lets them request certain actions on them, like +maximizing, focusing, etc. This can be used for scripting with clients such as +[wlrctl] and [lswt]. For example, the script below launches an application +if it is not already running, or focuses the application's most recently opened +window if it is already running: + +``` +#!/bin/sh + +if test -z "$1"; then + echo "Usage: runraise app_id [executable]" + exit 1 +fi + +app_id=$1 +executable=$2 +test -z "$executable" && executable=$app_id + +if ! wlrctl window focus "$app_id"; then + $executable & + disown +fi +``` + +As of labwc version 0.7.2 it is also possible to create a run or raise keybind +with the `ForEach` action: + +``` + + + + + + + + + + + + +``` + +[wlrctl]: https://git.sr.ht/~brocellous/wlrctl +[lswt]: https://sr.ht/~leon_plickat/lswt/ +[wlr-foreign-toplevel-management]: https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1 + +# 6. Environment Variables {#environment-variables} + +There are a number of advanced settings that can be invoked for `wlroots` by +setting some environment variables. + +For example `labwc` can be run nested on Wayland with multiple outputs using +the following: `WLR_WL_OUTPUTS=2 labwc` + +See the wlroots repo [env_vars.md] file for details. + +[env_vars.md]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md + +# 7. Nested XWayland {#nested-xwayland} + +To run a nested instance of openbox on labwc: + +``` +Xwayland -decorate -noreset :55 +DISPLAY=:55 dbus-run-session openbox-session + +``` + +# 8. [Hardware]{#hardware} + +## 8.1 [Nvidia]{#nvidia} + +If Electron clients are glitchy or lagging try setting these environment +variables: + +``` +GBM_BACKEND=nvidia-drm +__GLX_VENDOR_LIBRARY_NAME=nvidia +``` + +## 8.2 [Laptop Lid]{#laptop-lid} + +When using a laptop with an external monitor and the built-in monitor is closed, +the system may go into hibernation when disconnecting. To avoid this, edit the +configuration file `etc/systemd/logind.conf' and set following to ignore (see +logind.conf(5) manual for more info): + +``` +HandleLidSwitch=ignore +HandleLidSwitchExternalPower=ignore +``` diff --git a/src/more.md b/src/more.md index df134fc..a0d8da3 100644 --- a/src/more.md +++ b/src/more.md @@ -3,6 +3,4 @@ - [hidpi scaling](hidpi-scaling.html) - [links](links.html) - [obligatory screenshot](obligatory-screenshot.html) -- [tips and tricks](tips-and-tricks.html) -- [troubleshooting](troubleshooting.html) diff --git a/src/tips-and-tricks.md b/src/tips-and-tricks.md deleted file mode 100644 index 909e2ca..0000000 --- a/src/tips-and-tricks.md +++ /dev/null @@ -1,143 +0,0 @@ -# Tips & Tricks - -1. [XML Nodenames](#xml-nodenames) -2. [Keybind Forwarding](#keybind-forwarding) -3. [Run or Raise](#run-or-raise) -4. [Environment Variables](#environment-variables) -5. [Nested XWayland](#nested-xwayland) - -## XML Nodenames - -`labwc` refers to each element and attribute in an XML tree by a nodename. For -example, the `` element below would be assigned the nodename `c.b.a`: - -``` - - - foo - - -``` - -`labwc` also parses XML in an element/attribute agnostic way, which means that -`foo` is equivalent to ``. - -Note: This does not apply to core aspects of menu.xml (specifically the -attributes id, label and execute), but is fine for actions. - -To see the config/menu file nodenames when `labwc` starts, set the following -environment variables: - -``` -LABWC_DEBUG_CONFIG_NODENAMES=1 -LABWC_DEBUG_MENU_NODENAMES=1 -``` - -In practical terms, this means that the following syntax could be used: - -``` - -``` - -...rather than then lengthier: - -``` - - - swaylock -c 000000" - - -``` - -See [labwc-config(5)-syntax] for examples and more detail. - -[labwc-config(5)-syntax]: https://labwc.github.io/labwc-config.5.html#syntax - -## Keybind Forwarding - -The [ToggleKeybinds] action allows better control of Virtual Machines, VNC -clients, nested compositors or similar. - -For example, to make alt-tab work in a nested compositor add the code below to -`~/.config/labwc/rc.xml` and then press F12 to disable all keybinds in the -parent compositor and thereby forward them to the nested instance. - -``` - - - -``` - -[ToggleKeybinds]: https://labwc.github.io/labwc-actions.5.html#entry_action_name=togglekeybinds - -## Run or Raise - -The [wlr-foreign-toplevel-management] protocol provides clients with a list of -opened applications and lets them request certain actions on them, like -maximizing, focusing, etc. This can be used for scripting with clients such as -[wlrctl] and [lswt]. For example, the script below launches an application -if it is not already running, or focuses the application's most recently opened -window if it is already running: - -``` -#!/bin/sh - -if test -z "$1"; then - echo "Usage: runraise app_id [executable]" - exit 1 -fi - -app_id=$1 -executable=$2 -test -z "$executable" && executable=$app_id - -if ! wlrctl window focus "$app_id"; then - $executable & - disown -fi -``` - -As of labwc version 0.7.2 it is also possible to create a run or raise keybind -with the `ForEach` action. - -``` - - - - - - - - - - - - -``` - -[wlrctl]: https://git.sr.ht/~brocellous/wlrctl -[lswt]: https://sr.ht/~leon_plickat/lswt/ -[wlr-foreign-toplevel-management]: https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1 - -## Environment Variables - -There are a number of advanced settings that can be invoked for `wlroots` by -setting some environment variables. - -For example `labwc` can be run nested on Wayland with multiple outputs using -the following: `WLR_WL_OUTPUTS=2 labwc` - -See the wlroots repo [env_vars.md] file for details. - -[env_vars.md]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md - -## Nested XWayland - -To run a nested instances of openbox on labwc: - -``` -Xwayland -decorate -noreset :55 -DISPLAY=:55 dbus-run-session openbox-session -``` - - diff --git a/src/troubleshooting.md b/src/troubleshooting.md deleted file mode 100644 index 0eed983..0000000 --- a/src/troubleshooting.md +++ /dev/null @@ -1,34 +0,0 @@ -# Troubleshooting - -## Nvidia - -If Electron clients are glitchy or lagging try setting these environment -variables: - -``` -GBM_BACKEND=nvidia-drm -__GLX_VENDOR_LIBRARY_NAME=nvidia -``` - -## Cursors - -If no cursor is showing (sometimes reported by people running vwmare), try -adding `WLR_NO_HARDWARE_CURSORS=1` to `~/.config/labwc/environment`. - -If cursors do not update as expected, try installing a cursor theme (for -example `Adwaita`) and set `XCURSOR_THEME` in `~/.config/labwc/environment` -accordingly (for example `XCURSOR_THEME=Adwaita`). `labwc` handles missing -cursor themes by falling back on builtin old X11 cursors, but some applications -do not resulting in the wrong or no cursor being set. - -## Logout - -When using a laptop with an external monitor and the built-in monitor is closed, -the system may go into hibernation when disconnecting. To avoid this, edit the -configuration file `etc/systemd/logind.conf' and set following to ignore (see -logind.conf(5) manual for more info): - -``` -HandleLidSwitch=ignore -HandleLidSwitchExternalPower=ignore -```