22 January 2009

Несколько буферов обмена в Linux

Lumber room
Захотелось сделать так, чтобы можно было сохранять хоткеями выделенный текст в несколько разных буферов обмена. А потом также хоткеями вставлять текст оттуда..

Для этого нам понадобятся xsel и xbindkeys:

sudo apt-get install xsel xbindkeys


Затем создаем скрипт, который будет сохранять выделенный текст в файлы (clip-1, clip-2, и т.д.) либо доставать текст из файлов в буфер обмена и нажимать Ctrl+V

gedit ~/bin/st-clip


Содержание файла:

#!/bin/bash

if [[ $# -lt 2 ]]; then
echo "Usage: $0 (save|load) NUM"
exit 1
fi

op=$1
num=$2

DIR=$HOME/.clips
FILE=$DIR/clip-$num

if [ ! -e "$DIR" ]
then
mkdir -p "$DIR"
chmod 700 $DIR
fi

case "$op" in
"save" )
xsel -o > $FILE
;;
"load" )
cat $FILE | xsel --clipboard -i
xvkbd -xsendevent -text "\[Control_L]\[v]"
;;
*)
echo "Wrong operation. Allowed \"save\" and \"load\"."
exit 1
esac


* This source code was highlighted with Source Code Highlighter.



Делаем скрипт исполняемым:

chmod +x ~/bin/st-clip


Скрипт принимает два аргумента:
  1. save или load — сохраняем буфер обмена или заружаем его
  2. любое число для сохранения в разные файлы



Добавляем в файл настроек xbindkeys:

gedit ~/.xbindkeysrc


«st-clip save 1»
Control + Alt + 1
«st-clip load 1»
Control + Shift + 1

«st-clip save 2»
Control + Alt + 2
«st-clip load 2»
Control + Shift + 2

«st-clip save 3»
Control + Alt + 3
«st-clip load 3»
Control + Shift + 3


Теперь при нажатии Ctrl+Alt+1..3 выделенный текст сохраняется под разными номерами (1..3), а при нажатии Ctrl+Shift+1..3 соответственно вставляется сохраненный текст под номером 1..3

Надеюсь кому-то еще может пригодится :)
Tags:linuxclipboardbashshellubuntuбуфер обменаtipsxselxbindkeys
Hubs: Lumber room
0
557 8
Comments 6