Commit graph

477 commits

Author SHA1 Message Date
Johan Malm
26a9c637d8 config: deprecate A-<arrow> keybinds
...because Alt- keybinds should be for clients to use and the A-<arrow>
default combination is a frequent user complaint because it prevents some
common usage patterns like alt-left/right in web browers.
2025-06-22 20:43:30 +01:00
Johan Malm
84858967e4 docs: document gradients
(v2: small fixes)
2025-06-18 15:48:24 -04:00
Johan Malm
145de91932 config: add <core><primarySelection>
...to enable/disable primary selection clipboard support. This only works
on launch.

The reason it is useful to be able to disable this is that some clients
(like browsers) support middle-button-click to start scrolling up/down.

With some clients can be disabled via

   gsettings set org.gnome.desktop.interface gtk-enable-primary-paste false

...but for others (like chromium and electron based programs) a compositor
setting is required.

Fixes: #2815
2025-06-13 20:27:49 +01:00
Jens Peters
a73b866129 config: support tablet tool mouse buttons
Those are regular mouse buttons, but attached
to a tablet tool (which looks like a mouse).
2025-06-08 05:31:23 +09:00
may
e96b5af42d libinput: implement threeFingerDrag feature 2025-06-07 21:30:07 +09:00
tokyo4j
22d319cce8 libinput: support <dragLock>sticky<dragLock> and enable it by default
It is recommended by libinput:
https://lists.freedesktop.org/archives/wayland-devel/2024-November/043860.html
2025-06-07 12:46:53 +01:00
Johan Malm
6cb34f994c labwc-config(5): add example to unset mousebind 2025-06-06 23:46:33 +02:00
DreamMaoMao
614c008bea feat: add left-occupied and right-occupied to workspaces_find 2025-06-06 18:35:32 +02:00
dd
c5b9e2665d
ssd: add configurable drop-shadows for tiled windows 2025-06-05 22:46:58 +02:00
Johan Malm
ea294dbcf5 labwc-config(5): describe environment file comment syntax 2025-06-03 17:23:14 +01:00
tokyo4j
949d769198 docs: update documentations for osd fields 2025-05-29 11:19:26 +09:00
Consolatis
fdab272bdc Add scroll method libinput option
<libinput>
  <device>
    <scrollMethod>none|twofinger|edge</scrollMethod>
  </device>
</libinput>

Fixes: #2766
2025-05-28 14:43:51 +09:00
zeusgoose
8e9751ea92 documentation: s/view/window/ 2025-05-25 01:31:40 +09:00
tokyo4j
b299404811 config: drop xwayland persistence workaround for wlroots < 0.18.2
We enabled xwayland persistence for wlroots < 0.18.2 to prevent crashes,
but it's no longer needed since we now depend on wlroots 0.19.
2025-05-21 21:27:57 +09:00
Johan Malm
51844c7fc9 docs/autostart: add example for delayed start 2025-05-21 20:18:27 +09:00
Johan Malm
2265dd647a labwc-actions(5): add example for ShowMenu with wtype
Related-to: #2726
2025-05-21 12:44:21 +02:00
Jens Peters
32585cce7e docs: document scroll wheel emulation actions 2025-05-07 03:47:37 +09:00
Consolatis
f0c7277c4a docs: list all supported font weights 2025-04-23 19:35:40 +01:00
Johan Malm
579dca9768 labwc-config(5): add mousebind direction example
Helped-by: @Consolatis
Related-to: #2677
2025-04-23 04:07:11 +09:00
Tomi Ollila
24c199aeef docs: rc.xml.all: Fix reference to labwc-config manpage. Unwefify.
There is no "labwc" manpage in section 5 (man 5 labwc may fail or
show e.g. labwc-action manpage).

Replaced one 'we' with passive form, to match the common style in docs/.
2025-04-21 07:57:29 +01:00
Johan Malm
518839aff1 labwc-menu(5): fix incorrect statement on label attribute 2025-04-18 14:16:11 +01:00
Dmitry
4f42b7a12b osd: add osd.workspace-switcher.boxes.border.width 2025-04-14 20:06:38 +01:00
tokyo4j
44146487b2 osd: update the default window switcher layout
The default window switcher layout is updated from:

  <windowSwitcher>
    <fields>
      <field content="type" width="25%" />
      <field content="trimmed_identifier" width="25%" />
      <field content="title" width="50%" />
    </fields>
  </windowSwitcher>

