Category Archives: Linux / Unix

LINUX 두개의 클립보드

최근 복사 붙여넣기를 하는도중 뭔가 자꾸 동기화가 안되는 느낌을 강하게 받았다.
이는 굉장히 거슬렸고 나를 짜증나게 만들었다.

이유를 찾았다.
역사상 이유로 리눅스에는 두개의 클립보드(selections)가 존재한다.

X11에서 사용하는 PRIMARY와 (Drag / Mouse mid button )
현대Gtk/Gnome or Qt/KDE에서 사용하는 CLIPBOARD (Control + c / Control + v)

두개가 아직 공존하는 이유는 CLIPBOARD-only 어플리케이션과 PRIMARY-only 어플리케이션의 공유가 어렵다는점.
(아직도 CLIPBOARD를 지원안해주는 어플리케이션이 있으면… 망한거아닌가;)

이 둘을 동기화, 관리 해주는 클립보드 매니저 툴들이 있다
Autocutsel, XFCE Clipmap, Gnome Glipper, KDE KlipperParcellite
(난 cliplt 쓰는데 parcellite랑 차이점을 모르겠음;)(은 Clipit is a fork of Parcellite라네)

이걸 써도 불편한건 사실 ( use primary에 synchronize 까지 걸면 그냥 드래그 하는데로 클립보드 들어가버림, 내가 원하는건 드래그는 클립보드 안넣었으면 좋겠는데..)

저질 같은 이런 현상을 확인하는 방법은
1. 웹페이지에서 한 단어를 Control+c로 복사한다(CLIPBOARD)
2. 다른내용까지 쭉 드래그만 한다.(PRIMARY)
3. terminator에 Shift + Insert 또는 마우스 휠을 누른다(PRIMARY)
4. terminator에 Ctrl+Shift+Insert 또는 Ctrl+Shift+v 를 한다(CLIPBOARD)

모든 문제를 해결하는방법은
Shift + Insert에 익숙한 습관을 Ctrl + Shift + Insert로 고치면 된다.(그냥 xmodmap으로 커스텀할까..)

http://unix.stackexchange.com/questions/77545/cut-copy-paste-in-linux-puppy-wary/77566#77566
http://unix.stackexchange.com/questions/82311/how-to-make-shiftinsert-paste-selection-after-closing-window-with-selection/82326#82326 (이글에서는 3개라고 주장함;)
http://en.wikipedia.org/wiki/X_Window_selection

terminator 에서 Drag&Drop 활성화하기 + bug fix

현재 debian 7.8에 terminator 버젼은 0.93이다.
터미네이터로 드래그앤드롭기능은 0.96부터 지원된것으로 확인되며
직접 현재 최신버전0.97(이래봤자 2년전릴리즈..)로 올리면
드래그앤 드롭기능이 작동한다.

본인의 경우에는 파일을 드래그했을시 경로 뒤 newline이 두개가 삽입되는걸 확인할 수 있었는데
/usr/share/terminator/terminatorlib/terminal.py 파일의 991 라인 (0.97기준)
txt = “‘%s'” % urllib.unquote(txt[7:])을
txt = “‘%s'” % urllib.unquote(txt[7:].rstrip())
로 수정해줌으로써 해결하였다.

screen title 자동설정

디렉토리 변경시 타이틀 변경

 if [[ "$TERM" == screen* ]]; then
   screen_set_window_title () {
     local HPWD="$PWD"
 #    case $HPWD in
 #      $HOME) HPWD="~";;
 #      $HOME/*) HPWD="~${HPWD#$HOME}";;
 #    esac
     printf '\ek%s\e\\' "$HPWD"
   }
   PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
 fi

vim 사용시 해당파일명을 타이틀로

 if &term == "screen"
   set t_ts=^[k
   set t_fs=^[\
 
 function! ResetTitle()
     " disable vim's ability to set the title
     exec "set title t_ts= t_fs="
     " and restore it to 'bash'
     exec ":!echo -ne '\033kbash\033\\'\<CR>"
 endfunction
 
   au VimLeave * silent call ResetTitle()
   set title
 endif

* 여기서 ^[k와 ^[\ 는 아스키캐릭터로 Ctrl+v, Alt+k 조합으로 입력해야한다.