Commit graph

686 commits

Author SHA1 Message Date
Andrew J. Hesford
c9d08f8218 session: only update activation environment...
...when running DRM backend or by explicit request
2024-03-04 01:57:32 +01:00
Andrew J. Hesford
f90b7dca2a session: run shutdown script, clean up activation env before exit 2024-03-02 21:30:03 -05:00
Johan Malm
3c3bcc2765 view: add MoveToOutput wrap attribute
Support `wrap` in view_get_adjacent_output(). This means that when seeking
an adjacent output in a particular direction from an output that is
already furthest in that direction within the layout, rather than
returning NULL, wrap around from the leftmost to the rightmost, or topmost
to the bottommost and vice versa.

Example usage:

    <action name="MoveToOutput" direction="right" wrap="yes" />

Wrap is disabled by default to keep the user interface consistent.
2024-03-02 21:23:01 +00:00
Consolatis
598ab9bcff src/layers.c: delay popup unconstrain until after first commit
Fixes: #1372
2024-02-25 11:49:03 +00:00
Sachin Bhat
6fb06c54c2 config: support libinput sendEventsMode
This allows to enable / disable libinput devices.

Co-Authored-By: @Consolatis
2024-02-24 21:36:53 +01:00
Marvin Dostal
8be9c38460
Add click method libinput option (#1416)
<libinput>
  <device>
    <clickMethod>none|buttonAreas|clickfinger</clickMethod>
  </device>
</libinput>
2024-02-21 17:19:48 +00:00
Consolatis
29a26d5ff7 edges: do not apply resistance to invisible edges 2024-02-14 21:20:45 +00:00
Johan Malm
8b9ea7b343
Merge pull request #1491 from Consolatis/feature/fix_invisible_resize_area
src/ssd: allow invisible resize area across outputs
2024-02-07 22:13:57 +00:00
Andrew J. Hesford
8a0f1f9355 resistance: only resist "entry" into another window space 2024-02-06 11:26:42 -05:00
Consolatis
382068e452 src/view.c: store outputs the view is visible on 2024-02-06 17:23:45 +01:00
Andrew J. Hesford
cf34e60240 edges: limit edge attraction and resistance...
...to edges actually encountered by motion during interactive moves and
resizes.

In addition, ignore edge resistance and attraction for minimized views.
2024-02-05 22:05:22 +00:00
Andrew J. Hesford
e7e6d29237 edges, resistance, snap: unified resistance and snapping engine 2024-01-30 15:02:17 -05:00
Andrew J. Hesford
3162bbb3c2 xdg: add snapping.notifyClient option to control tiling events 2024-01-30 07:30:07 -05:00
Andrew J. Hesford
c1a2dd3e27 view, xdg: notify clients when tiling windows 2024-01-30 07:30:07 -05:00
Consolatis
a04b394e59 xwayland: support querying window types 2024-01-25 21:14:30 +00:00
Andrew J. Hesford
9ecd8c2b43 view: ensure midpoint is visible on layout change
Fixes: #1476.
2024-01-25 20:22:10 +01:00
Consolatis
396a4b93d1 src/output.c: expose output configuration test to clients 2024-01-23 20:14:24 +00:00
Jens Peters
b1d626fbfd view: add move_to_output() function 2024-01-22 22:27:08 +00:00
Jens Peters
982df84407 view: expose view_get_adjacent_output 2024-01-22 22:27:08 +00:00
Jens Peters
099929cf46 view: allow overriding of cursor placement policy 2024-01-22 22:27:08 +00:00
Jens Peters
3f77514459 config: add finding touch configurations 2024-01-22 21:50:18 +00:00
Jens Peters
2c3ab16f39 config: parse multiple touch configurations
Also temporary disable touch output mapping.
Will be restored later.
2024-01-22 21:50:18 +00:00
Jens Peters
9d64b56367 config: introduce touch config structure 2024-01-22 21:50:18 +00:00
Jens Peters
6def1319d1 input: move function to config
This function is only about rc, so fits better
in config.
2024-01-22 21:50:18 +00:00
Andrew J. Hesford
57ea197e6c resistance: add window-edge resistance for interactive moves/resizes 2024-01-21 16:10:50 -05:00
Johan Malm
c066821046 string-helpers.c: add string_empty() 2024-01-19 20:00:37 +00:00
Simon Long
8c9be2f0d1 keyboard: set keyboard layout on reconfigure
If keyboard-layout-per-toplevel-window is used, reset the group (index)
for each window on --reconfigure whenever the keymap has changed.

Refactor to use a common configure function for reconfigure and
keyboard-group creation.

Co-authored-by: @johanmalm

Fixes #1407
2024-01-19 18:59:14 +00:00
Johan Malm
dfb6664906 Honour -c <file> on --reconfigure 2024-01-18 20:20:36 +00:00
Johan Malm
698c7ace07 config: support merging multiple config files
Add the -m|--merge-config command line option to iterate backwards over
XDG Base Dir paths and read config/theme files multiple times.

For example if both ~/.config/labwc/rc.xml and /etc/xdg/labwc/rc.xml
exist, the latter will be read first and then the former (if
--merge-config is enabled).

When $XDG_CONFIG_HOME is defined, make it replace (not augment)
$HOME/.config. Similarly, make $XDG_CONFIG_DIRS replace /etc/xdg when
defined.

XDG Base Dir Spec does not specify whether or not an application (or a
compositor!) should (a) define that only the file under the most important
base directory should be used, or (b) define rules for merging the
information from the different files.

ref: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

In the case of labwc there is a use-case for both positions, just to be
clear, the default behaviour, described by position (a) above, does NOT
change.

This change affects the following config/theme files:
  - rc.xml
  - menu.xml
  - autostart
  - environment
  - themerc
  - themerc-override
  - Theme buttons, for example max.xbm

Instead of caching global config/theme directories, create lists of paths
(e.g.  '/home/foo/.config/labwc/rc.xml', '/etc/xdg/labwc/rc.xml', etc).
This creates more common parsing logic and just reversing the direction
of iteration and breaks early if config-merge is not wanted.

Enable better fallback for themes. For example if a particular theme does
not exist in $HOME/.local/share/themes, it will be searched for in
~/.themes/ and so on. This also applies to theme buttons which now
fallback on an individual basis.

Avoid using stat() in most situations and just go straight to fopen().

Fixes #1406
2024-01-18 20:20:36 +00:00
Consolatis
e05bedb140 feat: add Shade/Unshade/ToggleShade actions
This builds on the work of @Consolatis in #1018.

Co-authored-by: Consolatis <35009135+Consolatis@users.noreply.github.com>
Co-authored-by: Andrew J. Hesford <ajh@sideband.org>
2024-01-15 21:37:36 +00:00
Jens Peters
614ce35f31 config: add touch output mapping configuration 2024-01-13 22:18:20 +00:00
Jens Peters
17e15ed987 seat: re-map tablet to output on output change 2024-01-10 21:10:11 +00:00
Jens Peters
1df3ada636 config: add tablet output mapping configuration
Also add missing default for 'tablet.rotation'.
2024-01-10 21:10:11 +00:00
Jens Peters
b01d7dbf38 input: add missing new lines 2024-01-10 21:10:11 +00:00
Johan Malm
c646c7bd1b view: constrain window size to that of usable area
...on first map (when application is started).

Fixes #1399
2024-01-08 22:08:27 +00:00
Ph42oN
bce0c6ce56
Add tearing support (#1390)
Co-authored-by: Andrew J. Hesford <ajh@sideband.org>
2024-01-08 20:58:58 +00:00
Jens Peters
e51c3fc5d4 config: reuse mousebind_button_from_str() 2024-01-06 19:37:41 +00:00
Andrew J. Hesford
c229f6edc0 view: try to honor original geometry with layout changes
Whenever the output layout changes, each view's original geometry will
be captured as last_layout_geometry (if it has not already been captured
by a previous layout change), which will remain valid unless the user
modifies the view's geometry (i.e., by tiling, maximizing, moving,
resizing or full-screening). On subsequent output layout changes, views
with valid last_layout_geometry will be back to their original position
if possible, or else to the closest possible output.
2024-01-06 19:04:11 +00:00
Tomi Ollila
785a34e8ad Fixed some typos 2024-01-04 19:32:51 +00:00
Jens Peters
d48126bf97 config: add user names for pad butttons 2024-01-02 21:28:42 +00:00
Jens Peters
c2687d9281 input: add tablet pad setup and button handler
Split pad initialization from tablet initialization to
avoid conflicting handler names.
Also reuse 'get_mapped_button'.
2024-01-02 21:28:42 +00:00
Jens Peters
f0abd9304f config: add tablet area configuration 2024-01-01 22:11:33 +00:00
Johan Malm
af5d80a583 config: s/enum device_type/enum lab_libinput_device_type/ 2024-01-01 22:04:21 +00:00
Johan Malm
673c745cff config: prefix enums with LAB_LIBINPUT_DEVICE_ 2024-01-01 22:04:21 +00:00
Johan Malm
5337eda242 config: remove duplication in libinput-category parsing
Related-to: #1382
2024-01-01 22:04:21 +00:00
Andrew J. Hesford
b1c5e95c05 view: honor automatic placement when adjusting floating geometry
The view_adjust_floating_geometry function is called when un-maximizing
a window or changing the output layout to ensure that views are well
placed. Rather than always centering these views should they fall
offscren, use the automatic placement strategy if so configured.
2023-12-30 16:50:09 +00:00
Ph42oN
08045d7843 config: add adaptive sync fullscreen option 2023-12-30 15:46:35 +00:00
Jens Peters
23ecc32562 config: add tablet rotate configuration
Co-authored-by: Consolatis <35009135+Consolatis@users.noreply.github.com>
2023-12-29 22:32:41 +00:00
Jens Peters
20bba35570 input: rename drawing_tablet to tablet 2023-12-29 20:22:46 +00:00
Jens Peters
567b81ea10 config: add tablet button mapping configuration
Co-authored-by: Consolatis <35009135+Consolatis@users.noreply.github.com>
2023-12-29 20:22:46 +00:00