Гид по технологиям

Как собрать собственную среду рабочего стола

7 min read Linux Обновлено 15 Apr 2026
Как собрать собственную среду рабочего стола
Как собрать собственную среду рабочего стола

Рабочий стол Linux с обоями горы

Зачем собирать свою среду рабочего стола

Стандартные окружения рабочего стола (GNOME, KDE, XFCE) хороши, но не всегда дают нужную гибкость. Сборка собственной среды позволяет выбрать только те элементы, которые вы хотите: оконный менеджер, лаунчер, панель, уведомления и т.д. Это полезно, если вы хотите лёгкую систему, особую эстетику или рабочий поток на тайловом оконном менеджере.

Важно: проект сборки собственной среды не обязательно должен быть «конечным». Это итеративный процесс: вы добавляете или заменяете компоненты по мере необходимости.

Краткий обзор компонентов среды рабочего стола

  • Оконный менеджер — управляет окнами (перемещение, растяжение, фокус). Примеры: kwin, i3, sway, bspwm.
  • Композитный менеджер — добавляет тени, прозрачность, анимацию. Часто встроен в оконный менеджер или отдельный процесс (compton/picom).
  • Панель — системная панель и трей (lxqt-panel, tint2, Polybar).
  • Обои / менеджер рабочего стола — утилиты для установки фона и значков на рабочем столе (feh, Komorebi, nitrogen).
  • Лаунчер — быстрый запуск приложений (Ulauncher, Albert, rofi).
  • Менеджер уведомлений — отображает уведомления (dunst, xfce4-notifyd).
  • Сессия — сценарий, который запускает набор приложений и управляет временем жизни сессии.

Шаг 1: Создаём скрипт сессии

Сессия — это обычный bash-скрипт, который запускает программы, составляющие рабочее окружение. Пока скрипт выполняется, сессия активна. Когда скрипт завершается, вы вернётесь на экран входа.

Ниже — пошаговые команды и объяснения на примере kwin и plank.

Установка kwin (на Ubuntu и производных):

sudo apt install kwin --no-install-recommends

Без опции –no-install-recommends apt может подтянуть весь KDE.

Установка Plank (док):

sudo apt install plank

Перейдите в /bin и создайте скрипт сессии:

cd /bin
sudo touch custom_de.sh
sudo chmod +x custom_de.sh
sudo nano custom_de.sh

Вставьте в файл верхнюю строку-шифр для bash и команды запуска. Ниже — образец скрипта с комментариями. Сохраните файл и закройте редактор.

#!/bin/bash

# Запустить DBus, чтобы gsettings и другие службы работали в сессии
exec dbus-launch --exit-with-session bash <<'SESSION'

# Оконный менеджер
kwin &

# Панель/док
plank &

# Панель LXQt (пример)
lxqt-panel &

# Установщик обоев Komorebi (используйте полный путь, если требуется)
/System/Applications/komorebi &

# Лаунчер
ulauncher &

# Менеджер уведомлений
# dunst &

# Последняя команда выполняется без '&' чтобы держать сессию активной
# Например, можно запустить терминал, который будет держать сессию:
# exec xterm

# Если вы предпочитаете, просто дождитесь завершения exec ниже
exec sleep infinity

SESSION

Пояснения:

  • ampersand (&) ставится после команд, которые должны работать в фоне. Не ставьте & после последней команды, иначе скрипт выйдет сразу.
  • dbus-launch обеспечивает работу gsettings и сообщений между процессами.
  • В примере мы используем exec sleep infinity как «последний» процесс. На практике можно запустить процесс, сам по себе не завершающийся, или оставить менеджер сессий управлять этим.

Примечание: вместо /bin лучше использовать /usr/local/bin для пользовательских скриптов, если это соответствует вашим политиками системы.

Шаг 2: Создаём .desktop-файл для сессии

Чтобы выбрать вашу среду на экране входа, создайте файл .desktop в /usr/share/xsessions. Для Wayland некоторые дисплей-менеджеры смотрят в /usr/share/wayland-sessions.

