Буфер обмена кажется простой функцией: скопировал, вставил. В Linux за ней стоят два разных протокола, несколько уровней прав и особенность, о которой узнают в самый неудачный момент, — содержимое исчезает, когда закрывается приложение-источник. Менеджеры истории решают эту проблему, но требуют понимания того, как устроены selections в X11 и data offers в Wayland. Разберём практическую настройку.

X11 и Wayland: две модели

В X11 есть три selections: PRIMARY (выделение мышью), CLIPBOARD (Ctrl+C) и SECONDARY. Приложение-владелец хранит данные у себя, а остальные запрашивают их по требованию. В Wayland модель похожа по смыслу, но доступ к буферу регулирует композитор: приложение отдаёт данные только через явный запрос, а фоновый демон не всегда может читать буфер без поддержки специального протокола.

Отсюда практическое следствие: утилиты wl-clipboard работают в большинстве сессий, но режим слежения wl-paste —watch требует специального протокола, который реализуют wlroots-композиторы, а Mutter — нет. Поэтому cliphist — выбор Sway и Hyprland, а в GNOME историю дают расширения или отдельные приложения.

Базовые команды

sudo apt install wl-clipboard xclip
wl-paste --list-types
wl-copy "текст в буфер"
wl-paste --no-newline | wc -c

wl-copy и wl-paste — аналоги xclip для Wayland. Команда —list-types показывает, что сейчас лежит в буфере: текст, изображение, список файлов. Это первый шаг диагностики, когда вставка не работает: часто приложение копирует не тот MIME-тип, который ожидает получатель.

xclip -selection clipboard -o
xclip -selection clipboard -t image/png -o > shot.png
wl-paste --type image/png > shot.png

Почему содержимое исчезает

Приложение-источник не копирует данные в какое-то общее хранилище — оно само отвечает на запросы вставки. Пока процесс жив, буфер доступен; закрыли редактор или вкладку браузера — данные пропали. Именно поэтому менеджеры истории работают как перехватчик: они забирают содержимое сразу после копирования и становятся новым владельцем, а прежние записи хранят у себя.

У wl-copy поведение похожее: команда запускает фоновый процесс, который держит буфер, пока его не вытеснит следующая копия. Если запустить wl-copy в скрипте и сразу завершить сессию, содержимое не сохранится. Для проверки используйте отдельный терминал: скопируйте текст в одном окне и вставьте в другом, затем закройте первое.

printf 'проверка буфера' | wl-copy
wl-paste
autocutsel -selection PRIMARY -cutbuffer 0
autocutsel -fork

В X11 пригодится autocutsel: он синхронизирует выделение мышью с обычным буфером, если вы привыкли к поведению других систем. Запускать его нужно в фоне, иначе он завершится вместе с терминалом.

История в GNOME и KDE

В GNOME штатной истории нет. Самый простой путь — расширение Clipboard Indicator: оно добавляет значок в панель и хранит последние записи в памяти сессии. Альтернатива — GPaste: демон плюс расширение для оболочки, с поиском и настройкой лимита записей.

sudo apt install gpaste gnome-shell-extension-gpaste
gpaste-client start
gpaste-client history | head -20

В KDE Plasma история встроена в Klipper: он открывается по Ctrl+Alt+V, позволяет закреплять записи и ограничивать размер. Настройки находятся в параметрах системы, отдельная установка не нужна. Это одно из немногих мест, где Plasma обходит GNOME «из коробки».

cliphist для wlroots

cliphist хранит историю в простой базе и работает вместе с wl-clipboard. Схема такая: watcher перехватывает каждое изменение буфера и складывает запись, а выборка показывает список и отдаёт выбранное обратно в буфер.

sudo apt install cliphist
wl-paste --watch cliphist store
cliphist list | fuzzel --dmenu | cliphist decode | wl-copy

Чтобы watcher переживал перезагрузку, оформите его как пользовательский сервис systemd. Это надёжнее, чем строка в конфиге композитора: сервис перезапустится сам и не зависит от порядка запуска приложений.

mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/cliphist.service <<'EOF'
[Unit]
Description=cliphist watcher
[Service]
ExecStart=/usr/bin/wl-paste --watch cliphist store
Restart=always
[Install]
WantedBy=default.target
EOF
systemctl --user enable --now cliphist.service

CopyQ как универсальный вариант

CopyQ — кроссплатформенный менеджер с поиском, вкладками и собственным языком сценариев. Он работает в X11 и в Wayland-сессиях, хотя в Wayland часть функций зависит от композитора. Для тех, кому нужна история с картинками и быстрым поиском, это компромисс между расширением оболочки и ручной настройкой.

sudo apt install copyq
copyq --start-server
copyq eval 'settings("maxitems", 200)'
copyq show

Автозапуск включается в настройках самого CopyQ или через каталог автозапуска. Не ставьте одновременно два менеджера: они начнут перехватывать буфер друг у друга, и поведение станет непредсказуемым.

Приватность и безопасность

История буфера — это журнал всего, что вы копировали, включая пароли из менеджеров, номера карт и фрагменты переписки. На общем компьютере историю лучше не включать вовсе. Если она нужна, ограничьте срок хранения и очищайте базу перед выходом.

cliphist wipe
gpaste-client empty
copyq clear

Некоторые менеджеры умеют исключать приложения по имени окна — включите это для менеджера паролей. И помните: буфер обмена не является защищённым каналом, любое приложение с доступом к сессии может прочитать его содержимое.

Отдельная привычка — очищать историю перед блокировкой экрана на чужой машине и после работы с конфиденциальными документами. В Klipper для этого есть закрепление записей и ручная очистка, в CopyQ — команда clear и отдельные вкладки, а cliphist удаляет всю базу одной командой. Если история не нужна постоянно, включите её только на время работы с большими текстами и выключайте после.

Диагностика

  • Проверьте тип сессии в настройках системы.
  • Посмотрите, кто владеет буфером: wl-paste —list-types или xclip -o.
  • Убедитесь, что watcher запущен: systemctl —user status cliphist.
  • Проверьте, не запущены ли два менеджера одновременно.
  • Для изображений проверяйте MIME-тип, а не только текст.

Чек-лист

  • Выберите один менеджер под свою сессию.
  • Ограничьте историю 100–200 записями.
  • Исключите менеджер паролей из перехвата.
  • Настройте автозапуск через systemd или autostart.
  • Очищайте историю перед передачей компьютера другому человеку.

Итог

Буфер обмена в Linux работает по-разному в X11 и Wayland, и это определяет выбор инструмента: cliphist для wlroots, расширение или GPaste для GNOME, Klipper для Plasma, CopyQ как универсальный компромисс. Настройте один менеджер, ограничьте историю и не забывайте о приватности — тогда копирование перестанет быть лотереей, а закрытое приложение больше не будет стирать нужный текст.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте