Я могу получить визуальную обратную связь от копирования wth Ctrl+C?

Много времен я должен к Ctrl+C (или Ctrl+Insert) многократно скопировать что-то. Я ценил бы визуальную обратную связь, которая говорит, что "новая вещь была скопирована" или что-то как этот. Разве там должен некоторым образом добавить это к Ubuntu?

6
задан 15 November 2017 в 02:52

2 ответа

Я адаптировал свой сценарий для воздействия изменения буфера обмена от здесь так, чтобы он показал собственный пузырь уведомления каждый раз, когда Вы копируете что-то:

enter image description here

#!/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()

Сохраняют это где-нибудь (например, как /usr/local/bin/clipboard-notifier - Вам нужно sudo, чтобы быть позволенными записать в том месте, хотя, альтернативно поместите его в ~/bin), и сделайте это исполняемым файлом с помощью команды chmod +x FILENAME.

, Мой сценарий использует пакет Python 3 notify2 для отображения собственных пузырей уведомления. Этот пакет обычно не устанавливается по умолчанию, необходимо добавить его сначала с командой ниже:

sudo apt install python3-notify2

, Если Вы хотите, можно изменить значения капитализированных переменных около начала сценария к потребностям, особенно TITLE и MAXLENGTH могло бы быть полезно для изменения.

затем просто добавляют его к Вашим приложениям запуска , и это запустится автоматически, когда Вы зарегистрируетесь в следующий раз. Можно также запустить сценарий вручную от, например, Высокий звук + F2 HUD в Единице.

6
ответ дан 23 November 2019 в 07:33

Я создал более стандартное решение с помощью удара, пишущего сценарий только без дополнительных библиотек:

Вот то, как я сделал это:

Создайте названный файл: clp-notify и сделайте это исполняемым файлом.

Сохраните файл к: /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

Затем, я создал второй названный файл start-clipboard-polling это вызывает вышеупомянутый сценарий, и именно этот второй файл добавляется для запущений:

#!/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

Цель этого второго файла состоит в том, чтобы предотвратить оригинал clp-notify от запуска многократно, потому что clp-notify сценарий продолжит работать, даже если Вы выйдете и зайдете или перезапустите X-сервер.

Затем необходимо добавить это start-clipboard-polling к Вашим приложениям запуска.

Существует только одна проблема с этим. Хотя, второй сценарий заботится о предотвращении clp-notify от запуска многократно, когда Вы выходите и заходите (потому что исходный экземпляр все еще работал бы от предыдущей сессии), во второй раз Вы входите в систему, по некоторым причинам, сбои следующего условия:

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

и это означает, что уведомления не будут работать. Работа вокруг для этого должна закончить исходный экземпляр из start-clipboard-polling и перезапуск clp-notify как новый экземпляр и вот именно и затем можно удалить раздел, который проверяет ли clp-notify работает, но я не хочу использовать работу вокруг, мне больше интересно того, почему она перестала работать.

Иначе это продолжит работать просто великолепно, пока Вы не выйдете из системы.

BTW, Вы должны:

sudo apt install xclip
3
ответ дан 23 November 2019 в 07:33

Другие вопросы по тегам:

Похожие вопросы: