Как настроить поведение двойного щелчка в X терминале?

Вопрос или проблема

На разных системах Unix/Linux я наблюдал различное поведение двойного клика в X терминальных приложениях (например, xterm).

Иногда двойной клик выделяет все слева и справа до следующего неалфавитного символа (например, он выделяет слово под курсором).

Иногда выделяется все до следующего пробела/конца строки (например, выделяются полные пути под курсором).

Как я могу настроить поведение двойного клика – скажем – в xterm (поскольку оно доступно на большинстве систем)?

В настоящее время я считаю 2-ой режим более удобным для большинства случаев.

Вы настраиваете это с помощью ресурсов X. У меня есть файл .Xresources, содержащий следующие ресурсы, связанные с xterm:

XTerm*VT100.cutNewline: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48

В моем файле .xinitrc есть строчка, которая объединяет эти ресурсы:

if [ -f $userresources ]; then
    /usr/X11/bin/xrdb -merge $userresources
fi

Эти строчки делают так, что двойные и тройные клики в xterm работают так, как мне нравится:

Двойной клик рассматривает “слово” как включающее слэш (/), точку (.), звездочку (*) и некоторые другие неалфавитные символы. Это ресурс “charClass”. Мне пришлось немного поэкспериментировать с этим charClass, чтобы добиться нужного результата. Это в основном позволяет вам двойным кликом выделять URL-адреса и полностью или частично квалифицированные пути.

Другие две строки делают так, что тройной клик начинается от слова под мышью и идет до конца строки, но не включает новую строку. Так что, вы можете тройным кликом выделить команду, которую только что выполнили, вставить ее в другое окно, и, поскольку она не имеет новой строки, вы можете отредактировать ее перед выполнением в другом окне.

Вики Arch имеет статью о ресурсах X, включая раздел о ресурсах xterm, но эти ресурсы xterm не полные.

xterm имеет несколько настроек ресурсов, связанных с двойным и тройным кликом для выделения (руководство перечисляет все соответствующие ресурсы):

cutNewline (класс CutNewline)
Если “false”, тройной клик для выделения строки не включает новую строку в конце строки. Если “true”, новая строка выделяется. По умолчанию “true”.

cutToBeginningOfLine (класс CutToBeginningOfLine)
Если “false”, тройной клик для выделения строки выделяет только от текущего слова вперед. Если “true”, выделяется вся строка. По умолчанию “true”.

on2Clicks (класс On2Clicks)
on3Clicks (класс On3Clicks)
Укажите поведение выделения в ответ на множественные клики мыши. Одинарный клик всегда интерпретируется, как описано в разделе Selection Functions (см. POINTER USAGE). Множественные клики мыши (используя кнопку, которая активирует действие начала выделения) интерпретируются в соответствии с значениями ресурсов on2Clicks и т.д. Значение ресурса может быть одним из следующих:

word
Выделяет “слово” так, как определено ресурсом charClass. См. раздел CHARACTER CLASSES.

line
Выделяет строку (с учетом переноса).

group
Выделяет группу смежных строк (с учетом переноса). Выделение прекращается на пустой строке и не выходит за пределы текущей страницы.

page
Выделяет все видимые строки, то есть страницу.

all
Выделяет все строки, включая сохраненные строки.

regex
Выделяет “слово”, определенное регулярным выражением, которое следует за значением ресурса.

none
С данным ресурсом не связано никакое действие выделения. Xterm интерпретирует его как конец списка. Например, вы можете использовать его для отключения тройного (и более) кликов, установив on3Clicks в “none”.

Значения по умолчанию для on2Clicks и on3Clicks — это “word” и “line”, соответственно. Не существует значения по умолчанию для on4Clicks или on5Clicks, делая их неактивными. При старте xterm определяет максимальное количество кликов посредством значений ресурсов onXClicks, которые установлены.

.

Ответ или решение

Настройка поведения двойного клика в X терминалах, таких как xterm, является важным аспектом работы с текстовыми данными в Unix/Linux системах. Это задача, которая требует понимания конфигурационных файлов X ресурсов и их синтаксиса. В данной статье мы рассмотрим, как именно можно настроить поведение двойного клика в xterm, воспользовавшись файлом конфигурации .Xresources.

Теория

Поведение двойного клика в терминале xterm управляется через специальные ресурсы, которые задаются в файле .Xresources. Эти ресурсы позволяют настроить, как именно будет определяться "слово", "строка" и другие элементы при двойных и тройных кликах мышью. Основные ресурсы, влияющие на этот процесс, включают charClass, cutNewline, cutToBeginningOfLine, а также параметры on2Clicks, on3Clicks и так далее.

Основные ресурсы:

  1. charClass: Определяет, какие символы будут считаться частью "слова" при выделении. Это ключевой ресурс, который позволяет вам, например, включать слэши или точки в состав "слова", что удобно для выделения URL или путей.

  2. cutNewline: Управляет тем, будет ли выделяться новая строка в конце при тройном клике. Установка в false позволяет избежать автоматического переноса строки при выделении, что удобно для копирования команд.

  3. cutToBeginningOfLine: Определяет, будет ли выделяться строка от начала при тройном клике. Значение false позволяет начать выделение с текущего слова.

  4. on2Clicks и on3Clicks: Эти ресурсы задают поведение xterm при двойном и тройном кликах. Возможности включают выделение слова, строки или других уровней, определенных пользователем.

Пример

На практике, можно создать или отредактировать файл .Xresources, добавив следующие конфигурации для xterm:

XTerm*VT100.cutNewline: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48

Эти параметры работают следующим образом:

  • cutNewline: false: Не включает перенос строки при копировании, что позволяет вручную добавлять перенос, когда это необходимо.
  • cutToBeginningOfLine: false: Предотвращает автоматическое выделение всей строки, начиная только с текущего слова.
  • charClass: Определяет набор символов, которые входят в "слово". В данном случае, символы от 33 до 126 (за исключением пробела и ограниченных знаков) будут считаться частью слова.

Применение

Для того чтобы изменения вступили в силу, нужно интегрировать изменения из .Xresources в X сервер с помощью утилиты xrdb. Часто это делается в файле .xinitrc:

if [ -f $userresources ]; then
    /usr/X11/bin/xrdb -merge $userresources
fi

После внесения изменений и выполнения команды перезагрузите xterm, чтобы настройки обновились. Теперь двойной клик будет учитывать ваши предпочтения в выборе символов, что значительно упростит работу с кодом, URL, путями и другими структурам.

Заключение

Настройка поведения двойного клика в xterm через X ресурсы даёт возможность пользователям настраивать среду консоли под свои индивидуальные потребности. Это может повысить эффективность работы, особенно в тех случаях, когда необходимо часто копировать сложные структуры данных. Обладая пониманием основ работы X ресурсов, пользователь может детально настраивать и другие аспекты взаимодействия с терминалом. Этот подход характерен для Unix/Linux сред, где пользователь имеет большой контроль над поведением системы и интерфейсов.

Для углубленного изучения и более сложных настроек, рекомендую обратиться к документации xterm и статьям на онлайн платформах, таких как Arch Wiki, где можно найти полезные практические советы и примеры конфигураций.

Оцените материал
Добавить комментарий

Капча загружается...