From 8f7cf4252cd26266296a6bff299b3e4ae7709c37 Mon Sep 17 00:00:00 2001 From: Frantisek Bohacek Date: Sun, 24 Sep 2023 19:58:37 +0200 Subject: [PATCH] feat: add sequence detector for headphones feat: use sequence detector --- modules/desktop/qtile/config/config.py | 12 ++++---- .../config/sequence-detector.config.json | 18 ++++++++++++ modules/desktop/qtile/default.nix | 1 - modules/desktop/qtile/home.nix | 29 +++++++++++++++++-- 4 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 modules/desktop/qtile/config/sequence-detector.config.json diff --git a/modules/desktop/qtile/config/config.py b/modules/desktop/qtile/config/config.py index 0d54e25..7d224b1 100644 --- a/modules/desktop/qtile/config/config.py +++ b/modules/desktop/qtile/config/config.py @@ -17,7 +17,7 @@ from tasklist import TaskList from mpris2widget import Mpris2 from bluetooth import Bluetooth import xmonadcustom -from nixenvironment import setupLocation, configLocation +from nixenvironment import setupLocation, configLocation, sequenceDetectorExec colors = { 'primary': '51afef', @@ -409,11 +409,11 @@ keys.extend([ # media keys keys.extend([ - EzKey('', lazy.spawn('playerctl play')), - EzKey('', lazy.spawn('playerctl pause')), - EzKey('', lazy.spawn('playerctl stop')), - EzKey('', lazy.spawn('playerctl next')), - EzKey('', lazy.spawn('playerctl previous')), + EzKey('', lazy.spawn(f'{sequenceDetectorExec} -g mpris play')), + EzKey('', lazy.spawn(f'{sequenceDetectorExec} -g mpris pause')), + EzKey('', lazy.spawn(f'{sequenceDetectorExec} -g mpris stop')), + EzKey('', lazy.spawn(f'{sequenceDetectorExec} -g mpris next')), + EzKey('', lazy.spawn(f'{sequenceDetectorExec} -g mpris prev')), EzKey('', lazy.spawn('amixer -D pulse set Master 1+ toggle')), EzKey('', lazy.spawn('xbacklight -inc 5')), EzKey('', lazy.spawn('xbacklight -dec 5')), diff --git a/modules/desktop/qtile/config/sequence-detector.config.json b/modules/desktop/qtile/config/sequence-detector.config.json new file mode 100644 index 0000000..ba126d6 --- /dev/null +++ b/modules/desktop/qtile/config/sequence-detector.config.json @@ -0,0 +1,18 @@ +{ + "debounce_time": 500, + "groups": [ + { + "group_id": "mpris", + "sequences": [ + { "keys": ["next"], "action": "playerctl next" }, + { "keys": ["prev"], "action": "playerctl previous" }, + { "keys": ["play"], "action": "playerctl play" }, + { "keys": ["pause"], "action": "playerctl pause" }, + { "keys": ["volup"], "action": "amixer set Master 10%+ unmute" }, + { "keys": ["voldown"], "action": "amixer set Master 10%- unmute" }, + { "keys": ["next", "next"], "action": "playerctl --player=firefox play-pause" }, + { "keys": ["next", "prev"], "action": "playerctl --player=spotify play-pause" } + ] + } + ] +} diff --git a/modules/desktop/qtile/default.nix b/modules/desktop/qtile/default.nix index 494189c..f761db8 100644 --- a/modules/desktop/qtile/default.nix +++ b/modules/desktop/qtile/default.nix @@ -4,7 +4,6 @@ imports = [(import ./python-overlay.nix)]; environment.systemPackages = with pkgs; [ - playerctl xkblayout-state ]; diff --git a/modules/desktop/qtile/home.nix b/modules/desktop/qtile/home.nix index 981afc3..da62a00 100644 --- a/modules/desktop/qtile/home.nix +++ b/modules/desktop/qtile/home.nix @@ -1,12 +1,34 @@ -{ config, lib, pkgs, location, ... }: +{ config, lib, pkgs, user, location, ... }: -{ +let + sequence-detector-src = pkgs.fetchFromGitHub { + owner = "Rutherther"; + repo = "sequence-detector"; + rev = "f9052a0232d8d4377446cb7aa813382977ed25a3"; + hash = "sha256-YJ7U/G9EOGaf25zqTAMMGK0A6dY0wmtcpesp3d2uzTk="; + }; + + sequence-detector-pkg = pkgs.rustPlatform.buildRustPackage { + pname = "sequence-detector"; + version = "0.1"; + src = sequence-detector-src; + cargoHash = "sha256-7S8TXqtKWR4utBeUe9Q7RrmHgJg5lqkLdmo9b+MTRGg="; + hash = "sha256-7S8TXqtKWR4utBeUe9Q7RrmHgJg5lqkLdmo9b+MTRGg="; + }; +in { # services.udev.extraRules = # ''ACTION=="change", SUBSYSTEM=="drm", RUN+="${pkgs.autorandr}/bin/autorandr -c"''; services.autorandr = { enable = true; }; + home.packages = with pkgs; [ + playerctl + sequence-detector-pkg + ]; + + services.playerctld.enable = true; + programs.autorandr = { enable = true; hooks = { @@ -79,6 +101,7 @@ xdg.configFile."qtile/mpris2widget.py".source = ./config/mpris2widget.py; xdg.configFile."qtile/tasklist.py".source = ./config/tasklist.py; xdg.configFile."qtile/xmonadcustom.py".source = ./config/xmonadcustom.py; + xdg.configFile."qtile/sequence-detector.config.json".source = ./config/sequence-detector.config.json; xdg.configFile."qtile/nixenvironment.py".text = '' from string import Template @@ -89,5 +112,7 @@ configLocationRef = Template("${location}/modules/desktop/qtile/config") setupLocation = setupLocationRef.substitute(os.environ) configLocation = configLocationRef.substitute(os.environ) + +sequenceDetectorExec = "sequence_detector -c /home/${user}/.config/qtile/sequence-detector.config.json " ''; } -- 2.48.1