Много времен я должен к Ctrl+C (или Ctrl+Insert) многократно скопировать что-то. Я ценил бы визуальную обратную связь, которая говорит, что "новая вещь была скопирована" или что-то как этот. Разве там должен некоторым образом добавить это к Ubuntu?
Я адаптировал свой сценарий для воздействия изменения буфера обмена от здесь так, чтобы он показал собственный пузырь уведомления каждый раз, когда Вы копируете что-то:
#!/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 в Единице.
Я создал более стандартное решение с помощью удара, пишущего сценарий только без дополнительных библиотек:
Вот то, как я сделал это:
Создайте названный файл: 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