cd /usr/share/xsessions
sudo touch custom_de.desktop
sudo nano custom_de.desktop

Пример содержимого custom_de.desktop:

[Desktop Entry]
Name=Custom DE
Comment=Лёгкая настраиваемая среда рабочего стола
Exec=/bin/custom_de.sh
Type=Application

Пояснения полей:

  • Name — отображаемое имя сеанса в менеджере входа.
  • Comment — краткое описание.
  • Exec — полный путь к скрипту сессии. Укажите явный путь.
  • Type — обычно Application.

Важно: установите права владельца root и убедитесь, что скрипт исполняемый.

Шаг 3: Запуск и завершение сессии

  1. Выйдите из текущей сессии.
  2. На экране входа выберите пункт «Custom DE» (имя из поля Name).
  3. Войдите.

Чтобы завершить сессию, получите последний процесс, который держит сессию, и завершите его. Примеры:

pkill plank
# или
pkill -f custom_de.sh
# или
killall -u yourusername

Если вы используете sleep infinity как последний процесс, завершите его через pkill или kill.

Сделаем среду более полной: панель, обои, лаунчер

Рекомендуемые варианты:

  • Компоновка обоев: Komorebi (возможность видео-обоев), feh, nitrogen.
  • Панели: lxqt-panel, tint2, Polybar.
  • Лаунчеры: Ulauncher, rofi, Albert.
  • Менеджер уведомлений: dunst.

Пример установки LXQt-панели на Ubuntu:

sudo apt install lxqt-panel

Komorebi: скачайте .deb из репозитория GitHub проекта, установите через dpkg и запустите. В скрипте сессии используйте полный путь, например /System/Applications/komorebi.

Важно: некоторые приложения предполагают, что в окружении присутствует DBUS или другие сервисы. Поэтому добавляйте dbus-launch в начало скрипта.

Как менять GTK- и значковые темы

Если у вас нет GUI-утилит типа gnome-tweaks, можно менять темы через gsettings. Для работы gsettings в сессии должен быть запущен dbus.

Получить текущую тему GTK:

gsettings get org.gnome.desktop.interface gtk-theme

Установить тему (пример: Canta):

gsettings set org.gnome.desktop.interface gtk-theme Canta

Тема должна находиться в /usr/share/themes (имя темы — название папки).

Чтобы сменить тему значков:

gsettings set org.gnome.desktop.interface icon-theme Papirus

Если gsettings не даёт эффекта, проверьте, запущен ли dbus и корректно ли выставлен XDG_RUNTIME_DIR для Wayland-сессий.

Когда этот подход не сработает

  • Дисплей-менеджер не поддерживает пользовательские сессии. В таком случае используйте другой менеджер входа или настройте systemd –user.
  • Вы целитесь на Wayland, а используемые компоненты не имеют поддержки Wayland. Тогда либо используйте Xorg, либо выбирайте Wayland-совместимые компоненты (sway, waybar).
  • Некоторые приложения ожидают окружение рабочего стола (напр. GNOME Shell) и без него не работают корректно.

Альтернативные подходы

  • Установить минимальную DE из репозиториев (например, Xfce minimal) и удалить лишнее.
  • Использовать дистрибутив, ориентированный на кастомизацию (Arch Linux) и собирать систему «с нуля».
  • Запускать оконный менеджер вручную из ~/.xinitrc и использовать startx вместо дисплей-менеджера.

Mermaid-дерево решений (какое действие выбрать):

flowchart TD
  A[Нужна лёгкая DE?] -->|Да| B{Вы на Wayland?}
  A -->|Нет| C[Установите готовое DE]
  B -->|Да| D[Выберите sway/waybar]
  B -->|Нет| E[Используйте i3/bspwm/kwin]
  D --> F[Создайте .desktop в /usr/share/wayland-sessions]
  E --> G[Создайте .desktop в /usr/share/xsessions]

Критерии приёмки

