diff --git a/hosts/by-name/desko/default.nix b/hosts/by-name/desko/default.nix index 1284a13f..7bcda3e8 100644 --- a/hosts/by-name/desko/default.nix +++ b/hosts/by-name/desko/default.nix @@ -28,6 +28,7 @@ sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" "desktopConsoleUtils" ]; # sane.programs.devPkgs.enableFor.user.colin = true; + sane.programs.signal-desktop.config.autostart = true; sane.programs."gnome.geary".config.autostart = true; boot.loader.efi.canTouchEfiVariables = false; diff --git a/hosts/by-name/moby/default.nix b/hosts/by-name/moby/default.nix index 3dbd8aa1..f8ad889a 100644 --- a/hosts/by-name/moby/default.nix +++ b/hosts/by-name/moby/default.nix @@ -50,6 +50,7 @@ # sane.programs.ntfy-sh.config.autostart = true; sane.programs.dino.config.autostart = true; + # sane.programs.signal-desktop.config.autostart = true; # sane.programs."gnome.geary".config.autostart = true; # sane.programs.calls.config.autostart = true; sane.programs.mpv.config.vo = "wlshm"; #< see hosts/common/programs/mpv.nix for details diff --git a/hosts/common/programs/signal-desktop.nix b/hosts/common/programs/signal-desktop.nix index 728138b8..ebfdf425 100644 --- a/hosts/common/programs/signal-desktop.nix +++ b/hosts/common/programs/signal-desktop.nix @@ -1,10 +1,35 @@ -{ pkgs, ... }: +{ config, lib, pkgs, ... }: +let + cfg = config.sane.programs.signal-desktop; +in { sane.programs.signal-desktop = { + configOption = with lib; mkOption { + default = {}; + type = types.submodule { + options.autostart = mkOption { + type = types.bool; + default = false; + }; + }; + }; + package = pkgs.signal-desktop-from-src; + # creds, media persist.byStore.private = [ ".config/Signal" ]; + + services.signal-desktop = { + description = "Signal Messenger"; + wantedBy = lib.mkIf cfg.config.autostart [ "default.target" ]; + serviceConfig = { + ExecStart = "${cfg.package}/bin/signal-desktop"; + Type = "simple"; + Restart = "always"; + RestartSec = "20s"; + }; + }; }; } diff --git a/hosts/common/programs/swaynotificationcenter.nix b/hosts/common/programs/swaynotificationcenter.nix index 8e745e0f..a52d6d28 100644 --- a/hosts/common/programs/swaynotificationcenter.nix +++ b/hosts/common/programs/swaynotificationcenter.nix @@ -358,6 +358,13 @@ in command = "${systemctl-toggle}/bin/systemctl-toggle --user geary"; active = "${pkgs.systemd}/bin/systemctl is-active --user geary"; } + ] ++ lib.optionals config.sane.programs.signal-desktop.enabled [ + { + type = "toggle"; + label = "💬"; # Signal messenger + command = "${systemctl-toggle}/bin/systemctl-toggle --user signal-desktop"; + active = "${pkgs.systemd}/bin/systemctl is-active --user signal-desktop"; + } ] ++ lib.optionals config.sane.programs.dino.enabled [ { type = "toggle"; diff --git a/hosts/modules/gui/sway/sway-config b/hosts/modules/gui/sway/sway-config index 9442b78e..cd86077f 100644 --- a/hosts/modules/gui/sway/sway-config +++ b/hosts/modules/gui/sway/sway-config @@ -142,11 +142,13 @@ bar { for_window [app_id="pinentry-.*"] floating true for_window [app_id="foot" title=".*sxmo/modem/.*/draft.txt.*"] resize set height 25 for_window [title="megapixels"] inhibit_idle open -# Dino (XMPP) is ordinarily started for the purpose of daemonizing (but still visible). keep it on a predictable, out-of-the-way workspace -# TODO: could be neat to somehow do this in a way that it never steals focus from anything... + +# workspace assignments +# mostly, messengers belong on WS 1 for_window [app_id="im.dino.Dino"] move container to workspace number 1 for_window [app_id="org.gnome.Fractal"] move container to workspace number 1 for_window [app_id="geary"] move container to workspace number 1 +for_window [class="Signal"] move container to workspace number 1 ### displays ## DESKTOP