Почему не видно выделение текста в Конфигураторе 1С на Linux и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке и администрировании баз 1С:Предприятие в операционных системах семейства Linux (таких как Linux Mint, Ubuntu, Debian и других) программисты нередко сталкиваются с неприятной графической ошибкой: при попытке выделить фрагмент программного кода в модуле Конфигуратора текст физически выделяется, копируется и вырезается в буфер обмена, однако визуально область выделения никак не подсвечивается (фон не инвертируется и не меняет цвет). Разберем причины такого поведения платформы и рассмотрим подробные способы устранения этой неполадки.

Выясним причину проблемы с отрисовкой выделения

Проанализируем механику работы графической подсистемы. Редактор исходного кода классического Конфигуратора 1С для отрисовки графических элементов и инвертирования цвета выделенного блока текста использует растровые операции графического сервера X11 (в частности, операцию побитового исключающего «ИЛИ» — XOR).

При использовании свободных (open-source) видеодрайверов, особенно для видеокарт AMD/ATI Radeon (драйвер radeon / amdgpu со старыми механизмами 2D-акселерации, такими как EXA), графический сервер некорректно обрабатывает растровые операции инверсии. В результате выделенный блок текста остается того же цвета, что и общий фон редактора. Также на отображение могут влиять встроенные композитные менеджеры оконного окружения (MATE, Xfce, Cinnamon).

Способ 1. Переключение метода 2D-акселерации на Glamor в Xorg (Основное решение)

Рассмотрим самое надежное и проверенное решение. Для устранения графического сбоя необходимо перевести механизм аппаратного 2D-ускорения открытого драйвера на библиотеку Glamor, которая транслирует вызовы 2D через OpenGL и корректно выполняет операцию инвертирования цвета.

Разберем по шагам процесс настройки конфигурации X-сервера:

  1. Откроем терминал с правами суперпользователя и перейдем к редактированию конфигурационного файла /etc/X11/xorg.conf (если файл отсутствует, создадим его вручную либо создадим конфигурационный файл в каталоге /etc/X11/xorg.conf.d/20-radeon.conf).
  2. Найдем или создадим секцию видеоустройства Section "Device".
  3. Добавим параметр Option "AccelMethod" "glamor".

Посмотрим на пример итоговой конфигурационной секции устройства:


Section "Device"
    Identifier  "Radeon"
    Driver      "radeon"
    Option      "AccelMethod" "glamor"
EndSection

После сохранения изменений необходимо перезапустить дисплейный менеджер или перезагрузить компьютер. После этого выделение текста в Конфигураторе станет четким и контрастным.

Способ 2. Отключение аппаратного 2D-ускорения (NoAccel)

Если переключение на Glamor по каким-либо причинам недоступно или видеокарта относится к устаревшему поколению, рассмотрим альтернативный вариант — полное отключение аппаратного 2D-ускорения X11. При этом вся 2D-отрисовка переносится на центральный процессор, что гарантирует стопроцентно корректную работу логических операций инвертирования.

Для этого в секцию Section "Device" файла /etc/X11/xorg.conf добавим следующую строку:


Section "Device"
    Identifier  "Card0"
    Driver      "radeon"
    Option      "NoAccel" "True"
EndSection

Способ 3. Принудительный запуск 1С с программным рендерингом Mesa

Если нет возможности редактировать глобальные настройки Xorg для всей системы, разберем запуск клиентского приложения 1С с переменной окружения, форсирующей программную отрисовку для конкретного процесса.

Выполним запуск Конфигуратора через терминал следующей командой:

LIBGL_ALWAYS_SOFTWARE=1 /opt/1C/v8.3/i386/1cv8

Для 64-битной версии платформы укажем соответствующий путь:

LIBGL_ALWAYS_SOFTWARE=1 /opt/1C/v8.3/x86_64/1cv8

Если этот вариант решает проблему, команду запуска с переменной LIBGL_ALWAYS_SOFTWARE=1 можно закрепить в ярлыке запуска (файле .desktop) Конфигуратора.

Способ 4. Настройка композитного менеджера рабочего стола

Проанализируем влияние эффектов рабочего стола. В некоторых графических оболочках включенный композитинг окон перехватывает прямые вызовы отрисовки оконного интерфейса. Попробуем отключить встроенные графические эффекты:

  1. В среде MATE: перейдем в «Параметры» → «Окна» → вкладка «Композиция» и снимем галочку с пункта включения композитного менеджера (либо выберем оконный менеджер Marco без эффектов).
  2. В среде Xfce: откроем «Диспетчер окон (дополнительно)» → перейдем на вкладку «Эффекты» (Compositor) и отключим отображение эффектов.

Способ 5. Настройка подсветки синтаксиса в Конфигураторе

Если доступ к системным настройкам ограничен правами пользователя, настроим внутренние параметры Конфигуратора для комфортной работы с кодом:

  1. В главном меню Конфигуратора перейдем в «Сервис» → «Параметры».
  2. Перейдем на вкладку «Модули» в подраздел «Редактирование».
  3. В таблице «Выделение цветом синтаксических конструкций» найдем элемент «Выбранный идентификатор».
  4. Зададим для него яркий, контрастный цвет фона (например, мягкий желтый или светло-голубой).

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

Альтернативные варианты разработки под Linux

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

  1. Переход на 1C:Enterprise Development Tools (1C:EDT): современная среда разработки от фирмы 1С создана на базе Eclipse/Java и использует стандартные механизмы GTK/SWT, благодаря чему она полностью избавлена от устаревших графических проблем нативного Конфигуратора под Linux.
  2. Обновление платформы 1С:Предприятие: в актуальных версиях ветки 8.3 графическая подсистема для Linux-клиентов была модернизирована, что сводит к минимуму проблемы несовместимости с современными видеодрайверами.
← На главную