{ pkgs, ... }: { services.espanso = { package = pkgs.espanso-wayland; # package = pkgs.espanso-wayland.overrideAttrs (_: { # src = repoFlake.inputs.espanso; # cargoLock = { # # lockFile = "${repoFlake.inputs.espanso.outPath}/Cargo.lock"; # lockFile = repoFlake.inputs.espanso + "/Cargo.lock"; # outputHashes = { # "yaml-rust-0.4.6" = "sha256-wXFy0/s4y6wB3UO19jsLwBdzMy7CGX4JoUt5V6cU7LU="; # }; # }; # }); enable = false; configs = { default = { # backend = "Inject"; # backend = "Clipboard"; }; }; matches = let playerctl = ''${pkgs.coreutils}/bin/env DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(${pkgs.coreutils}/bin/id -u)/bus" ${pkgs.playerctl}/bin/playerctl''; in { default = { matches = [ { trigger = ":vpos"; replace = "{{output}}"; vars = [ { name = "output"; type = "script"; params = { args = [ (pkgs.writeScript "espanso" '' #! ${pkgs.python3}/bin/python import subprocess, os, math, datetime id=str(os.getuid()) result=subprocess.run(args=["${pkgs.playerctl}/bin/playerctl", "position"], env={"DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/"+id+"/bus"},capture_output=True) result.check_returncode() position_secs = math.trunc(float(result.stdout)) position_human = datetime.timedelta(seconds=position_secs) print("%s - %s" % (position_human, position_secs)) '') ]; }; } ]; } { trigger = ":vtit"; replace = "{{output}}"; vars = [ { name = "output"; type = "script"; params = { args = [ (pkgs.writeShellScript "espanso" "${playerctl} metadata title") ]; }; } ]; } { trigger = ":dunno"; replace = "¯\\_(ツ)_/¯"; } { trigger = ":shrug"; replace = "¯\\_(ツ)_/¯"; } ]; }; }; }; }