ОС

KDE Plasma: убрать рамку выделения, оставить фон

Как в KDE Plasma отключить рамку (border) выделения в настройках KWin, темах Plasma (SVG) или Qt/CSS (QSS), сохранив фон. Пошаговые правки файлов kwinrc, SVG stroke=none и QSS border:none для списков и окон.

Как в KDE Plasma убрать рамку (border) у выделения, чтобы остался только фон выделения? В каких настройках или файлах темы/стилей (например файлах темы Plasma или параметрах Qt/CSS) нужно изменить значения и какие конкретные правки применить?

В KDE Plasma рамку (border) у выделения можно убрать на трёх уровнях: декорации окон (KWin), файлы темы Plasma (SVG/цвета) и Qt/CSS (QSS) для виджетов — выбранные правки зависят от того, где именно рисуется рамка. Обычно достаточно отключить outline в декорации или заменить в SVG-файле атрибуты stroke/stroke-width на none/0, а для списков/виджетов добавить QSS вроде QListView::item:selected { border: none; }. После правок перезапустите KWin/Plasma или выйдите из сессии, чтобы изменения вступили в силу.


Содержание


Коротко: откуда берётся рамка и что менять

Рамку выделения в KDE Plasma рисуют разные подсистемы в зависимости от контекста:

  • KWin (декорация окна) отвечает за внешнюю рамку окна и outline вокруг окон; настройки см. в документации по поведению окон. Например, некоторые параметры управляются через ~/.config/kwinrc и GUI “Декорации окон” / “Window Decorations” (документация KWin).
  • Тема Plasma (desktoptheme) содержит SVG/PNG-элементы и файлы цветов, которые рисуют бордеры/контуры у виджетов и панелей.
  • Qt-стили (QSS) управляют границами и outline внутри Qt-приложений (списки, комбобоксы и т.д.); примеры правил для QListView/QComboBox есть на StackOverflow.

Кто рисует рамку — важно: хотите убрать рамку у окна или у выделенной строки в списке? От этого зависит, что править.


Выключение рамки у окон: декорации KWin и kwinrc (kde plasma)

Что делать (GUI и быстрые команды):

  • Через GUI: Система → Параметры системы → Управление окнами → Декорации окон (System Settings → Window Management → Window Decorations). Выберите декорацию, нажмите “Настроить” и уменьшите толщину рамки до “No border” или аналогичного значения, либо смените тему декорации. См. также параметры поведения окон в официальной документации: https://docs.kde.org/stable5/ru/kwin/kcontrol/windowbehaviour/index.html

  • Быстрая кнопка для отдельного окна: открыть меню окна (Alt+F3) → “Дополнительные действия” (More Actions) → “Без рамки” (No Border). Это удобно для тестов и отдельных приложений (undo тем же путём) — примеры есть на форумах и Q&A: https://ru.stackoverflow.com/questions/1300798/Вернуть-рамку-в-kde-plasma и https://unix.stackexchange.com/questions/376091/undo-no-border-in-kde

  • Правка kwinrc (глобально для максимизированных окон): чтобы вернуть/убрать рамку при максимизации, в секции [Windows] файла ~/.config/kwinrc используется ключ BorderlessMaximizedWindows. Пример команды для изменения:

kwriteconfig5 --file ~/.config/kwinrc --group Windows --key BorderlessMaximizedWindows false
qdbus org.kde.KWin /KWin reconfigure
# Или (для X11) перезапуск:
kwin_x11 --replace &

Пример и обсуждение команд — есть в подборках по удалению заголовков и рамок: https://qastack.ru/ubuntu/253337/remove-title-bar-and-borders-on-maximized-windows-in-kubuntu и https://kubuntu.ru/node/9846

Заметки:

  • На Wayland kwin_x11 --replace не работает; проще выйти из сессии и войти заново.
  • Переключение “No border” в правилах окон может быть принудительным (Force) — проверьте System Settings → Window Management → Window Rules.

