Como sair do seletor de cores do gpick depois de escolher um atalho de teclado?

3

Eu atribuí um atalho no Ubuntu 14.04 para gpick -p , que traz o seletor de cores instantaneamente. O GPick está configurado para salvar a cor escolhida na área de transferência.

No entanto, quando a cor é selecionada, a interface do gpick desaparece e o gpick -p continua sendo executado em segundo plano, usando a CPU.

De ps ax | grep gpick :

5255 ?        Sl     0:00 gpick -p

De 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

Objetivo exato: Um atalho de teclado que:

  1. Transforma meu mouse em um seletor de cores (com uma janela de lupa)
  2. Depois de clicar, copia a cor selecionada para a área de transferência e
  3. desaparece

Por vai embora , pode ser um dos seguintes:

  • idealmente, o programa sairia
  • a execução em segundo plano sem o uso significativo de recursos seria OK
  • apresentar um botão para fechar seria chato, mas tolerável

Coisas que tentei:

  • Configurar a "Instância única" ativada e desativada - parece não ajudar
  • Configurando "Minimizar / Fechar para Bandeja do Sistema" - não parece ajudar, e o programa não aparece na bandeja
  • Instalando gcolor2 e kcolorchooser - eles não têm comandos automáticos de reconhecimento de cores
  • Usando grabc | xclip -selection clipboard - isso funciona, mas não fornece uma lupa
por Oleg 15.09.2014 / 05:30

1 resposta

3

gpick tem os seguintes problemas:

  • Ele não se encerra após a escolha de uma cor (você já sabe disso)
  • Se você copiar algo para a área de transferência e, em seguida, matá-lo, você terá uma área de transferência vazia.

Solução 1 (recomendado)

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

Para solucionar o problema da área de transferência vazia, a ideia é iniciar gpick em um subprocesso e copiar o conteúdo da área de transferência antes de eliminar o subprocesso.

Crie o seguinte script bash e use if como o programa de atalho:

#!/bin/bash

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

Ele permitirá a persistência dos dados da área de transferência.

Solução 2 (com um gerenciador de área de transferência)

A primeira coisa a fazer é instalar um gerenciador da área de transferência que ofereça Persistência da área de transferência , abra um terminal e digite o seguinte comando :

sudo apt-get install clipit xsel

Agora reinicie sua sessão para ter clipit iniciado por padrão.

O comando que você pode usar em seu atalho para salvar no código de cores para a área de transferência e sair do gpick é:

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

Você terá 5s para selecionar sua cor antes de matar gpick .

Nota : Para esta solução, parece que um processo xsel permanece após o comando, mas não consome CPU.

    
por Sylvain Pineau 15.09.2014 / 11:34