diff --git a/modules/services/blueman-applet.nix b/modules/services/blueman-applet.nix index 5a57acccc..460dd1677 100644 --- a/modules/services/blueman-applet.nix +++ b/modules/services/blueman-applet.nix @@ -24,7 +24,8 @@ with lib; systemd.user.services.blueman-applet = { Unit = { Description = "Blueman applet"; - After = [ "graphical-session-pre.target" ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/cbatticon.nix b/modules/services/cbatticon.nix index 0de69c5f9..a86805ddc 100644 --- a/modules/services/cbatticon.nix +++ b/modules/services/cbatticon.nix @@ -103,7 +103,8 @@ in { systemd.user.services.cbatticon = { Unit = { Description = "cbatticon system tray battery icon"; - After = [ "graphical-session-pre.target" ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/flameshot.nix b/modules/services/flameshot.nix index c8659d51d..13fb7ea20 100644 --- a/modules/services/flameshot.nix +++ b/modules/services/flameshot.nix @@ -18,12 +18,8 @@ in { systemd.user.services.flameshot = { Unit = { Description = "Flameshot screenshot tool"; - After = [ - "graphical-session-pre.target" - "polybar.service" - "stalonetray.service" - "taffybar.service" - ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/network-manager-applet.nix b/modules/services/network-manager-applet.nix index bf57ed650..b84861a99 100644 --- a/modules/services/network-manager-applet.nix +++ b/modules/services/network-manager-applet.nix @@ -19,7 +19,8 @@ in { systemd.user.services.network-manager-applet = { Unit = { Description = "Network Manager applet"; - After = [ "graphical-session-pre.target" ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/parcellite.nix b/modules/services/parcellite.nix index cf1a7fe89..dddb0631d 100644 --- a/modules/services/parcellite.nix +++ b/modules/services/parcellite.nix @@ -27,7 +27,8 @@ in { systemd.user.services.parcellite = { Unit = { Description = "Lightweight GTK+ clipboard manager"; - After = [ "graphical-session-pre.target" ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/pasystray.nix b/modules/services/pasystray.nix index 7c6651d94..d41d6c934 100644 --- a/modules/services/pasystray.nix +++ b/modules/services/pasystray.nix @@ -13,7 +13,8 @@ with lib; systemd.user.services.pasystray = { Unit = { Description = "PulseAudio system tray"; - After = [ "graphical-session-pre.target" ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/polybar.nix b/modules/services/polybar.nix index 720f9c6fb..8a8e99942 100644 --- a/modules/services/polybar.nix +++ b/modules/services/polybar.nix @@ -197,8 +197,7 @@ in { systemd.user.services.polybar = { Unit = { Description = "Polybar status bar"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; + PartOf = [ "tray.target" ]; X-Restart-Triggers = [ "${config.xdg.configFile."polybar/config".source}" ]; }; @@ -212,7 +211,7 @@ in { Restart = "on-failure"; }; - Install = { WantedBy = [ "graphical-session.target" ]; }; + Install = { WantedBy = [ "tray.target" ]; }; }; }; diff --git a/modules/services/stalonetray.nix b/modules/services/stalonetray.nix index cca604989..ec83a9a49 100644 --- a/modules/services/stalonetray.nix +++ b/modules/services/stalonetray.nix @@ -56,11 +56,10 @@ in { systemd.user.services.stalonetray = { Unit = { Description = "Stalonetray system tray"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; + PartOf = [ "tray.target" ]; }; - Install = { WantedBy = [ "graphical-session.target" ]; }; + Install = { WantedBy = [ "tray.target" ]; }; Service = { ExecStart = "${cfg.package}/bin/stalonetray"; diff --git a/modules/services/status-notifier-watcher.nix b/modules/services/status-notifier-watcher.nix index 3c3e54877..8ff1caceb 100644 --- a/modules/services/status-notifier-watcher.nix +++ b/modules/services/status-notifier-watcher.nix @@ -29,16 +29,17 @@ in { systemd.user.services.status-notifier-watcher = { Unit = { Description = "SNI watcher"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; + PartOf = [ "tray.target" ]; Before = [ "taffybar.service" ]; }; - Service = { ExecStart = "${cfg.package}/bin/status-notifier-watcher"; }; - - Install = { - WantedBy = [ "graphical-session.target" "taffybar.service" ]; + Service = { + Type = "dbus"; + BusName = "org.kde.StatusNotifierWatcher"; + ExecStart = "${cfg.package}/bin/status-notifier-watcher"; }; + + Install = { WantedBy = [ "tray.target" "taffybar.service" ]; }; }; }; } diff --git a/modules/services/syncthing.nix b/modules/services/syncthing.nix index f1f39d2b5..e63f3707e 100644 --- a/modules/services/syncthing.nix +++ b/modules/services/syncthing.nix @@ -74,12 +74,8 @@ with lib; ${config.services.syncthing.tray.package.pname} = { Unit = { Description = config.services.syncthing.tray.package.pname; - After = [ - "graphical-session-pre.target" - "polybar.service" - "taffybar.service" - "stalonetray.service" - ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; @@ -100,12 +96,8 @@ with lib; "syncthingtray" = { Unit = { Description = "syncthingtray"; - After = [ - "graphical-session-pre.target" - "polybar.service" - "taffybar.service" - "stalonetray.service" - ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/services/taffybar.nix b/modules/services/taffybar.nix index 539275542..ef4c62e42 100644 --- a/modules/services/taffybar.nix +++ b/modules/services/taffybar.nix @@ -27,16 +27,17 @@ in { systemd.user.services.taffybar = { Unit = { Description = "Taffybar desktop bar"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; + PartOf = [ "tray.target" ]; }; Service = { + Type = "dbus"; + BusName = "org.taffybar.Bar"; ExecStart = "${cfg.package}/bin/taffybar"; Restart = "on-failure"; }; - Install = { WantedBy = [ "graphical-session.target" ]; }; + Install = { WantedBy = [ "tray.target" ]; }; }; xsession.importedVariables = [ "GDK_PIXBUF_MODULE_FILE" ]; diff --git a/modules/services/udiskie.nix b/modules/services/udiskie.nix index ca31021cb..331e65ffc 100644 --- a/modules/services/udiskie.nix +++ b/modules/services/udiskie.nix @@ -77,7 +77,8 @@ in { systemd.user.services.udiskie = { Unit = { Description = "udiskie mount daemon"; - After = [ "graphical-session-pre.target" ]; + Requires = [ "tray.target" ]; + After = [ "graphical-session-pre.target" "tray.target" ]; PartOf = [ "graphical-session.target" ]; }; diff --git a/modules/xsession.nix b/modules/xsession.nix index d32c28491..93b3dbf9e 100644 --- a/modules/xsession.nix +++ b/modules/xsession.nix @@ -110,12 +110,21 @@ in { }; }; - # A basic graphical session target for Home Manager. - targets.hm-graphical-session = { - Unit = { - Description = "Home Manager X session"; - Requires = [ "graphical-session-pre.target" ]; - BindsTo = [ "graphical-session.target" ]; + targets = { + # A basic graphical session target for Home Manager. + hm-graphical-session = { + Unit = { + Description = "Home Manager X session"; + Requires = [ "graphical-session-pre.target" ]; + BindsTo = [ "graphical-session.target" "tray.target" ]; + }; + }; + + tray = { + Unit = { + Description = "Home Manager System Tray"; + Requires = [ "graphical-session-pre.target" ]; + }; }; }; };