Commit Graph

733 Commits

Author SHA1 Message Date
Calvin Lee 09873f0ed9 search for dark or light mode stylesheet
summary:
-------
This commit adds xdg-desktop-portal support to waybar. If a portal
supporting `org.freedesktop.portal.Settings` exists, then it will be
queried for the current colorscheme. This colorscheme will then be used
to prefer a `style-light.css` or `style-dark.css` over the basic
`style.css`.

technical details:
-----------------
Appearance is provided by several libraries, such as libhandy (mobile)
and libadwaita. However, waybar links to neither of these libraries. As
the amount of code required to communicate with xdg-desktop portal as a
client is rather minimal, I believe doing so is better than linking to
an additional library.

The Gio library for communicating with dbus is rather messy, Instead of
the `Portal` class containing a `Gio::Dbus::Proxy`, it extends it which
simplifies signal handling.

`Portal` then exposes its own signal, which can be listened to by waybar
to update CSS.

For a reference implementation, please see another one of my projects:
https://github.com/4e554c4c/darkman.nvim/blob/main/portal.go

test plan:
---------
If no desktop portal which provides `Settings` exists, then waybar
continues with the log line
```
[2023-09-06 14:14:37.754] [info] Unable to receive desktop appearance: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.Settings” on object at path /org/freedesktop/portal/desktop
```

Furthermore, if `style-light.css` or `style-dark.css` do not exist, then
`style.css` will still be searched for.

Waybar has been tested with both light and dark startup. E.g. if the
appearance is dark on startup the log lines
```
[2023-09-06 14:27:45.379] [info] Discovered appearance 'dark'
[2023-09-06 14:27:45.379] [debug] Try expanding: $XDG_CONFIG_HOME/waybar/style-dark.css
[2023-09-06 14:27:45.379] [debug] Found config file: $XDG_CONFIG_HOME/waybar/style-dark.css
[2023-09-06 14:27:45.379] [info] Using CSS file /home/pounce/.config/waybar/style-dark.css
```
will be observed.
If the color then changes to light during the operation of waybar, it
will change css files:
```
[2023-09-06 14:28:17.173] [info] Received new appearance 'dark'
[2023-09-06 14:28:17.173] [debug] Try expanding: $XDG_CONFIG_HOME/waybar/style-light.css
[2023-09-06 14:28:17.173] [debug] Found config file: $XDG_CONFIG_HOME/waybar/style-light.css
[2023-09-06 14:28:17.173] [info] Using CSS file /home/pounce/.config/waybar/style-light.css
```

Finally, tested resetting waybar and toggling style (works, and style is
only changed once).

fixes: Alexays/Waybar#1973
2023-09-06 15:19:56 +00:00
Alexis Rouillard 82b7e4ea01
Merge pull request #2414 from KosmX/add_release_v2
Release button event second attempt
2023-09-01 09:08:23 +02:00
Austin Horstman ee4fbc58f7
hyprland add urgent ipc support 2023-08-23 12:52:29 -05:00
asas1asas200 54a6668846 feat(keyboard-state): add binding-keys options 2023-08-20 08:33:34 +08:00
KosmX 2ff347f9a8
Add handleRelease method to release events
This commit shouldn't change the handleToggle behaviour,
it shouldn't break anything.
2023-08-16 17:14:49 +02:00
KosmX 1d8331d0c5
Add release events to event map 2023-08-16 17:12:32 +02:00
PucklaJ 22817089db Add no-controller format to bluetooth module 2023-08-16 15:34:06 +02:00
Alex b5ea14c896 revert: release event 2023-08-16 13:31:24 +02:00
Jan Palus c8237437d2
Explicitly cast ustring to string when passing to fmt
don't rely on implicit conversion which is no longer present in fmt
10.1.0

