xfce4-notifyd merge requestshttps://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests2024-03-25T03:30:07Zhttps://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/67common: Explicitly depend on gio-unix-2.02024-03-25T03:30:07ZBobby Rongcommon: Explicitly depend on gio-unix-2.0This fixes the following on NixOS:
```
xfce-notify-log-util.c:40:10: fatal error: gio/gdesktopappinfo.h: No such file or directory
40 | #include <gio/gdesktopappinfo.h>
| ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated....This fixes the following on NixOS:
```
xfce-notify-log-util.c:40:10: fatal error: gio/gdesktopappinfo.h: No such file or directory
40 | #include <gio/gdesktopappinfo.h>
| ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
```
The reason here is the same as https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/51.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/66Fix active-monitor notification positioning on Wayland2024-03-03T09:56:45ZBrian TarriconeFix active-monitor notification positioning on WaylandOn Wayland, we can't get the absolute location of the pointer, or even
know which monitor the pointer is on. Sigh.
Instead, we can create the window with no set monitor, set it's opacity
to fully transparent, map the window, and hope t...On Wayland, we can't get the absolute location of the pointer, or even
know which monitor the pointer is on. Sigh.
Instead, we can create the window with no set monitor, set it's opacity
to fully transparent, map the window, and hope that the compositor's
policy is to place layer-shell windows with no output set on the active
monitor. Then we can see what monitor the window is on, move it to the
appropriate place, and set the opacity back to normal.
Closes #125.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/65Fix opacity on notification hover2024-02-08T20:58:56ZFilip UrhFix opacity on notification hoverBased on the results from git bisect the regression has been introduced
by the commit 79ac9cab47d46541abd453721c06ebf42f71e4a0.
On notification hover the opacity is correctly set to 1
([xfce4-notifyd/xfce-notify-window.c:945](xfce4-noti...Based on the results from git bisect the regression has been introduced
by the commit 79ac9cab47d46541abd453721c06ebf42f71e4a0.
On notification hover the opacity is correctly set to 1
([xfce4-notifyd/xfce-notify-window.c:945](xfce4-notifyd/xfce-notify-window.c#L945)),
but is immediately overridden with the preset value
([xfce4-notifyd/xfce-notify-window.c:1109](xfce4-notifyd/xfce-notify-window.c#L1109))
in the function which is called from motion notify event handler
([xfce4-notifyd/xfce-notify-window.c:941](xfce4-notifyd/xfce-notify-window.c#L941)).
Fixes #119https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/37Add Wayland support2024-02-05T23:18:46ZBrian TarriconeAdd Wayland support* Use gtk-layer-shell to place notification windows in the top layer. We also have to use layer-shell's anchor and margin settings in order to place the windows (`gtk_window_move()` doesn't work on Wayland here). The margin settings ar...* Use gtk-layer-shell to place notification windows in the top layer. We also have to use layer-shell's anchor and margin settings in order to place the windows (`gtk_window_move()` doesn't work on Wayland here). The margin settings are also used to move the window for the slideout, when enabled.
* Bump GTK requirement to 3.22. This gives us all the `GdkMonitor` stuff, and `gdk_monitor_get_workarea()`. 3.22 was released in 2016, so I think this is long overdue, and it lets me delete a lot of X11-specific code as well as some GTK-version-checked helpers.
* Surround the remaining X11-related stuff with `#ifdef`s.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/64Go back to installing the XDG autostart file by default2023-09-19T22:50:46ZBrian TarriconeGo back to installing the XDG autostart file by defaultTurns out the rationale in e604b499353aae7759714dfe8c96b53f434a6f47 is
still very much valid.
Closes #112Turns out the rationale in e604b499353aae7759714dfe8c96b53f434a6f47 is
still very much valid.
Closes #112https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/63Add missing sanity check2023-09-18T08:59:06ZGaƫl BonithonAdd missing sanity check`g_variant_get_data(pixel_data)` may be null for various reasons, hence
`data` may also be null.
This seems to be the case with notifications sent by the Matrix client Nheko, which I've only been using since yesterday.`g_variant_get_data(pixel_data)` may be null for various reasons, hence
`data` may also be null.
This seems to be the case with notifications sent by the Matrix client Nheko, which I've only been using since yesterday.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/61Change options for installing startup files2023-03-16T04:12:21ZBrian TarriconeChange options for installing startup filesPreviously the D-Bus activation files and systemd were not installed by
default, and XDG autostart was the default. The rationale for using XDG
autostart was to ensure that there's no lag on the first notification,
and also that, if ano...Previously the D-Bus activation files and systemd were not installed by
default, and XDG autostart was the default. The rationale for using XDG
autostart was to ensure that there's no lag on the first notification,
and also that, if another D-Bus activation service file is installed for
a different DE's notification service, it wouldn't get started instead.
That rationale is reasonable, but can cause problems now that the panel
plugin relies on D-Bus in order to check the notification log: XDG
autostart runs after the panel's startup runs (xfce4-session runs XDG
autostart items after X11 session management apps).
There was also another oddity: systemd unit file installation was tied
to the D-Bus activation file installation, which is probably not quite
right.
So the new defaults (all of which can be changed with configure
switches, which are now all independent):
* D-Bus activation files are installed.
* Systemd unit file is installed.
* XDG autostart file is not installed.
If a user/distro is concerned about notifyd not getting started until
the D-Bus session bus activates it, XDG autostart can be additionally
enabled (and the systemd unit file might actually start it earlier too).
Closes #99.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/60Add positioning options top-center and bottom-center2023-03-16T02:56:15ZBrian TarriconeAdd positioning options top-center and bottom-centerCloses #52.Closes #52.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/59Use new XDT feature macros2023-03-05T10:07:06ZBrian TarriconeUse new XDT feature macrosThis also fixes things so if e.g. Wayland is disabled (but the libs are
present on the system), notifyd will no longer link with Wayland libs.This also fixes things so if e.g. Wayland is disabled (but the libs are
present on the system), notifyd will no longer link with Wayland libs.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/58Add option to show notifications on all monitors2023-03-01T15:46:54ZBrian TarriconeAdd option to show notifications on all monitorsThis required refactoring XfceNotifyWindow into XfceNotification (one
instance per notification) and XfceNotifyWindow (one instance per
monitor to display on).
Closes #36.This required refactoring XfceNotifyWindow into XfceNotification (one
instance per notification) and XfceNotifyWindow (one instance per
monitor to display on).
Closes #36.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/57Close all non-urgent notifications when DnD is activated2023-02-20T06:03:07ZBrian TarriconeClose all non-urgent notifications when DnD is activatedCloses #74.Closes #74.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/56Clean up a bunch of build-related things2023-02-18T09:44:24ZBrian TarriconeClean up a bunch of build-related things* Use glib-compile-resources instead of xdt-csource
* Don't hide glib-genmarshal behind MAINTAINER_MODE
* Remove intltool in favor of plain gettext* Use glib-compile-resources instead of xdt-csource
* Don't hide glib-genmarshal behind MAINTAINER_MODE
* Remove intltool in favor of plain gettexthttps://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/55Make all notification log access go through dbus2023-02-16T09:04:07ZBrian TarriconeMake all notification log access go through dbusThis should fix issues where unread state wasn't getting noticed
properly by the plugin or other entities, and makes log change
notification granular and... well... just better.
Also this allows the daemon to "own" the log and be the on...This should fix issues where unread state wasn't getting noticed
properly by the plugin or other entities, and makes log change
notification granular and... well... just better.
Also this allows the daemon to "own" the log and be the only process
that reads from and writes to it. This way, the plugin and config
dialog can't ever break the DB through version incompatibilities, and
failure modes will be better-handled.
Closes #90.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/54Clean up build system2023-02-14T09:55:18ZBrian TarriconeClean up build systemSome say that recursive make is harmful, but I say it makes things a lot
cleaner and easier to read and modify.Some say that recursive make is harmful, but I say it makes things a lot
cleaner and easier to read and modify.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/53Add hidden setting to restore override-redirect behavior2023-02-14T08:04:14ZBrian TarriconeAdd hidden setting to restore override-redirect behaviorOn some WMs, notifications really do need to be override-redirect, or
we get some undesirable behavior, like never seeing notifications above
fullscreen windows.
Enabling this can be an unacceptable security risk if you leave your
compu...On some WMs, notifications really do need to be override-redirect, or
we get some undesirable behavior, like never seeing notifications above
fullscreen windows.
Enabling this can be an unacceptable security risk if you leave your
computer in a "public" place like an office, as it will allow
notifications to pop up over the screen saver / screen locker.
Closes #91.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/52Fix incorrect signal handler connections in settings dialog2023-02-12T23:55:36ZBrian TarriconeFix incorrect signal handler connections in settings dialogThe signal handler's signature for known_applications_changed didn't
match what we were passing to it, causing the known apps dialog to
completely empty any time the known applications list changed in xfconf.
Also fixed a crash bug that...The signal handler's signature for known_applications_changed didn't
match what we were passing to it, causing the known apps dialog to
completely empty any time the known applications list changed in xfconf.
Also fixed a crash bug that comes up once this is fixed.
Closes #89.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/51Notification windows don't need to be override-redirect2023-02-11T07:04:06ZBrian TarriconeNotification windows don't need to be override-redirectIf they are, they can sometimes end up on top of screensaver/screen
locker windows, which is a security issue.
It looks like notification windows were made override-redirect because
some WMs are buggy and will decorate the window withou...If they are, they can sometimes end up on top of screensaver/screen
locker windows, which is a security issue.
It looks like notification windows were made override-redirect because
some WMs are buggy and will decorate the window without it (see
https://bugzilla.xfce.org/show_bug.cgi?id=10686), but I don't think
that's a good reason to avoid fixing a security issue. Such WMs should
be fixed, instead.
Additionally, the window's type hint was being set twice, which isn't
necessary, so I'm removing the redundant call.
Closes #7.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/50Add setting to allow ignoring app-specified expire timeout2023-02-11T06:12:11ZBrian TarriconeAdd setting to allow ignoring app-specified expire timeoutCloses #82.Closes #82.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/49Improve the panel icon when there are unread notifications2023-02-10T06:48:49ZBrian TarriconeImprove the panel icon when there are unread notificationsPreviously we used some semi-custom icon names for when there are new
notifications, but it seems many/most themes don't have this icon. In
addition, some themes might choose to not put any kind of emblem or
visual aid on the icon when ...Previously we used some semi-custom icon names for when there are new
notifications, but it seems many/most themes don't have this icon. In
addition, some themes might choose to not put any kind of emblem or
visual aid on the icon when there are new notifications in some states.
So instead, we have our own "emblem", and we draw it on the "default"
icon (either notifiation-symbolic or notification-disabled-symbolic) in
order to ensure we get some kind of indicator on the icon when there are
unread notifications.https://gitlab.xfce.org/apps/xfce4-notifyd/-/merge_requests/47Very large logging overhaul2023-02-10T00:33:59ZBrian TarriconeVery large logging overhaulThis drops the keyfile-based log in favor of sqlite, which should eliminate log performance issues, and allow users to more or less log in perpetuity if they so desire. It also makes it easier to tell when notifications are unread, and ...This drops the keyfile-based log in favor of sqlite, which should eliminate log performance issues, and allow users to more or less log in perpetuity if they so desire. It also makes it easier to tell when notifications are unread, and fixes up some issues with the panel plugin icon around unread notifications.
There are also several other useful additions here:
* Log viewer in the settings dialog can now mark all read, and also mark individual entries read or delete them. The log viewer also supports multi-select, so multiple entries can be marked read or deleted at the same time.
* Log viewer in the settings dialog will progressively load more and more log entries as the user scrolls to the bottom.
* The log entry icon now shows a small emblem if the entry is unread.
* Panel plugin menu now has a "Mark all read" item.
* Panel plugin can now show all notifications or only unread notifications.
* Panel plugin allows setting what happens when the menu is shown (mark all read, mark only those shown read, do nothing).
* The format of the timestamps shown in the plugin menu and log viewer is now configurable.
As a consequence, this closes #33.