mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 08:43:00 +00:00
feat: script: edit-clipboard
This commit is contained in:
parent
4977346e60
commit
f80d83bbd7
14 changed files with 133 additions and 71 deletions
|
|
@ -13,5 +13,4 @@
|
|||
papers
|
||||
gtop
|
||||
];
|
||||
services.xremap.withGnome = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,5 +11,4 @@
|
|||
hyprpolkitagent
|
||||
xdg-desktop-portal-wlr
|
||||
];
|
||||
services.xremap.withHypr = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
services.xremap = {
|
||||
enable = true;
|
||||
withNiri = true;
|
||||
# modmap: single key
|
||||
serviceMode = "user";
|
||||
userName = "js0ny";
|
||||
|
|
@ -39,13 +40,33 @@
|
|||
];
|
||||
keymap = [
|
||||
{
|
||||
name = "Telegram Navigator";
|
||||
name = "IM Navigator - Alt-Up/Down";
|
||||
application = {
|
||||
only = ["org.telegram.desktop" "telegram-desktop"];
|
||||
only = ["org.telegram.desktop" "telegram-desktop" "wechat"];
|
||||
};
|
||||
remap = {
|
||||
"M-j" = "M-down"; # alt.j = macro(C-tab)
|
||||
"M-k" = "M-up"; # alt.k = C-S-tab
|
||||
"M-j" = "M-down";
|
||||
"M-k" = "M-up";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "IM Navigator - Ctrl-Up/Down";
|
||||
application = {
|
||||
only = ["qq"];
|
||||
};
|
||||
remap = {
|
||||
"M-j" = "C-down";
|
||||
"M-k" = "C-up";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "Zotero PDF Navigator";
|
||||
application = {
|
||||
only = ["zotero"];
|
||||
};
|
||||
remap = {
|
||||
"M-j" = "KEY_PAGEDOWN";
|
||||
"M-k" = "KEY_PAGEUP";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@
|
|||
vmopts = ''-Dawt.toolkit.name=WLToolkit'';
|
||||
})
|
||||
localsend
|
||||
neovide
|
||||
cherry-studio
|
||||
kdePackages.kdeconnect-kde
|
||||
picard
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
3
nixcfgs/users/js0ny/programs/desktop/wayland-wm/swww.nix
Normal file
3
nixcfgs/users/js0ny/programs/desktop/wayland-wm/swww.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{...}: {
|
||||
services.swww.enable = true;
|
||||
}
|
||||
68
nixcfgs/users/js0ny/programs/edit-clipboard.nix
Normal file
68
nixcfgs/users/js0ny/programs/edit-clipboard.nix
Normal 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];
|
||||
}
|
||||
22
nixcfgs/users/js0ny/programs/neovide.nix
Normal file
22
nixcfgs/users/js0ny/programs/neovide.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue