From e08ef74fa40f7b709b693c83918187b988d286c4 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Thu, 17 Apr 2025 04:26:25 +0000 Subject: [PATCH] (feat): add osc52 support --- .config/nvim/lua/bumpsoo/plugins/osc_yank.lua | 27 +++++++++++++++++++ .tmux.conf | 6 ++++- Dockerfile | 2 ++ bin/osc52_copy | 9 +++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 .config/nvim/lua/bumpsoo/plugins/osc_yank.lua create mode 100755 bin/osc52_copy diff --git a/.config/nvim/lua/bumpsoo/plugins/osc_yank.lua b/.config/nvim/lua/bumpsoo/plugins/osc_yank.lua new file mode 100644 index 0000000..56f0664 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/plugins/osc_yank.lua @@ -0,0 +1,27 @@ +return { + 'ojroques/vim-oscyank', + config = function() + local valid_registers = { + [''] = true, + ['+'] = true, + ['*'] = true, + } + + local valid_operators = { + ['y'] = true, + ['d'] = true, + } + + vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + local regname = vim.v.event.regname + local operator = vim.v.event.operator + + if valid_registers[regname] and valid_operators[operator] then + vim.fn.OSCYankRegister(regname) + end + end, + }) + end +} + diff --git a/.tmux.conf b/.tmux.conf index 2b9e582..9231750 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -3,5 +3,9 @@ setw -g mode-keys vi bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel bind-key -T copy-mode-vi 'r' send -X rectangle-toggle -set -s copy-command 'wl-copy' + +set-option -s set-clipboard on + +bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "tmux save-buffer - | tmux load-buffer - && tmux show-buffer | osc52_copy" +bind-key -T copy-mode y send-keys -X copy-pipe-and-cancel "tmux save-buffer - | tmux load-buffer - && tmux show-buffer | osc52_copy" diff --git a/Dockerfile b/Dockerfile index 5199caf..28c7e2d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,6 +66,8 @@ COPY --chown=${USERNAME}:${GID} .config/nvim /home/${USERNAME}/.config/nvim COPY --chown=${USERNAME}:${GID} .tmux.conf /home/${USERNAME}/.tmux.conf +COPY --chown=${USERNAME}:${GID} bin/osc52_copy /home/${USERNAME}/.local/bin/osc52_copy + RUN echo 'export LANG=ko_KR.UTF-8' >> ~/.bashrc \ && echo 'export LC_ALL=ko_KR.UTF-8' >> ~/.bashrc diff --git a/bin/osc52_copy b/bin/osc52_copy new file mode 100755 index 0000000..617eb33 --- /dev/null +++ b/bin/osc52_copy @@ -0,0 +1,9 @@ +#!/bin/bash +# OSC52로 클립보드에 복사하는 스크립트 +if [ -t 0 ]; then + input="$*" +else + input="$(cat)" +fi +printf '\033]52;c;%s\a' "$(printf "%s" "$input" | base64 | tr -d '\r\n')" +