diff --git a/pkgs/applications/misc/waybar/default.nix b/pkgs/applications/misc/waybar/default.nix index c4a764fec97b..7c0c88bb6d87 100644 --- a/pkgs/applications/misc/waybar/default.nix +++ b/pkgs/applications/misc/waybar/default.nix @@ -18,6 +18,7 @@ , libxkbcommon , cavaSupport ? true, alsa-lib, fftw, iniparser, ncurses, pipewire, portaudio, SDL2 , evdevSupport ? true, libevdev +, hyprlandSupport ? false, hyprland , inputSupport ? true, libinput , jackSupport ? true, libjack2 , mpdSupport ? true, libmpdclient @@ -65,6 +66,10 @@ stdenv.mkDerivation rec { ) ''; + # Patch for workspaces support in wlr/workspaces + # See https://wiki.hyprland.org/Useful-Utilities/Status-Bars/#waybar + patches = lib.optional hyprlandSupport [ ./hyprland.diff ]; + nativeBuildInputs = [ meson ninja pkg-config scdoc wrapGAppsHook ] ++ lib.optional withMediaPlayer gobject-introspection; @@ -88,6 +93,7 @@ stdenv.mkDerivation rec { ++ optional cavaSupport portaudio ++ optional cavaSupport SDL2 ++ optional evdevSupport libevdev + ++ optional hyprlandSupport hyprland ++ optional inputSupport libinput ++ optional jackSupport libjack2 ++ optional mpdSupport libmpdclient @@ -126,7 +132,7 @@ stdenv.mkDerivation rec { "-Dsystemd=disabled" "-Dgtk-layer-shell=enabled" "-Dman-pages=enabled" - ]; + ] ++ lib.optional hyprlandSupport "-Dexperimental=true"; preFixup = lib.optionalString withMediaPlayer '' cp $src/resources/custom_modules/mediaplayer.py $out/bin/waybar-mediaplayer.py @@ -139,7 +145,7 @@ stdenv.mkDerivation rec { changelog = "https://github.com/alexays/waybar/releases/tag/${version}"; description = "Highly customizable Wayland bar for Sway and Wlroots based compositors"; license = licenses.mit; - maintainers = with maintainers; [ FlorianFranzen minijackson synthetica lovesegfault rodrgz ]; + maintainers = with maintainers; [ FlorianFranzen minijackson synthetica lovesegfault rodrgz jtbx ]; platforms = platforms.unix; homepage = "https://github.com/alexays/waybar"; mainProgram = "waybar"; diff --git a/pkgs/applications/misc/waybar/hyprland.diff b/pkgs/applications/misc/waybar/hyprland.diff new file mode 100644 index 000000000000..d3febdae4a1f --- /dev/null +++ b/pkgs/applications/misc/waybar/hyprland.diff @@ -0,0 +1,12 @@ +--- a/src/modules/wlr/workspace_manager.cpp ++++ b/src/modules/wlr/workspace_manager.cpp +@@ -523,7 +523,8 @@ + if (action.empty()) + return true; + else if (action == "activate") { +- zext_workspace_handle_v1_activate(workspace_handle_); ++ const std::string command = "hyprctl dispatch workspace " + name_; ++ system(command.c_str()); + } else if (action == "close") { + zext_workspace_handle_v1_remove(workspace_handle_); + } else { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3f322beb3aa6..51ab19fe7443 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -32354,6 +32354,10 @@ with pkgs; waybar = callPackage ../applications/misc/waybar { }; + waybar-hyprland = callPackage ../applications/misc/waybar { + hyprlandSupport = true; + }; + waycorner = callPackage ../applications/misc/waycorner { }; waylock = callPackage ../applications/misc/waylock {