feat: script: edit-clipboard

This commit is contained in:
js0ny 2025-11-14 08:17:38 +00:00
parent 4977346e60
commit f80d83bbd7
14 changed files with 133 additions and 71 deletions

View file

@ -37,7 +37,6 @@
vmopts = ''-Dawt.toolkit.name=WLToolkit'';
})
localsend
neovide
cherry-studio
kdePackages.kdeconnect-kde
picard

View file

@ -35,12 +35,12 @@ in {
imports = [
../../rofi.nix
./waybar.nix
./swww.nix
];
home.packages = with pkgs; [
swayidle # Screensaver
dunst # Notification daemon
cliphist # Clipboard daemon
swww # Wallpaper daemon
wmname
# swayidleWrapper
brightnessctl

View file

@ -0,0 +1,3 @@
{...}: {
services.swww.enable = true;
}

View file

@ -0,0 +1,68 @@
{pkgs, ...}: let
editClipboard = pkgs.writeShellScriptBin "edit-clipboard" ''
#!/usr/bin/env bash
# POSIX-compliant edit-clipboard function
# Reads clipboard content, opens it in $EDITOR, and writes back to clipboard
edit-clipboard() {
# Detect clipboard command based on platform
if command -v pbpaste >/dev/null 2>&1; then
# macOS
PASTE_CMD="pbpaste"
COPY_CMD="pbcopy"
elif command -v wl-paste >/dev/null 2>&1; then
# Wayland
PASTE_CMD="wl-paste"
COPY_CMD="wl-copy"
elif command -v xclip >/dev/null 2>&1; then
# X11 (xclip)
PASTE_CMD="xclip -selection clipboard -o"
COPY_CMD="xclip -selection clipboard -i"
elif command -v xsel >/dev/null 2>&1; then
# X11 (xsel)
PASTE_CMD="xsel --clipboard --output"
COPY_CMD="xsel --clipboard --input"
else # TODO: Test it on WSL2
echo "Error: No clipboard utility found" >&2
echo "Install one of: pbpaste/pbcopy (macOS), wl-clipboard (Wayland), xclip, or xsel (X11)" >&2
return 1
fi
# Create temporary file
TMPFILE=$(mktemp /tmp/clipboard.XXXXXX) || {
echo "Error: Failed to create temporary file" >&2
return 1
}
# Read clipboard into temp file
$PASTE_CMD > "$TMPFILE" || {
echo "Error: Failed to read from clipboard" >&2
rm -f "$TMPFILE"
return 1
}
# Open in editor
"''${EDITOR:-vi}" "$TMPFILE" || {
echo "Error: Editor exited with error" >&2
rm -f "$TMPFILE"
return 1
}
# Write back to clipboard
$COPY_CMD < "$TMPFILE" || {
echo "Error: Failed to write to clipboard" >&2
rm -f "$TMPFILE"
return 1
}
# Cleanup
rm -f "$TMPFILE"
}
if [ "''${0##*/}" = "edit-clipboard" ] || [ "''${0##*/}" = "edit-clipboard.sh" ]; then
edit-clipboard "$@"
fi
'';
in {
home.packages = [editClipboard];
}

View file

@ -0,0 +1,22 @@
{...}: {
programs.neovide = {
enable = true;
settings = {
fork = true;
ide = true;
maximized = false;
frame = "full";
no-multigrid = false;
srgb = false;
tabs = true;
theme = "auto";
title-hidden = true;
vsync = true;
wsl = false;
font = {
normal = ["Maple Mono NF CN"];
size = 14;
};
};
};
}

View file

@ -36,7 +36,7 @@ in {
home.packages = [pdf2zhRunner];
home.file.".local/share/kio/servicemenus/pdf2zh.desktop" = {
enable = false; # TODO: Write a wrapper for status tracking
enable = true; # TODO: Write a wrapper for status tracking
executable = true;
text = ''
[Desktop Entry]

View file

@ -42,6 +42,8 @@
./programs/magick.nix
./programs/miniserve.nix
./programs/retroarch.nix
./programs/neovide.nix
./programs/edit-clipboard.nix
# Desktop Linux
./programs/desktop/plasma