From 63cd833778cd1013ef46fffc399c00732d365824 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Thu, 15 Aug 2024 14:14:28 +0200 Subject: [PATCH] Add custom clipboard scripts Signed-off-by: Nikolaos Karaolidis --- .../src/widgets/bar/clipboard/clipboard.ts | 2 +- hosts/common/user/configs/gui/ags/default.nix | 4 +-- .../user/configs/gui/cliphist/default.nix | 8 +++--- .../common/user/configs/gui/cliphist/rofi.nix | 26 +++++++++++++++++++ .../user/configs/gui/cliphist/scripts/copy.sh | 13 ++++++++++ .../configs/gui/cliphist/scripts/delete.sh | 13 ++++++++++ 6 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 hosts/common/user/configs/gui/cliphist/rofi.nix create mode 100755 hosts/common/user/configs/gui/cliphist/scripts/copy.sh create mode 100755 hosts/common/user/configs/gui/cliphist/scripts/delete.sh diff --git a/hosts/common/user/configs/gui/ags/config/src/widgets/bar/clipboard/clipboard.ts b/hosts/common/user/configs/gui/ags/config/src/widgets/bar/clipboard/clipboard.ts index 031e267..befe7d9 100644 --- a/hosts/common/user/configs/gui/ags/config/src/widgets/bar/clipboard/clipboard.ts +++ b/hosts/common/user/configs/gui/ags/config/src/widgets/bar/clipboard/clipboard.ts @@ -6,5 +6,5 @@ const icon = () => Widget.Icon({ export default () => Widget.EventBox({ class_name: 'clipboard', child: icon(), - onPrimaryClick: () => Utils.execAsync('bash -c "cliphist list | rofi -cache-dir $XDG_CACHE_HOME/rofi -dmenu -display-columns 2 | cliphist decode | wl-copy"'), + onPrimaryClick: () => Utils.execAsync('cliphist-rofi'), }); diff --git a/hosts/common/user/configs/gui/ags/default.nix b/hosts/common/user/configs/gui/ags/default.nix index a571b59..86c1004 100644 --- a/hosts/common/user/configs/gui/ags/default.nix +++ b/hosts/common/user/configs/gui/ags/default.nix @@ -48,10 +48,8 @@ in sassc hyprland nixos-icons - rofi-wayland - wl-clipboard - cliphist libdbusmenu-gtk3 + (pkgs.callPackage ../cliphist/rofi.nix { }) ]; text = "exec ags"; } diff --git a/hosts/common/user/configs/gui/cliphist/default.nix b/hosts/common/user/configs/gui/cliphist/default.nix index 049b774..b34ea89 100644 --- a/hosts/common/user/configs/gui/cliphist/default.nix +++ b/hosts/common/user/configs/gui/cliphist/default.nix @@ -69,14 +69,12 @@ wayland.windowManager.hyprland.settings.bind = let + cliphist-rofi = lib.meta.getExe (pkgs.callPackage ./rofi.nix { }); cliphist = lib.meta.getExe pkgs.cliphist; - rofi = lib.meta.getExe pkgs.rofi-wayland; - wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; in [ - "$mod, v, exec, ${cliphist} list | ${rofi} -cache-dir ${home}/.cache/rofi -dmenu -display-columns 2 | ${cliphist} decode | ${wl-copy}" - "$mod_Ctrl, v, exec, ${cliphist} list | ${rofi} -cache-dir ${home}/.cache/rofi -dmenu -display-columns 2 | ${cliphist} delete" - "$mod_Ctrl_Shift, v, exec, ${cliphist} wipe" + "$mod, v, exec, ${cliphist-rofi}" + "$mod_Ctrl, v, exec, ${cliphist} wipe" ]; }; } diff --git a/hosts/common/user/configs/gui/cliphist/rofi.nix b/hosts/common/user/configs/gui/cliphist/rofi.nix new file mode 100644 index 0000000..6d3f158 --- /dev/null +++ b/hosts/common/user/configs/gui/cliphist/rofi.nix @@ -0,0 +1,26 @@ +{ lib, pkgs, ... }: +let + copy = lib.meta.getExe ( + pkgs.writeShellApplication { + name = "copy"; + runtimeInputs = with pkgs; [ + cliphist + wl-clipboard + ]; + text = builtins.readFile ./scripts/copy.sh; + } + ); + + delete = lib.meta.getExe ( + pkgs.writeShellApplication { + name = "delete"; + runtimeInputs = with pkgs; [ cliphist ]; + text = builtins.readFile ./scripts/delete.sh; + } + ); +in +pkgs.writeShellApplication { + name = "cliphist-rofi"; + runtimeInputs = with pkgs; [ rofi-wayland ]; + text = "rofi -modi \"copy:${copy},delete:${delete}\" -show copy"; +} diff --git a/hosts/common/user/configs/gui/cliphist/scripts/copy.sh b/hosts/common/user/configs/gui/cliphist/scripts/copy.sh new file mode 100755 index 0000000..cf69ec0 --- /dev/null +++ b/hosts/common/user/configs/gui/cliphist/scripts/copy.sh @@ -0,0 +1,13 @@ +list() { + echo -en "\0keep-selection\x1ftrue\n" + cliphist list +} + +handle() { + cliphist decode <<< "$1" | wl-copy +} + +case $ROFI_RETV in + 0) list ;; + 1) handle "$@" ;; +esac diff --git a/hosts/common/user/configs/gui/cliphist/scripts/delete.sh b/hosts/common/user/configs/gui/cliphist/scripts/delete.sh new file mode 100755 index 0000000..915b694 --- /dev/null +++ b/hosts/common/user/configs/gui/cliphist/scripts/delete.sh @@ -0,0 +1,13 @@ +list() { + echo -en "\0keep-selection\x1ftrue\n" + cliphist list +} + +handle() { + cliphist delete <<< "$1" +} + +case $ROFI_RETV in + 0) list ;; + 1) handle "$@" && list ;; +esac