about summary refs log tree commit diff
path: root/pkgs/tools/audio/pasystray
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/audio/pasystray')
-rw-r--r--pkgs/tools/audio/pasystray/default.nix5
-rw-r--r--pkgs/tools/audio/pasystray/fix-wayland.patch34
2 files changed, 39 insertions, 0 deletions
diff --git a/pkgs/tools/audio/pasystray/default.nix b/pkgs/tools/audio/pasystray/default.nix
index 648dcad42bad..8b0580ba98c4 100644
--- a/pkgs/tools/audio/pasystray/default.nix
+++ b/pkgs/tools/audio/pasystray/default.nix
@@ -14,6 +14,11 @@ stdenv.mkDerivation rec {
     sha256 = "0xx1bm9kimgq11a359ikabdndqg5q54pn1d1dyyjnrj0s41168fk";
   };
 
+  patches = [
+    # https://github.com/christophgysin/pasystray/issues/90#issuecomment-306190701
+    ./fix-wayland.patch
+  ];
+
   nativeBuildInputs = [ pkgconfig autoreconfHook wrapGAppsHook ];
   buildInputs = [
     gnome3.adwaita-icon-theme
diff --git a/pkgs/tools/audio/pasystray/fix-wayland.patch b/pkgs/tools/audio/pasystray/fix-wayland.patch
new file mode 100644
index 000000000000..17c4e2e6d658
--- /dev/null
+++ b/pkgs/tools/audio/pasystray/fix-wayland.patch
@@ -0,0 +1,34 @@
+--- a/src/x11-property.c
++++ b/src/x11-property.c
+@@ -43,11 +43,15 @@ static Window window;
+ void x11_property_init()
+ {
+     display = gdk_x11_get_default_xdisplay();
++    if (!GDK_IS_X11_DISPLAY(display)) return;
++    Screen* scr = ScreenOfDisplay(display, 0);
++
+     window = RootWindow(display, 0);
+ }
+ 
+ void x11_property_set(const char* key, const char* value)
+ {
++    if (!GDK_IS_X11_DISPLAY(display)) return;
+     g_debug("[x11-property] setting '%s' to '%s'", key, value);
+ 
+     Atom atom = XInternAtom(display, key, False);
+@@ -57,6 +61,7 @@ void x11_property_set(const char* key, c
+ 
+ void x11_property_del(const char* key)
+ {
++    if (!GDK_IS_X11_DISPLAY(display)) return;
+     g_debug("[x11-property] deleting '%s'", key);
+ 
+     Atom atom = XInternAtom(display, key, False);
+@@ -65,6 +70,7 @@ void x11_property_del(const char* key)
+ 
+ char* x11_property_get(const char* key)
+ {
++    if (!GDK_IS_X11_DISPLAY(display)) return NULL;
+     Atom property = XInternAtom(display, key, False);
+     Atom actual_type;
+     int actual_format;