to:

  <windowSwitcher>
    <fields>
      <field content="icon" width="5%" />
      <field content="desktop_entry_name" width="30%" />
      <field content="title" width="65%" />
    </fields>
  </windowSwitcher>

Only desktop entry name and title are shown when libsfdo is not linked.
2025-04-02 20:49:38 +01:00
tokyo4j
6a04c5f0dd osd: add osd.window-switcher.item.icon.size
This allows users to make the icon in window switcher bigger (or smaller)
than the font size, which enables more Openbox-like appearance.

Example configuration:
  osd.window-switcher.item.icon.size: 50

This commit also makes the icon smaller than the font size if the width
allocated with <windowSwitcher><fields><field width=""> is smaller than
that.
2025-04-01 21:14:20 +01:00
Tomi Ollila
2404297f2d docs: labwc-actions.5.scd style updates
- some newlines to dedent and separate content
- comma (,) before respectively
- reflowd some lines to fit in 80 columns
2025-03-31 21:26:56 +01:00
Jens Peters
d6edb8b273 action: Add HideCursor action 2025-03-24 21:23:55 +00:00
tokyo4j
4ef881bb3e osd: support app icons in window switcher
Example configuration:

  <windowSwitcher>
    <fields>
      <field content="icon" width="5%" />
      <field content="title" width="95%" />
    </fields>
  </windowSwitcher>
2025-03-17 01:22:24 +09:00
Johan Malm
9ca0b111f4 config: increase default <snapping><range> to 10
...to make it easier to snap windows on the edge between two monitors.

Fixes: #2602
2025-03-08 22:36:53 +09:00
Tomi Ollila
63da13a62b docs: labwc-config.5.scd: dedent windowSwitcher content lists
fits better on 80-column terminal and is more consistent in style
2025-02-11 15:35:06 +01:00
Tomi Ollila
92e4c5a606 docs: trailing space, 1 tab to spaces, labwc-theme.5.scd to fit 80 cols 2025-02-08 17:37:43 +01:00
Andrew J. Hesford
b2623ce1e3 docs/rc.xml.all: correct description of resize.cornerRange 2025-02-04 18:55:31 -05:00
Andrew J. Hesford
6b9cc5dd64 ssd: make sizes of invisible SSD extents configurable 2025-02-04 18:55:31 -05:00
tokyo4j
950337b895 ssd: fix resizing on border corners and add <resize><cornerRange>
Eliminate corner extents and instead use cursor position to map SSD
borders and extents to corner contexts, with a size configurable by the
<resize><cornerRange> parameter. This simplifies extent handling,
eliminates bugs in the detection of corner context, and allows users to
expand corner targets if they wish.

Co-authored-by: Andrew J. Hesford <ajh@sideband.org>
2025-02-04 11:13:32 -05:00
Consolatis
ed4553fc7e src/menu: add global config for menu.showIcons 2025-02-02 15:05:37 +00:00
Consolatis
1fa4070025 src/menu: add support for scalable menu icons 2025-02-02 15:05:37 +00:00
Consolatis
060b59f7ed src/config: let icon theme name default to theme 2025-02-02 15:05:37 +00:00
Consolatis
1e2c709d6b docs/labwc-menu: we only support a single menu.xml file 2025-02-02 15:05:37 +00:00
tokyo4j
26064fb8f6 Add <theme><fallbackAppIcon>
This commit adds <theme><fallbackAppIcon> that configures the icon name
to be used when lookups for an application icon is failed. Its default
value is set as 'labwc' which shows our labwc logo.
2025-01-26 11:46:32 +01:00
Dima Krasner
36d6e9ef75 docs: fix incorrect default for window.label.text.justify 2025-01-24 12:57:06 +01:00
tinyboxvk
1a6dd845a2 Fix typos
Signed-off-by: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com>
2025-01-09 06:59:57 +00:00
Johan Malm
8d9bd2d747 theme: use 'labwc' directory
as well as 'openbox-3', for example: /usr/share/themes/foo/labwc/themerc

Give 'labwc' higher precedence than 'openbox-3' if both exist.

For several reasons not all themes designed for labwc render well on
Openbox:

1. Labwc support some features like SVG/PNG icons and #rrggbbaa color
   definitions which Openbox does not.