Правки файлов темы Plasma (SVG, colors) и место хранения тем

Если рамку рисует сама тема (контуры вокруг панелей, элементов, выделения в плазмоидaх), правьте SVG/файлы цвета.

Где искать:

  • Системные темы: /usr/share/plasma/desktoptheme/<Theme>/
  • Локальные копии (лучше для правок): ~/.local/share/plasma/desktoptheme/<Theme>/
  • Декорации KWin (для рамок окон): /usr/share/kwin/decorations/<Decoration>/ или ~/.local/share/kwin/decorations/

Рекомендованный рабочий процесс:

  1. Скопируйте тему в локальную папку, чтобы обновления пакетов не перезаписали правки:
cp -r /usr/share/plasma/desktoptheme/Breeze ~/.local/share/plasma/desktoptheme/Breeze-custom
  1. Найдите элементы, которые рисуют outline/border:
grep -R "stroke" ~/.local/share/plasma/desktoptheme/Breeze-custom | less
grep -R "outline" ~/.local/share/plasma/desktoptheme/Breeze-custom | less
  1. Отредактируйте SVG: замените stroke="#xxxxxx" на stroke="none" или stroke-width="0", либо добавьте stroke-opacity="0". Пример до/после:
<!-- до -->
<rect x="0" y="0" width="100%" height="100%" fill="#1e1e1e" stroke="#ffffff" stroke-width="2"/>

