From 3bbd0667a84a8d4b2a80327bd62f0e61256212dc Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 1 Aug 2022 17:17:29 +0200 Subject: [PATCH] feat(graphical/qtile): add espanso and use playerctl for media commands --- nix/home-manager/profiles/qtile-desktop.nix | 53 +++++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/nix/home-manager/profiles/qtile-desktop.nix b/nix/home-manager/profiles/qtile-desktop.nix index 2717d7a..3d0b19c 100644 --- a/nix/home-manager/profiles/qtile-desktop.nix +++ b/nix/home-manager/profiles/qtile-desktop.nix @@ -84,14 +84,6 @@ let ${dpmsScript} default ''; - - dbusSendMediaPlayer2 = pkgs.writeScript "dbusSendMediaPlayer2" '' - #!${pkgs.bash}/bin/bash - for player in vlc spotify; do - ${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.mpris.MediaPlayer2.$player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.''${1:-PlayPause} - done - ''; - qtileConfig = pkgs.writeScript "qtile_config.py" '' from libqtile.config import Key, Screen, Group, Drag, Click from libqtile.command import lazy @@ -175,7 +167,7 @@ keys = [ Key([key_super], "k", lazy.layout.previous()), # Multimedia Keys - Key([], "XF86AudioPlay", lazy.spawn("${dbusSendMediaPlayer2} PlayPause")), + Key([], "XF86AudioPlay", lazy.spawn("${pkgs.playerctl}/bin/playerctl play-pause")), Key([], "XF86AudioPrev", lazy.spawn("${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous")), Key([], "XF86AudioNext", lazy.spawn("${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next")), ## Microsoft Comfort Curve specific @@ -306,6 +298,49 @@ in { }; }; }; + espanso = { + enable = true; + settings = { + 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 [ + { + trigger = ":vpos"; + replace = "{{output}}"; + vars = [ + { + name = "output"; + type = "script"; + params = { + args = [ + (pkgs.writeShellScript "espanso" '' + ${playerctl} position'' + ) + ]; + }; + } + ]; + } + { + trigger = ":vtit"; + replace = "{{output}}"; + vars = [ + { + name = "output"; + type = "script"; + params = { + args = [ + (pkgs.writeShellScript "espanso" '' + ${playerctl} metadata title'' + ) + ]; + }; + } + ]; + } + ]; + }; + }; }; home.pointerCursor = {