2. Openbox generally defaults to black/white colors and will not render
   themes accurate without certain options specified in themerc. For
   example, in Openbox the following will just render as black:

       window.active.title.bg.color: #589bda

   ...because Openbox defaults the texture to "Gradient Vertical" and
   therefore either needs:

      window.active.title.bg.colorTo: #3c7cb7

   ...or remove 'Gradient' from the bg definition and just use something
   like:

      window.active.title.bg: Flat Border

Whilst none of this is a problem when using labwc, it causes problems for
setups with both Openbox and labwc because themes designed for labwc only
will now show up in obconf, lxappearance, etc causing confusion for users.
2025-01-06 20:15:26 +00:00
Johan Malm
956b271f9b menu: support pipemenu with the toplevel <menu> element
For example:

    <?xml version="1.0"?>
    <openbox_menu>
      <menu id="root-menu" label="" execute="obmenu-generator"/>
    </openbox_menu>

Fixes: #2238

Co-Authored-By: @Consolatis
2025-01-03 04:41:25 +01:00
tokyo4j
a93eb84335 Add default Alt-Shift-Tab keybind for PreviousWindow 2025-01-03 10:51:26 +09:00
tokyo4j
713b1d8a13 osd: make window switcher more Openbox-like in terms of key precessing
Before this commit, keystrokes were interpreted based on following
hard-coded rules while the window switcher is active:

  1. Up/Left arrow keys cycle the window forward.
  2. Down/Right arrow keys cycle the window backward.
  3. Other keystrokes cycle the window in the initial direction specified
     by NextWindow/PreviousWindow actions. But while Shift key is pressed,
     the direction is inverted.

...and keybind actions were never executed.

However, this lead to a counter-intuitive behavior for new, especially
pre-Openbox users. For example, in the following keybinds, after the user
activates the window switcher with Super+n, Super+p cycles the window
_forward_:

  <keybind key="W-n">
    <action name="NextWindow" />
  </keybind>
  <keybind key="W-p">
    <action name="PreviousWindow" />
  </keybind>

This is because the key 'n' is recognized just as a normal key in the
third hard-coded rule.

So this commit changes the rules to be more Openbox-like:

  1. Up/Left arrow keys cycles the window forward.
  2. Down/Right arrow keys cycles the window backward.
  3. Other keystrokes are matched against keybinds and execute their
     actions. If they include NextWindow/PreviousWindow action, it cycles
     the selected window forward/backward even while the window switcher
     is active.
2025-01-03 10:51:26 +09:00
John Lindgren
dc826fef81 rcxml: add core.autoEnableOutputs option
Currently, labwc automatically enables outputs at startup and when new
outputs are connected. Make this behavior optional (but still enabled by
default).

With autoEnableOutputs disabled, tools such as kanshi can be used to
give finer-grained control of which outputs are enabled and when.
2024-12-31 16:32:42 +00:00
Johan Malm
a5973c3b48 keyboard: do not set numlock by default
Only force on|off if users specifically requests it in the config file.

Related-to: #2463
2024-12-31 16:23:47 +00:00
Johan Malm
304a94e716 desktop-entry: demote libsfdo error-logging
...to WLR_INFO to avoid logging issues with .desktop files as errors, for
example:

    [sfdo-desktop] 1:1: Name is unset
    [sfdo-desktop] Failed to load /usr/share/applications/lxqt-panel.desktop
    [sfdo-desktop] 1:1: Exec is unset while DBusActivatable is unset or false
    [sfdo-desktop] Failed to load /usr/share/applications/qemu.desktop

Also make libsfdo debug/info logging depend on environment variable
LABWC_DEBUG_LIBSFDO being set to avoid disproportionately verbose logging
by default for one particular sub-system.

Add an 'ENVIRONMENT VARIABLES' section to labwc(1) to describe the above
as well as other hitherto undocumented env vars with prefix LABWC_DEBUG_.
2024-12-30 23:39:02 +01:00
Johan Malm
bb982dc0af keyboard: set numlock to off by default
...to avoid surprises on Acer Aspire One laptops where the numeric
keyboard does not physically exist but "overlaps" the qwerty keyboard.

Reported-by: staryvyr on IRC

Note: We do not like changing defaults, but feel that there is a good
reason for this one.
2024-12-29 21:34:41 +00:00
tokyo4j
5bcc03db05 Revert "keyboard: add window rule to send release-events (#2377)"
This reverts commit 2f8afb2376.
2024-12-29 16:27:34 +09:00
Orfeas
1550eb9c26 action: add WarpCursor action 2024-12-26 10:27:02 +00:00