Switch from clipit/gpaste to greenclip for clipboard management

- Remove clipit config and helper scripts
- Add greenclip service and rofi integration
- Update xmonad keybinding to use rofi_clipboard.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-30 00:09:48 -08:00
parent 9cdd201c41
commit df2c033d0f
7 changed files with 17 additions and 101 deletions

View File

@@ -1,27 +0,0 @@
[rc]
use_copy=true
use_primary=true
synchronize=false
automatic_paste=false
show_indexes=true
save_uris=true
use_rmb_menu=false
save_history=true
history_limit=1000
history_timeout_seconds=30
history_timeout=false
items_menu=50
statics_show=true
statics_items=10
hyperlinks_only=false
confirm_clear=false
single_line=false
reverse_history=false
item_length=50
ellipsize=2
history_key=
actions_key=
menu_key=
search_key=
offline_key=
offline_mode=false

View File

@@ -1019,7 +1019,7 @@ addKeys conf@XConfig { modMask = modm } =
-- Non-XMonad
, ((modm, xK_v), spawn "xclip -o | xdotool type --file -")
, ((hyper, xK_v), spawn "rofi_clipit.sh")
, ((hyper, xK_v), spawn "rofi_clipboard.sh")
, ((hyper, xK_p), spawn "rofi-pass")
, ((hyper, xK_h), spawn "rofi_shutter")
, ((hyper, xK_c), spawn "shell_command.sh")

View File

@@ -1,63 +0,0 @@
#!/usr/bin/env python
from __future__ import print_function
import appdirs
import argparse
import os
import struct
clipit_history_file = os.path.join(
appdirs.user_data_dir(), "clipit/history",
)
def get_clipit_history(filename):
with open(filename, 'rb') as f:
f.read(68)
size, _ = struct.unpack('2i', f.read(8))
while (size > 0):
item = f.read(size)
if item:
yield item.decode('utf-8')
_, _, _, size, _ = struct.unpack('5i', f.read(20))
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Lookup clipit history')
parser.add_argument(
'--separator', '-s',
help='the separator to use when outputting history',
type=str,
default='\n',
)
parser.add_argument(
'--begin-index', '-b',
type=int,
default=0
)
parser.add_argument(
'--end-index', '-e',
type=int,
default=None
)
parser.add_argument(
'--index', '-i',
type=int,
default=None
)
parser.add_argument(
'--separator-replacement', '-r',
type=str,
default=None
)
args = parser.parse_args()
if not args.separator_replacement:
args.separator_replacement = args.separator
history = list(get_clipit_history(clipit_history_file))
if args.index is not None:
text = history[args.index]
else:
selected = history[args.begin_index:args.end_index]
text = args.separator.join([s.replace(args.separator, args.separator_replacement)
for s in selected])
print(text, end='')

View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
rofi -modi "clipboard:greenclip print" -show clipboard

View File

@@ -1,9 +0,0 @@
#!/usr/bin/env bash
SELECTED_INDEX="$(clipit_history.py -r '(newline)' | rofi -dmenu -format i)"
if [ "$SELECTED_INDEX" -eq "$SELECTED_INDEX" ] 2>/dev/null; then
xdotool type "$(clipit_history.py -e 5 -i $SELECTED_INDEX)"
fi
xdotool type

View File

@@ -1,5 +1,6 @@
{ inputs, config, pkgs, makeEnable, ... }:
makeEnable config "myModules.desktop" true {
services.greenclip.enable = true;
imports = [
./fonts.nix
./hyprland.nix
@@ -65,7 +66,6 @@ makeEnable config "myModules.desktop" true {
feh
firefox
cheese
gpaste
kdePackages.kleopatra
libnotify
libreoffice

View File

@@ -1,5 +1,18 @@
{ pkgs, ... }:
{
xdg.configFile."greenclip.toml".text = ''
[greenclip]
history_file = "~/.cache/greenclip.history"
max_history_length = 50
max_selection_size_bytes = 0
trim_space_from_selection = true
use_primary_selection_as_input = false
blacklisted_applications = []
enable_image_support = true
image_cache_directory = "~/.cache/greenclip"
static_history = []
'';
xsession = {
enable = true;
preferStatusNotifierItems = true;