Перед тем как считать среду готовой, проверьте:

  • Сессия запускается и остаётся активной после входа.
  • Оконный менеджер реагирует на базовые команды (перемещение, закрытие, фокус).
  • Панель отображается и доступен трей/уведомления.
  • Темы GTK и иконок применяются к приложениям.
  • Вход/выход из сессии корректно возвращает вас на экран логина.

Тестовые сценарии:

  • Запуск: выберите сессию, зайдите и выйдите — без ошибок.
  • Перезагрузка системы: окружение стартует автоматически.
  • Установка новой темы: тема появляется после установки и применения.
  • Падение процесса: если завершить plank, он не должен приводить к завершению сессии (если это не последний процесс).

Чек-листы

Чек-лист разработчика/энтузиаста:

  • Установлен оконный менеджер.
  • Создан исполняемый скрипт сессии.
  • Создан .desktop-файл в /usr/share/xsessions.
  • Запущен dbus-launch в сессии.
  • Добавлен менеджер уведомлений.
  • Проверены темы GTK и иконок.

Чек-лист для системного администратора:

  • Права и владельцы файлов проверены (root:root).
  • Нет конфликтующих сервисов автозапуска.
  • Логи сессии доступны для отладки (/var/log/ или journalctl).
  • Учтены требования безопасности (см. ниже).

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

  • Не запускайте недоверенные бинарники в автозапуске с правами root.
  • Проверяйте пакеты перед установкой (особенно те, что скачаны с GitHub в виде .deb).
  • Ограничьте права на скрипты и .desktop-файлы (chmod 755/644 соответственно).
  • Для многопользовательской системы проверяйте, чтобы пользовательские сессии не могли запускать наборы сервисов с повышенными привилегиями.

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

Проблема: сессия запускается, но gsettings не меняет тему.

  • Решение: убедитесь, что dbus запущен в сессии (dbus-launch). Проверьте переменные окружения и XDG_RUNTIME_DIR.

Проблема: дисплей-менеджер не показывает вашу сессию.

  • Решение: проверьте права и формат .desktop-файла. Посмотрите лог дисплей-менеджера.

Проблема: одно приложение завершилось — вся сессия ушла.

  • Решение: проверьте, какая команда была последней в скрипте. Не ставьте & после последней команды.

Ментальные модели и практические советы

  • Модель «песочницы»: собирайте новую среду сначала в виртуальной машине или в тёплой среде, чтобы не сломать основную систему.
  • Модель «ядро и плагины»: выберите небольшой набор «ядра» (оконный менеджер + панель + уведомления), а остальное подключайте как плагины.
  • Правило 80/20: 20% компонентов дают 80% удобства. Сначала добавьте базовые: панель, лаунчер, уведомления.

Короткий глоссарий

  • DBus — системная шина сообщений между процессами.
  • .desktop — мета-файл, описывающий приложение или сессию для среды рабочего стола.
  • Oконный менеджер — программа, управляющая расположением и поведением окон.
  • Композитор — отвечает за визуальные эффекты и композицию изображения.

Итог

Собрать собственную среду рабочего стола на Linux можно относительно просто. Начните с минимального скрипта сессии и одного оконного менеджера. Добавляйте панель, лаунчер и уведомления по мере необходимости. Тестируйте каждый шаг и держите резервный способ доступа к системе (TTY или другой пользователь). Экспериментируйте — это часть удовольствия.

Примечание: если вам нужна помощь с конкретной комбинацией компонентов (например, sway + waybar + wayland-обои), укажите их, и вы получите адаптированный пример скрипта и checklist.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Подготовка к техническому собеседованию разработчика
Карьера

Подготовка к техническому собеседованию разработчика

Запуск мастера устранения неполадок в Windows
Windows

Запуск мастера устранения неполадок в Windows

Как создать мем: полное руководство
Социальные сети

Как создать мем: полное руководство

Как устранить BSOD 0x0000003B в Windows
Windows

Как устранить BSOD 0x0000003B в Windows

Clone Stamp в Photoshop — подробное руководство
Графика

Clone Stamp в Photoshop — подробное руководство

Синхронизация звука и видео в After Effects
Видео монтаж

Синхронизация звука и видео в After Effects