Fixes #2403
2023-08-15 20:57:07 +02:00
Alex db1d859881 fix: lint 2023-08-14 14:20:08 +02:00
KosmX 46f5034030
Add button release events to eventMap 2023-08-13 18:20:43 +02:00
zjeffer 600653538b Persistent workspaces in hyprland/workspaces 2023-07-30 11:47:37 +02:00
Alexis Rouillard c087d8c318
Merge pull request #2316 from MightyPlaza/workspaces
hyprland/workspaces improvements
2023-07-24 13:40:23 +02:00
Viktar Lukashonak 4d9e0ea802
time conversion between time zones
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-24 01:21:33 +03:00
dmitry d3bcff31e5 add high-priority-named optiion 2023-07-20 22:56:15 +03:00
MightyPlaza d3e7a8c797
Merge branch 'Alexays:master' into workspaces 2023-07-17 22:38:13 +00:00
zjeffer 2721e19ee6 small improvements 2023-07-17 16:22:59 +02:00
Patrick Nicolas f62b3d0e9d Ensure signal is disconnected in destructor 2023-07-16 23:29:28 +02:00
MightyPlaza 6d24b22b21
moves createWorkspace to update() 2023-07-16 01:43:54 +00:00
MightyPlaza 4f81e55e41
workspaces.hpp 2023-07-16 01:20:30 +00:00
MightyPlaza 495b63d7dc
workspaces.hpp 2023-07-15 17:44:57 +00:00
gardenapple daca57129f
hyprland/window: rename .hidden to .swallowing (and fix grouped windows) 2023-07-12 19:01:45 +03:00
MisterPine a8a1a4985f
Add removed secondary identifier
(class for xwayland under sway)
2023-07-10 23:48:18 +02:00
MisterPine 31683d9e2a
Implemented AAppIconLabel for sway/window 2023-07-10 22:55:46 +02:00
MisterPine 00e143d47e
Introducce AAppIconLabel class
Implemented for hyprland
2023-07-10 22:50:58 +02:00
MisterPine a373f6b654
Icon working 2023-07-10 22:02:03 +02:00
MisterPine f97c1c7136
remove getWindowData 2023-07-08 23:22:29 +02:00
MisterPine c5f1771375
Use already existing `queryActiveWorkspace()` 2023-07-08 22:40:16 +02:00
MisterPine c4bace504c
Separate query and struct 2023-07-08 22:40:16 +02:00
Alexis Rouillard 3299d4a25c
Merge pull request #2270 from gardenappl/hypr-backend
hyprland/window: Add .hidden CSS class, account for hidden & fullscreen windows
2023-07-05 08:14:49 +02:00
zjeffer d21f29cb14 Fixed build warnings 2023-07-04 23:05:26 +02:00
Alexis Rouillard 0d1016d4d2
Merge pull request #2203 from rodrgz/mprisImprovement
mpris: dynamic tag ordering and separator customization
2023-07-04 22:44:21 +02:00
Alexis Rouillard 14fa9cf7b7
Merge pull request #2128 from Alan-Kuan/image-tooltip
Image tooltip
2023-07-04 22:40:04 +02:00
Alex 6c196b8f8d fix: lint 2023-07-04 22:35:27 +02:00
Alexis Rouillard 265b4edb2e
Merge pull request #2276 from skligys/fix_mpris_ui_spamming
Stop MPRIS module from updating every ~20ms
2023-07-04 22:29:48 +02:00
Alexis Rouillard bb61461aad
Merge pull request #2278 from Anakael/pr/anakael/hyprland-workspaces 2023-07-04 08:02:45 +02:00
dmitry de626dcbbc format 2023-07-04 01:24:34 +03:00
dmitry c9b963e82b fix segfault 2023-07-04 01:17:26 +03:00
André Aparício a1cd0acac5 Fix random segfault on GTK icon functions
The segfaults were happening on GTK icon theme functions, which are
called via the C++ interface functions such as Gtk::IconTheme::has_icon.

There are multiple modules and threads using this functions on the default
icon theme by calling Gtk::IconTheme::get_default(), which returns the same
object for all callers, and was causing concurrent access to the same internal
data structures on the GTK lib. Even a seemingly read-only function such as
has_icon can cause writes due to the internal icon cache being updated.

To avoid this issues, a program wide global mutex must be used to ensure
a single thread is accessing the default icon theme instance.

This commit implements wrappers for the existing IconTheme function calls,
ensuring the global lock is held while calling the underling GTK functions.
2023-07-03 22:32:24 +01:00
Skirmantas Kligys c2f9d889f4 Stop MPRIS module from updating every ~20ms as onPlayerMetadata(), onPlayerPlay()
callbacks get triggered without regard for update interval.
2023-07-03 13:52:57 -07:00
gardenapple cdece498c1
hyprland/window: .solo class accounts for hidden & fullscreen windows 2023-07-02 20:58:42 +03:00
Alexis Rouillard 91588fb8bb
Merge pull request #2212 from evyatark2/wpscroll
wireplumber: Support for scrolling
2023-07-02 11:46:56 +02:00
Alex 9d741f89e2 fix: lint 2023-07-01 11:12:14 +02:00
Alex cc4370f1b2 fix: build 2023-07-01 11:08:31 +02:00
Alexis Rouillard 85854c71d6
Merge pull request #2219 from xytovl/wake_threads_on_resume
Wake all sleeping threads when leaving suspend
2023-07-01 11:02:13 +02:00
dmitry 887c44bf68 finish MVP 2023-07-01 00:18:57 +03:00
dmitry 33236c222f save 2023-06-28 02:52:01 +03:00
Erik Rodriguez 77a8420aaf
mpris: Add dynamic-order and dynamic-separator
This commit allows better handling of ordering and exclusion of the tags in Dynamics tags.
It also becomes possible to choose the separator between the tags.
2023-06-22 02:13:34 -03:00
gardenapple 30c4f08773
hyprland/window: Correct application of .solo class 2023-06-20 03:54:02 +03:00
gardenapple 4f14ce3285
hyprland/window: add .floating and .fullscreen CSS classes 2023-06-20 00:42:19 +03:00