diff --git a/defaults/bin/moonarch-clipboard b/defaults/bin/moonarch-clipboard new file mode 100755 index 0000000..d3add5a --- /dev/null +++ b/defaults/bin/moonarch-clipboard @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# ABOUTME: Rofi-based clipboard history manager using cliphist and wl-copy. +# ABOUTME: Lists clipboard entries and copies the selected one. + +CLIPHIST_DB="/run/user/1000/cliphist/db" + +function start_rofi() { + local content="$1" + echo -e "$content" | rofi -dmenu -theme /etc/xdg/rofi/themes/clipboard.rasi -mesg "󰅍 Clipboard History" +} + +function main() { + local entries + local result + + entries=$(cliphist -db-path "$CLIPHIST_DB" list) + result=$(start_rofi "$entries") + + if [ -n "$result" ]; then + echo "$result" | cliphist -db-path "$CLIPHIST_DB" decode | wl-copy + else + exit 1 + fi +} + +main diff --git a/defaults/xdg/niri/config.kdl b/defaults/xdg/niri/config.kdl index 46c71db..6aa03c3 100644 --- a/defaults/xdg/niri/config.kdl +++ b/defaults/xdg/niri/config.kdl @@ -121,7 +121,7 @@ window-rule { binds { Mod+Shift+Slash { show-hotkey-overlay; } - Super+C hotkey-overlay-title=null { spawn-sh "cliphist -db-path /run/user/1000/cliphist/db list | rofi -dmenu | cliphist -db-path /run/user/1000/cliphist/db decode | wl-copy"; } + Super+C hotkey-overlay-title=null { spawn "moonarch-clipboard"; } Alt+W { spawn-sh "killall waybar && waybar &"; } diff --git a/defaults/xdg/rofi/themes/clipboard.rasi b/defaults/xdg/rofi/themes/clipboard.rasi new file mode 100644 index 0000000..bf8318a --- /dev/null +++ b/defaults/xdg/rofi/themes/clipboard.rasi @@ -0,0 +1,44 @@ +configuration { + modi: "drun"; + show-icons: false; + drun-display-format: "{name}"; +} + +@import "../config.rasi" +@import "../colors.rasi" + + +window { + enabled: true; + cursor: "default"; + width: 600px; +} + + +mainbox { + children: [ "message", "listview", "inputbar" ]; +} + + +inputbar { + enabled: true; + + children: [ "textbox-prompt-colon", "entry", "mode-switcher" ]; +} + +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; +} + +element-icon { + size: 0px; +}