diff --git a/modules/desktop.nix b/modules/desktop.nix index 7fdd9e4..de19389 100644 --- a/modules/desktop.nix +++ b/modules/desktop.nix @@ -5,6 +5,7 @@ let window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../scripts/desktop/window-screenshot.sh); # desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh); desktop-ctl = import ../scripts/desktop/desktopctl.nix { pkgs = pkgs; }; + permaclip = import ../scripts/desktop/permaclip { pkgs = pkgs; }; em-record = pkgs.writeShellScriptBin "em-record.sh" (builtins.readFile ../scripts/desktop/macros/record.sh); em-play = pkgs.writeShellScriptBin "em-play.sh" (builtins.readFile ../scripts/desktop/macros/play.sh); em-play-loop = pkgs.writeShellScriptBin "em-play-loop.sh" (builtins.readFile ../scripts/desktop/macros/play-loop.sh); @@ -28,6 +29,7 @@ in with lib; { libqalculate # needed by menu-qalc # custom scripts window-screenshot desktop-ctl em-record em-play em-play-loop ocr-screenshot menu-qalc + permaclip # themes gruvbox-dark-gtk gruvbox-dark-icons-gtk @@ -103,7 +105,7 @@ in with lib; { "${mod}+Shift+space" = "floating toggle"; # focus parents/children "${mod}+Shift+a" = "focus parent"; - "${mod}+c" = "focus child"; + "${mod}+Shift+c" = "focus child"; # screenshot "${mod}+w" = "exec window-screenshot.sh"; "${mod}+s" = "exec flameshot gui -c -p $HOME/Pictures/screenshots"; @@ -135,6 +137,10 @@ in with lib; { "${mod}+q" = "exec em-record.sh"; "${mod}+p" = "exec em-play.sh"; "${mod}+Shift+p" = "exec em-play-loop.sh"; + + # permaclip + "${mod}+c" = "rofi -show permaclip -modes \"permaclip:${permaclip.outPath}/bin/pc-set\" -theme gruvbox-dark"; + "${mod}+v" = "rofi -show permaclip -modes \"permaclip:${permaclip.outPath}/bin/pc-get\" -theme gruvbox-dark"; }; # }}} # Visuals {{{ diff --git a/scripts/desktop/macros/play-loop.sh b/scripts/desktop/macros/play-loop.sh index d5b23c7..a38f47e 100644 --- a/scripts/desktop/macros/play-loop.sh +++ b/scripts/desktop/macros/play-loop.sh @@ -1,3 +1,5 @@ +mkdir -p $HOME/xmacros + register=$(ls $HOME/xmacros | rofi -dmenu) count=$(echo "2;5;10;20;50;100" | rofi -dmenu -sep ";" -l 5) diff --git a/scripts/desktop/macros/play.sh b/scripts/desktop/macros/play.sh index 6063fef..60587fd 100644 --- a/scripts/desktop/macros/play.sh +++ b/scripts/desktop/macros/play.sh @@ -1,3 +1,5 @@ +mkdir -p $HOME/xmacros + register=$(ls $HOME/xmacros | rofi -dmenu) xmacroplay "$DISPLAY" < $HOME/xmacros/$register diff --git a/scripts/desktop/macros/record.sh b/scripts/desktop/macros/record.sh index 082f0cc..b768c5b 100644 --- a/scripts/desktop/macros/record.sh +++ b/scripts/desktop/macros/record.sh @@ -1,3 +1,5 @@ +mkdir -p $HOME/xmacros + register=$(ls $HOME/xmacros | rofi -dmenu) count=$(echo "2;5;10;20;50;100" | rofi -dmenu -sep ";" -l 5) diff --git a/scripts/desktop/permaclip/default.nix b/scripts/desktop/permaclip/default.nix new file mode 100644 index 0000000..db2e02e --- /dev/null +++ b/scripts/desktop/permaclip/default.nix @@ -0,0 +1,37 @@ +{ pkgs, ... }: +pkgs.writeShellScriptBin "pc-set" '' + # create ~/permaclip if it doesnt exist already + mkdir -p $HOME/permaclip + + tr_name=$(echo $@ | xargs) + if [ x"$tr_name" != x"" ]; then + tr_name="''${tr_name% (*}" + clipdata=$(xclip -selection c -o) + echo $clipdata > $HOME/permaclip/$tr_name + fi + + echo -e "\0markup-rows\x1ftrue" + + for reg in $(ls ~/permaclip); do + content=$(cat ~/permaclip/$reg) + echo -e "$reg (''${content:0:30})" + done +''; + +pkgs.writeShellScriptBin "pc-get" '' + # create ~/permaclip if it doesnt exist already + mkdir -p $HOME/permaclip + + tr_name=$(echo ''${@% (*} | xargs) + if [ x"$tr_name" != x"" ]; then + xclip -selection c -i $HOME/permaclip/''${tr_name% (*} &> /dev/null + exit 0 + fi + + echo -e "\0markup-rows\x1ftrue" + + for reg in $(ls ~/permaclip); do + content=$(cat ~/permaclip/$reg) + echo -e "$reg (''${content:0:50}...)" + done +'';