Буфер обмена кажется простой функцией: скопировал, вставил. В 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 как универсальный компромисс. Настройте один менеджер, ограничьте историю и не забывайте о приватности — тогда копирование перестанет быть лотереей, а закрытое приложение больше не будет стирать нужный текст.