web-dev-qa-db-ja.com

キーボードショートカットから選択した後、gpickカラーピッカーを終了する方法は?

Ubuntu 14.04のショートカットをgpick -pに割り当てました。これにより、カラーピッカーがすぐに表示されます。 GPickは、選択した色をクリップボードに保存するように構成されています。

ただし、色が選択されると、gpickインターフェイスはなくなり、gpick -pはCPUを使用してバックグラウンドで実行を続けます。

ps ax | grep gpickから:

5255 ?        Sl     0:00 gpick -p

top -p 5255から:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5255 oleg      20   0  702448  18096  12744 S   1.7  0.2   0:01.67 gpick

正確な目標:キーボードショートカット:

  1. マウスをカラーピッカーに切り替えます(拡大鏡ウィンドウ付き)
  2. クリックしたら、選択した色をクリップボードにコピーし、
  3. 消える

goes awayにより、次のいずれかになります。

  • 理想的には、プログラムは終了します
  • 大量のリソースを使用せずにバックグラウンドで実行しても問題ありません
  • 閉じるボタンを表示するのは面倒ですが、耐えられるでしょう

私が試したもの:

  • 「シングルインスタンス」のオンとオフの設定-役に立たなかった
  • [システムトレイの最小化/閉じる]のオン/オフの設定-役に立たなかったようで、プログラムがトレイに表示されない
  • gcolor2およびkcolorchooserのインストール-これらには自動カラーピッキングコマンドはありません
  • grabc | xclip -selection clipboardを使用-これは機能しますが、拡大鏡は提供しません
4
Oleg

gpickには次の問題があります。

  • 色の選択が完了した後、それ自体は終了しません(あなたはすでにそれを知っています)
  • クリップボードに何かをコピーしてから削除すると、空のクリップボードができます。

ソリューション1(推奨)

(gpick -p &); pid=$(pidof gpick); sleep 5; xclip -se c -o | xclip -i -se c -l 1; kill $pid

空のクリップボードの問題を回避するには、サブプロセスでgpickを起動し、サブプロセスを強制終了する前にクリップボードの内容をコピーします。

次のbashスクリプトを作成し、ifをショートカットプログラムとして使用します。

#!/bin/bash

(gpick -p &);
pid=$(pidof gpick)
sleep 5
xclip -se c -o | xclip -i -se c -l 1
kill $pid

クリップボードのデータを永続化できます。


ソリューション2(クリップボードマネージャーを使用)

最初に行うことは、 Clipboard persistence を提供するクリップボードマネージャーをインストールし、ターミナルを開いて次のコマンドを入力することです。

Sudo apt-get install clipit xsel

セッションを再起動して、デフォルトでclipitを開始します。

ショートカットで使用して、カラーコードをクリップボードに保存し、gpickを終了できるコマンドは次のとおりです。

timeout -k 5 5 gpick -p ; clipit -c | xsel -b

gpickを殺す前に色を選択する5秒を与えます。

:このソリューションでは、xselプロセスがコマンドの後に残っているようですが、CPUを消費していません。

4
Sylvain Pineau