87 lines
2.5 KiB
Nix
87 lines
2.5 KiB
Nix
{
|
|
pkgs,
|
|
repoFlake,
|
|
...
|
|
}: {
|
|
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 = "¯\\_(ツ)_/¯";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|