Lumber room
22 January 2009

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

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

Для этого нам понадобятся 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

Надеюсь кому-то еще может пригодится :)

0
437 8
Comments 6