Posso obter feedback visual da cópia com Ctrl + C?

6

Muitas vezes eu preciso Ctrl + C (ou Ctrl + Inserir ) várias vezes para copiar alguma coisa. Eu apreciaria o feedback visual que diz "uma coisa nova foi copiada" ou algo parecido. Existe alguma maneira de adicionar isso ao Ubuntu?

    
por eri0o 30.09.2017 / 22:58

2 respostas

5

Eu adaptei meu script para reagir às alterações na área de transferência de aqui para que ele mostre uma bolha de notificação nativa sempre que você copiar algo :

#!/usr/bin/env python3 # Configuration: APPNAME = "Clipboard Notifier" # an arbitrary application name TITLE = "Clipboard modified" # the bold headline of each notification ICON = "edit-paste" # name of the icon to show MAXLENGTH = 100 # maximum message length # Imports: import gi import signal import notify2 gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk # Set up signal handler for killing the script with Ctrl+C from terminal: signal.signal(signal.SIGINT, signal.SIG_DFL) # Initialize the notifications library: notify2.init(APPNAME) # Callback function to handle clipboard modification events: def callback(*args): # Get new clipboard content: text = clip.wait_for_text() # Truncate long content to avoid huge notification bubbles: body = text if len(text) < MAXLENGTH else text[:MAXLENGTH] + "..." # Create and show notification bubble: notify2.Notification(TITLE, body, ICON).show() # Set up clipboard and register callback for change events clip = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) clip.connect("owner-change", callback) # Start Gtk main loop and wait for events: Gtk.main()

Salve isso em algum lugar (por exemplo, como /usr/local/bin/clipboard-notifier - você precisa que sudo tenha permissão para gravar nesse local, mas coloque-o em ~/bin ) e torne-o executável usando o comando chmod +x FILENAME .

Meu script usa o pacote notify2 do Python 3 para exibir as bolhas de notificação nativas. Este pacote normalmente não é instalado por padrão, você tem que adicioná-lo primeiro com o comando abaixo:

sudo apt install python3-notify2

Se desejar, você pode modificar os valores das variáveis capitalizadas perto do início do script de acordo com suas necessidades, especialmente TITLE e MAXLENGTH podem ser úteis para alterar.

Depois, simplesmente adicione-o aos seus aplicativos de inicialização e ele será iniciado automaticamente quando você fizer login na próxima vez. Você também pode iniciar o script manualmente a partir de o Alt + F2 HUD no Unity.

    
por Byte Commander 01.10.2017 / 00:51
3

Eu criei uma solução mais padrão usando o bash scripting somente sem bibliotecas extras:

Veja como eu fiz:

Crie um arquivo chamado: clp-notify e torne-o executável.

Salve o arquivo em: /home/$USER/add-ons/scripts/clp-notify

#!/bin/bash

echo "Script $0 started..."
notify-send -u normal -t 3000 -i info 'Script Started!' $0

clip_command="xclip -selection clipboard -o"
current_value='$clip_command'

while true
do
   new_value='$clip_command'

   if [[ ! ("$current_value" == "$new_value") ]];
   then      
      echo 'Clipboard Modified...'
      notify-send -u normal -t 3000 -i info 'Clipboard Modified!' 'Your clipboard has been modified.'

      current_value=$new_value
   else
      echo "Polliing..."
   fi

   sleep 1.5
done

Em seguida, criei um segundo arquivo chamado start-clipboard-polling que invoca o script acima e é esse segundo arquivo adicionado à inicialização:

#!/bin/bash

script_path=/home/$USER/add-ons/scripts/clp-notify

function IsClipboardPollingRunning
{
   if (ps -A | grep -q "clp-notify")
   then
      return 1;
   else
      return 0;        
   fi
}

if (IsClipboardPollingRunning == 0)
then
   echo "Starting $script_path"   
   nohup $script_path &
else
   echo "$script_path is already running"
   notify-send -u normal -t 3000 -i info 'Clipboard Notify' "$script_path is already running."
fi

O propósito deste segundo arquivo é evitar que o original clp-notify seja iniciado várias vezes porque o script clp-notify continuará a ser executado mesmo que você efetue logout e reinicialize o servidor X.

Você precisa adicionar esse start-clipboard-polling aos seus aplicativos de inicialização.

Existe apenas um problema com isso. Embora o segundo script cuide de impedir que clp-notify seja iniciado várias vezes quando você efetua logout e entrada (porque a instância original ainda estaria sendo executada da sessão anterior), na segunda vez que você fizer login, por algum motivo, as seguintes condição falha:

if [[ ! ("$current_value" == "$new_value") ]];

e isso significa que as notificações não funcionarão. A solução para isso é encerrar a instância original de start-clipboard-polling e reiniciar clp-notify como uma nova instância e é isso e, em seguida, você pode excluir a seção que verifica se clp-notify está em execução, mas não quero use o trabalho, estou mais interessado em por que ele falha.

Caso contrário, continuará funcionando bem até você sair.

BTW, você precisa:

sudo apt install xclip
    
por marko 01.10.2017 / 03:29