<!-- после -->
<rect x="0" y="0" width="100%" height="100%" fill="#1e1e1e" stroke="none"/>
  1. Если в теме есть файл colors или colors.conf, проверьте параметры Outline/Highlight и замените цвет на прозрачный (#00000000) или на тот же цвет, что и фон.

  2. Примените тему через Системные настройки → Внешний вид → Темы рабочего стола, или перезапустите компоненты:

kquitapp5 plasmashell && kstart5 plasmashell
# и для KWin (X11)
kwin_x11 --replace &

Небольшой лайфхак: многие темы имеют настройки “Shadows and Outline” в редакторе темы — можно просто выключить интенсивность Outline (пример: обсуждение на reddit) https://www.reddit.com/r/kde/comments/nkexc9/kde_plasma_border_remove/


Убираем рамку у элементов интерфейса: QSS (Qt/CSS) для виджетов

Иногда рамку — это не оформление Plasma, а рамка у элементов Qt (список, комбобокс). Тут поможет QSS.

Примеры QSS (положите в файл ~ / .config/qss/no-border.qss и тестируйте в приложении):

/* Убираем пунктир/контур и рамку у выбранного элемента */
QListView, QTreeView, QListWidget {
 outline: none; /* убирает пунктирный focus- outline */
}
QListView::item:selected, QTreeView::item:selected, QListWidget::item:selected {
 border: none; /* убирает рамку вокруг выбранной строки */
 background: rgba(61,153,255,0.12); /* оставляем фон выделения */
}

/* Для выпадающих списков / QComboBox */
QComboBox QAbstractItemView::item:selected {
 border: none;
 background: rgba(61,153,255,0.12);
}

Источники с примерами QSS: https://stackoverflow.com/questions/15830383/get-rid-of-qts-dotted-outline-on-qlistview-items и https://stackoverflow.com/questions/74173318/remove-border-from-qcombobox-item

Как применить глобально:

  • Для одного приложения — часто можно применить QSS из кода приложения (если вы разрабатываете).
  • Для пользователя: используйте утилиты вроде qt5ct или движок Kvantum, которые позволяют задать глобальный stylesheet/тему для Qt-приложений; либо запускайте приложение через обёртку, которая выставляет нужный стиль/переменные окружения. Это требует установки дополнительного пакета, но даёт глобальный эффект.

Небольшая подсказка: если рамка видна только в одном приложении — правку лучше делать через QSS для этого приложения, а не в теме Plasma.


Практические примеры правок (команды, сниппеты)

  1. Восстановить рамку для максимизированных окон:
kwriteconfig5 --file ~/.config/kwinrc --group Windows --key BorderlessMaximizedWindows false
qdbus org.kde.KWin /KWin reconfigure

Источник: https://qastack.ru/ubuntu/253337/remove-title-bar-and-borders-on-maximized-windows-in-kubuntu

  1. Быстро убрать outline у темы (редактирование SVG):
  • Найдите файл:
grep -R "stroke" /usr/share/plasma/desktoptheme/Breeze | head
  • В нужном SVG замените stroke="#ffffff" на stroke="none".
  1. QSS для списков (создайте файл ~/.config/qss/no-border.qss с примером выше) и применяйте через qt5ct/Kvantum или при запуске тестового приложения (если поддерживает).

  2. Перезапуск компонентов:

# plasmashell
kquitapp5 plasmashell && kstart5 plasmashell

# KWin (X11)
kwin_x11 --replace &

Куда править — карта файлов и советы по бэкапу (настройка kde plasma)

Типичные пути:

  • Темы Plasma (системные): /usr/share/plasma/desktoptheme/<Theme>/
  • Темы Plasma (локальные): ~/.local/share/plasma/desktoptheme/<Theme>/
  • Декорации KWin: /usr/share/kwin/decorations/<Decoration>/ и ~/.local/share/kwin/decorations/
  • KWin config: ~/.config/kwinrc
  • Qt/QSS: произвольные файлы в ~/.config/ или через qt5ct/Kvantum

Советы:

  • Всегда делайте резервную копию файла/папки перед правкой: cp file file.bak или cp -r Theme Theme.bak.
  • Работайте в локальной копии темы в ~/.local/... — обновления системы не перезапишут изменения.
  • После правки сначала пробуйте перезапустить нужный компонент, а если не помогает — выйти/войти в сессию.

Частые проблемы и их решения

  • Рамка не уходит после правки SVG: возможно, рамку рисует KWin (декорация) — правьте декорацию, а не тему. Проверьте BorderlessMaximizedWindows и опцию “No border”.
  • Изменения перезаписываются при обновлении пакетов: работайте с локальной копией темы (~/.local/...).
  • На Wayland нельзя перезапустить kwin простым --replace: выйдите из сессии или перезагрузите сеанс.
  • Рамка всё ещё видна только в одном приложении — скорее всего, это приложение рисует свою рамку; используйте QSS для этого приложения (см. примеры на StackOverflow).
  • Тени/outline от шейдера остаются: уменьшите интенсивность Outline в редакторе темы или уберите shadow svg-файлы (проверьте раздел Shadows/Outline в теме). См. обсуждение на reddit: https://www.reddit.com/r/kde/comments/1bjcb1e/strange_white_window_highlighting_borders_how_to/ и https://www.reddit.com/r/kde/comments/nkexc9/kde_plasma_border_remove/

Источники


Заключение

Если нужно просто убрать видимую рамку, но сохранить фон выделения, начните с того, чтобы понять, кто рисует рамку: KWin (декорация окна), тема Plasma (SVG/цвета) или Qt-приложение (QSS). Для окон чаще всего достаточно изменить настройки декорации или ~/.config/kwinrc (BorderlessMaximizedWindows) и перезапустить KWin; для элементов интерфейса — добавить QSS-правило border: none/outline: none или отредактировать SVG-файлы темы (замена stroke на none). Всегда делайте резервную копию темы и работайте с локальной копией в ~/.local/share/..., чтобы не потерять правки при обновлении дистрибутива. Удачи — и если пришлёте конкретную тему/декорацию или скрин с рамкой, подскажу точнее, в каком именно SVG/файле нужно править.

Авторы
Проверено модерацией
Модерация
KDE Plasma: убрать рамку выделения, оставить фон