From 4da4cee83965a13079b3c6abd769951471501d64 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Wed, 3 Jul 2024 17:20:33 +0300 Subject: [PATCH] Add cliphist Signed-off-by: Nikolaos Karaolidis --- .../configs/ags/config/src/widgets/bar/bar.ts | 2 +- .../src/widgets/bar/clipboard/clipboard.ts | 10 ++++++ users/configs/ags/default.nix | 2 ++ users/configs/ags/theme.sass | 3 +- users/configs/cliphist/default.nix | 35 +++++++++++++++++++ users/configs/swww/default.nix | 11 +++--- users/nick/default.nix | 1 + 7 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 users/configs/ags/config/src/widgets/bar/clipboard/clipboard.ts create mode 100644 users/configs/cliphist/default.nix diff --git a/users/configs/ags/config/src/widgets/bar/bar.ts b/users/configs/ags/config/src/widgets/bar/bar.ts index eddc721..c39f224 100644 --- a/users/configs/ags/config/src/widgets/bar/bar.ts +++ b/users/configs/ags/config/src/widgets/bar/bar.ts @@ -1,7 +1,7 @@ import gap from './gap/gap'; -import date from './date/date'; import launcher from './launcher/launcher'; import workspace from './workspace/workspace'; +import date from './date/date'; export default (monitor: number) => Widget.Window({ monitor, diff --git a/users/configs/ags/config/src/widgets/bar/clipboard/clipboard.ts b/users/configs/ags/config/src/widgets/bar/clipboard/clipboard.ts new file mode 100644 index 0000000..907801a --- /dev/null +++ b/users/configs/ags/config/src/widgets/bar/clipboard/clipboard.ts @@ -0,0 +1,10 @@ +const icon = () => Widget.Icon({ + class_name: 'icon', + icon: "edit-paste-symbolic", +}); + +export default () => Widget.EventBox({ + class_name: 'clipboard', + on_primary_click: () => Utils.execAsync('bash -c "cliphist list | rofi -cache-dir $XDG_CACHE_HOME/rofi -dmenu -display-columns 2 | cliphist decode | wl-copy"'), + child: icon(), +}); diff --git a/users/configs/ags/default.nix b/users/configs/ags/default.nix index 895e389..7aabaa5 100644 --- a/users/configs/ags/default.nix +++ b/users/configs/ags/default.nix @@ -26,6 +26,8 @@ in hyprland nixos-icons rofi-wayland + wl-clipboard + cliphist ]; text = "ags &> /tmp/ags.log"; })} &"; diff --git a/users/configs/ags/theme.sass b/users/configs/ags/theme.sass index b9dc605..b29c653 100644 --- a/users/configs/ags/theme.sass +++ b/users/configs/ags/theme.sass @@ -20,6 +20,7 @@ min-width: .5 * {{custom.padding}}pt .launcher + .clipboard @include interactive min-width: {{custom.font_size}}pt @@ -27,7 +28,7 @@ .icon font-size: {{custom.font_size}}pt padding: 0 .3 * {{custom.padding}}pt - color: {{colors.primary.default.hex}} + color: {{colors.on_surface.default.hex}} .workspace @include interactive diff --git a/users/configs/cliphist/default.nix b/users/configs/cliphist/default.nix new file mode 100644 index 0000000..e4509e0 --- /dev/null +++ b/users/configs/cliphist/default.nix @@ -0,0 +1,35 @@ +{ user ? throw "user argument is required" }: { config, lib, pkgs, ... }: + +let + hmConfig = config.home-manager.users.${user.name}; +in +{ + home-manager.users.${user.name} = { + home = { + packages = with pkgs; [ wl-clipboard cliphist ]; + persistence."/cache${user.home}".directories = [ "${hmConfig.xdg.relativeCacheHome}/cliphist" ]; + }; + + wayland.windowManager.hyprland = { + initExtraConfig = '' + ${lib.meta.getExe (pkgs.writeShellApplication { + name = "init-cliphist-text"; + runtimeInputs = with pkgs; [ wl-clipboard cliphist ]; + text = "wl-paste --type text --watch cliphist store"; + })} & + + ${lib.meta.getExe (pkgs.writeShellApplication { + name = "init-cliphist-image"; + runtimeInputs = with pkgs; [ wl-clipboard cliphist ]; + text = "wl-paste --type image --watch cliphist store"; + })} & + ''; + + settings.bind = [ + "$mod, v, exec, cliphist list | ${lib.meta.getExe pkgs.rofi-wayland} -cache-dir ${hmConfig.xdg.cacheHome}/rofi -dmenu -display-columns 2 | cliphist decode | wl-copy" + "$mod_CTRL, v, exec, cliphist list | ${lib.meta.getExe pkgs.rofi-wayland} -cache-dir ${hmConfig.xdg.cacheHome}/rofi -dmenu -display-columns 2 | cliphist delete" + "$mod_CTRL_SHIFT, v, exec, cliphist wipe" + ]; + }; + }; +} diff --git a/users/configs/swww/default.nix b/users/configs/swww/default.nix index 35304d4..342fcfb 100644 --- a/users/configs/swww/default.nix +++ b/users/configs/swww/default.nix @@ -12,7 +12,10 @@ in wayland.windowManager.hyprland.initExtraConfig = "${lib.meta.getExe (pkgs.writeShellApplication { name = "init-swww"; - runtimeInputs = with pkgs; [ swww ]; + runtimeInputs = with pkgs; [ + coreutils-full + swww + ]; text = '' swww-daemon &> /tmp/swww.log @@ -26,11 +29,7 @@ in theme.extraConfig = lib.mkAfter "${lib.meta.getExe (pkgs.writeShellApplication { name = "theme-swww"; - runtimeInputs = with pkgs; [ - coreutils-full - procps - swww - ]; + runtimeInputs = with pkgs; [ swww ]; text = "swww img \"${hmConfig.theme.configDir}/wallpaper\""; })} &"; }; diff --git a/users/nick/default.nix b/users/nick/default.nix index 9b81f74..ca0bea0 100644 --- a/users/nick/default.nix +++ b/users/nick/default.nix @@ -11,6 +11,7 @@ in (import ../configs/firefox { inherit user; }) (import ../configs/hyprland { inherit user; }) (import ../configs/hyprshot { inherit user; }) + (import ../configs/cliphist { inherit user; }) (import ../configs/ags { inherit user; }) (import ../configs/wev { inherit user; }) (import ../configs/brightnessctl { inherit user; })