tmux: add copy/paste hooks

This commit is contained in:
Paul Walker
2025-04-08 11:21:55 +01:00
parent 3f4696cfb7
commit 760542b286
3 changed files with 30 additions and 1 deletions

View File

@@ -98,6 +98,12 @@ set -g @plugin 'seebi/tmux-colors-solarized'
set -g @resurrect-strategy-vim 'session' set -g @resurrect-strategy-vim 'session'
set -g @continuum-restore 'on' set -g @continuum-restore 'on'
# Load OS-specific settings
if-shell "uname | grep -q Linux" "source-file ~/.tmux.linux.conf"
if-shell "uname | grep -q Darwin" "source-file ~/.tmux.mac.conf"
# Load any system-specific/private settings
if-shell "[ -f ~/.tmux.private]" "source ~/.tmux.private"
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm' run -b '~/.tmux/plugins/tpm/tpm'

14
tmux.linux.conf Normal file
View File

@@ -0,0 +1,14 @@
# Detect the display server protocol and set clipboard commands
if-shell '[ "$XDG_SESSION_TYPE" = "wayland" ]' \
'set -g copy-command "wl-copy"; set -g paste-command "wl-paste -n"' \
'set -g copy-command "xclip -sel clip -i"; set -g paste-command "xclip -sel clip -o"'
# Take the buffer and send it to the system clipboard
bind C-c run "tmux save-buffer - | $copy_command"
# y in copy mode takes selection and sends it to system clipboard
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "$copy_command"
# And the reverse - Prefix Ctrl-v fills tmux buffer from system clipboard, then
# pastes from buffer into tmux window
bind C-v run-shell '$paste_command | tmux load-buffer - \; paste-buffer'

9
tmux.mac.conf Normal file
View File

@@ -0,0 +1,9 @@
# Prefix Ctrl-C takes what's in the buffer and sends it to system clipboard via pbcopy
bind C-c run "tmux save-buffer - | pbcopy"
# y in copy mode takes selection and sends it to system clipboard via pbcopy
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# Prefix Ctrl-v fills tmux buffer from system clipboard via pbpaste, then
# pastes from buffer into tmux window
bind C-v run "tmux set-buffer \" $(pbpaste)\"; tmux paste-buffer"