From eb79f88c598b8f577b774962c7cb00ee38e0ff70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Tue, 23 Aug 2022 21:44:34 +0200 Subject: [PATCH] feat(i3status-rust): show number of hot weechat buffers --- lib/i3status-rust.nix | 14 +++++++++ packages/weechatScripts/hotlist2extern.nix | 33 ++++++++++++++++++++++ systems/makanek/weechat.nix | 11 +++++++- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 packages/weechatScripts/hotlist2extern.nix diff --git a/lib/i3status-rust.nix b/lib/i3status-rust.nix index 369ac13..5fdb9fc 100644 --- a/lib/i3status-rust.nix +++ b/lib/i3status-rust.nix @@ -36,6 +36,7 @@ in { icons.name = "awesome6"; icons.overrides.rss = ""; icons.overrides.vpn = ""; + icons.overrides.irc = ""; block = [ { block = "weather"; @@ -142,6 +143,19 @@ in { json = true; hide_when_empty = true; } + { + block = "custom"; + interval = 60; + command = pkgs.writers.writeDash "weechat" '' + ssh makanek cat /var/lib/weechat/hotlist.txt | sed 's/,/\n/g' | wc -l | jq '{ + text: (if . > 0 then . | tostring else "" end), + state: (if . > 0 then "Info" else "Idle" end), + icon: "irc" + }' + ''; + json = true; + hide_when_empty = true; + } { block = "custom"; interval = 5; diff --git a/packages/weechatScripts/hotlist2extern.nix b/packages/weechatScripts/hotlist2extern.nix new file mode 100644 index 0000000..0284d9b --- /dev/null +++ b/packages/weechatScripts/hotlist2extern.nix @@ -0,0 +1,33 @@ +{ + stdenv, + lib, + fetchurl, + weechat, +}: +stdenv.mkDerivation { + pname = "hotlist2extern"; + version = "1.0"; + + src = fetchurl { + url = "https://raw.githubusercontent.com/weechat/scripts/dd627975cf2e464f206f8006cb3963c8ee82044c/perl/hotlist2extern.pl"; + sha256 = "1flpikm1kq6m9rh3hmafni9f2yi1b90w539k3hj55a5c9gddp2lr"; + }; + + dontUnpack = true; + + installPhase = '' + mkdir -p $out/share + cp $src $out/share/hotlist2extern.pl + ''; + + passthru = { + scripts = ["hotlist2extern.pl"]; + }; + + meta = with lib; { + inherit (weechat.meta) platforms; + description = "Give hotlist to an external file/program"; + license = licenses.gpl3; + maintainers = with maintainers; [kmein]; + }; +} diff --git a/systems/makanek/weechat.nix b/systems/makanek/weechat.nix index 20cc7b3..afc2718 100644 --- a/systems/makanek/weechat.nix +++ b/systems/makanek/weechat.nix @@ -5,6 +5,7 @@ }: let inherit (import ) kieran; relayPassword = lib.fileContents ; + weechatHome = "/var/lib/weechat"; in { systemd.services.weechat = let tmux = pkgs.writers.writeDash "tmux" '' @@ -31,6 +32,7 @@ in { pkgs.weechatScripts.weechat-autosort pkgs.weechatScripts.colorize_nicks pkgs.weechatScripts.weechat-matrix + (pkgs.callPackage {}) ]; settings = let nick = "kmein"; @@ -106,6 +108,13 @@ in { }; }; logger.level.irc.news = 0; + plugins.var.perl.hotlist2extern = { + external_command_hotlist = "echo %X > ${weechatHome}/hotlist.txt"; + external_command_hotlist_empty = "echo -n %X > ${weechatHome}/hotlist.txt"; + lowest_priority = "2"; + use_title = "off"; + delimiter = ","; + }; matrix.server.nibbana = { address = "nibbana.jp"; username = nick; @@ -163,7 +172,7 @@ in { wantedBy = ["multi-user.target"]; restartIfChanged = true; path = [pkgs.alacritty.terminfo]; - environment.WEECHAT_HOME = "/var/lib/weechat"; + environment.WEECHAT_HOME = weechatHome; preStart = "${pkgs.coreutils}/bin/rm $WEECHAT_HOME/*.conf"; script = "${tmux} -2 new-session -d -s IM ${weechat}/bin/weechat"; preStop = "${tmux} kill-session -t IM";