2013-05-11 1 views
1

X 도움말을 사용하여 X 클립 보드의 내용을 QR 코드로 변환하고 결과를 표시하는 작은 보조 스크립트를 작성하는 중입니다. 스마트 폰. 이미지를 검정색 전체 화면 배경으로 표시하고 모든 사용자 이벤트를 닫습니다.

xclip -o | qrencode -s 5 -o - | display -backdrop -background "#000" 

내가 전체 화면 검은 배경을 중심으로 QR 코드를 얻을 :

기본적으로 bash는 작품이 선 (오류 처리와 함께, 그것은 10 선입니다). 좋은. 그러나 GraphicsMagick의 디스플레이 유틸리티는이 시나리오에서 사용성 문제가 하나 있습니다. 쉽게 종료 할 수 없습니다. 나는 이미지를 마우스 오른쪽 버튼으로 클릭하고 (배경은 제외) 메뉴에서 검정색으로 텍스트를 검정색으로 표시하는 마지막 항목을 선택해야합니다.

나는이 문제에 대한 여러 접근 방법을 볼 수 있지만, 그 중 하나에 대한 해결책을 볼 수 없습니다 :

  1. GraphicsMagick의 display 유틸리티, 어떤 경우에 종료 마우스 클릭이나 키 누름을로 가져옵니다.
  2. 배경으로 display을 시작하고 어떻게 든 UI ​​이벤트를 잡습니다. 그런 다음 display을 죽이십시오.
  3. 더 쉽게 종료 할 수있는 다른 이미지 뷰어를 사용하십시오. 배경 화면 기능을 찾지 못했습니다.

기본적으로, 내가 찾고있는 것은 bash 스크립트에서 현재의 X 화면을 중심으로 검은 배경 (보너스 : 반투명 검은 배경)이있는 이미지를 표시하는 쉬운 방법입니다. 마우스 클릭 또는 키 누름. 또한 이미지 아래에 일부 자유 형식 텍스트 캡션이 좋을 수 있으므로 이미지에 추가하기 위해 그래픽 매직을 사용하지 않아도됩니다.

답변

0

좋아, 어쨌든 필자는 이미지 뷰어를 직접 작성했습니다 ... 즉석에서 ... 인라인 파이썬과 Tkinter를 사용했습니다. 만약 누군가 그것을 사용하고자하고 bash에 내장 된 python이 너무 무서운 생각이 아니라면, 여기에 "QR Code에 대한 클립 보드"bash 스크립트가 있습니다. 그것을 어디서나 저장하고 실행 가능하게 만들고 데스크탑 환경에 등록하여 < Ctrl-Q >에서 실행하거나 패널에 시동기를 지정하십시오.

종속 관계 : 파이썬 파이썬-TK의 qrencode의 XCLIP

#!/bin/bash 

TMPDIR=$(mktemp -d) 
trap 'rm -rf $TMPDIR; exit 1' 0 1 2 3 13 15 

if xclip -o | qrencode -s 2 -m 2 -o - > $TMPDIR/qrcode.png 
then 
    TXT=$(xclip -o) 
elif xclip -o -selection clipboard | qrencode -s 2 -m 2 -o - > $TMPDIR/qrcode.png 
then 
    TXT=$(xclip -o -selection clipboard) 
else 
    STXT=$(echo "$(xclip -o)" | head -n 1 | cut -c 1-50) 
    notify-send -i unknown "Conversion Error" "Cannot provide a QR Code for the current clipboard contents:\ 
    \ 
    $STXT ..." 
    exit 0 
fi 
echo "$TXT" > $TMPDIR/content.txt 
python - <<PYEND 
import Tkinter,Image,ImageTk 
tk = Tkinter.Tk() 
tk.geometry("%dx%d+0+0" % (tk.winfo_screenwidth(), tk.winfo_screenheight())) 
tk.wm_focusmodel(Tkinter.ACTIVE) 
def handler(event): 
    tk.quit() 
    tk.destroy() 
tk.bind("<Key>", handler) 
tk.bind("<KeyPress>", handler) 
tk.bind("<Button>", handler) 
tk.protocol("WM_DELETE_WINDOW", tk.destroy) 
txt = "" 
tkim = None 
try: 
    img = Image.open("$TMPDIR/qrcode.png").convert() 
    while (img.size[1] < tk.winfo_screenheight() * 0.4) and (img.size[0] < tk.winfo_screenwidth() * 0.45): 
     img = img.resize(([x*2 for x in img.size]), Image.NONE) 
    tkim = ImageTk.PhotoImage(img) 
    txt = file("$TMPDIR/content.txt").read() 
except Exception as e: 
    txt = "Error while retrieving text: " + str(e) 

lh = Tkinter.Label(tk, text="QR Code from Clipboard", font=("sans-serif", 12), background="#000", foreground="#FFF", justify=Tkinter.CENTER).pack(fill=Tkinter.BOTH, expand=1) 
li = Tkinter.Label(tk, image=tkim, background="#000", foreground="#FFF", justify=Tkinter.CENTER).pack(fill=Tkinter.BOTH, expand=1) 
lt = Tkinter.Label(tk, text=txt, font=("sans-serif", 9), background="#000", foreground="#FFF", justify=Tkinter.LEFT, wraplength=tk.winfo_screenwidth()*0.9).pack(fill=Tkinter.BOTH, expand=1) 
tk.overrideredirect(True) 
tk.lift() 
tk.focus_force() 
tk.grab_set() 
tk.grab_set_global() 
tk.mainloop() 
PYEND 
rm -rf $TMPDIR 
trap 0 1 2 3 13 15 

업데이트 : 이제도 GitHub의에 : https://github.com/orithena/clip2qr