Domicile Desktop – экспериментальное рабочее окружение для Linux, в котором роль композитора Wayland выполняет модифицированный браузерный движок Chromium. Весь рабочий стол – это одна веб-страница: окна обычных приложений и сайты размещаются на ней как HTML-элементы, а их расположение и внешний вид задаются средствами CSS и JavaScript.

Вместе с Domicile поставляется готовая оболочка Manganese – тайлинговый рабочий стол в духе Sway с панелью, лаунчером, приложением настроек и экраном блокировки. В обзоре разбираем, чем Domicile отличается от привычных окружений, как его установить, как настроить Manganese через приложение Settings и файл конфигурации и что можно сделать в модуле на React – от своей клавиши для терминала до собственной оболочки рабочего стола. Все примеры конфигурации мы запускали на тестовом ПК с Domicile 1.1.2.
Чем Domicile отличается от других рабочих окружений
В GNOME, KDE Plasma и других окружениях окна рисует композитор, а браузер – одно из приложений со своим движком внутри окна. В Domicile это одно целое: композитор Wayland написан на Rust и работает вместе с измененной сборкой Chromium. Окна обычных программ попадают прямо в систему отрисовки Chromium, без промежуточных снимков и копий, и становятся на странице элементами <app>, а сайты – элементами <webview>. Тайлинг, плавающие окна, скругленные углы и анимация задаются обычным CSS.
Страницу, которая рисует рабочий стол, в Domicile называют оболочкой (shell). Оболочка отвечает за панель, раскладку окон и внешний вид, а сам Domicile предоставляет ей экран блокировки, трей, уведомления, демонстрацию экрана, историю буфера обмена и настройку мониторов. Оболочку можно заменить на ходу командой domicile load-shell: открытые окна при этом не закрываются, сбрасывается только состояние самой страницы оболочки. Оболочки и их части, например панель или лаунчер, можно публиковать как пакеты npm.
Браузер встроен в рабочий стол: каждый сайт открывается отдельным окном рядом с приложениями и раскладывается так же. Расширения Chrome работают во всех окнах браузера, и для них каждый сайт на рабочем столе выглядит как вкладка.
Manganese – оболочка, которая работает сразу после установки. Она использует сочетания клавиш оконного менеджера Sway на клавише Meta (Windows), дает 10 рабочих столов, вкладки, стопки и разделение окон, плавающие окна и скрытый блокнот (scratchpad). В нее входят лаунчер, приложение Settings, история буфера обмена на 32 записи, снимки и запись экрана, уведомления, экран блокировки и браузер. Каждая часть Manganese – отдельный пакет, поэтому можно добавить на панель свой элемент или заменить лаунчер, оставив остальное как есть.
Проект распространяется под лицензией MIT, измененные файлы Chromium – под лицензиями Chromium. В репозитории пакетов проекта сейчас версии 1.0.0, 1.1.1 и 1.1.2, а на GitHub непрерывно выходят более новые сборки. Документация в репозитории описывает самые новые сборки, поэтому часть возможностей из нее в версии 1.1.2 еще нет – такие места мы отмечаем ниже. Разработчик прямо пишет, что большую часть кода, тестов и документации написал ИИ-ассистент Claude, а архитектуру и технические решения определяет сопровождающий проекта. Изменения проверяются тестами и ежедневным использованием, а не построчным просмотром человеком.
Требования и ограничения
Domicile работает только на 64-битных процессорах x86 (x86_64), сборок для ARM нет. Запускаются только приложения с поддержкой Wayland: Xwayland в Domicile нет, поэтому программы, которые умеют работать только с X11, не откроются. Приложения на GTK, Qt, SDL и Electron Domicile сам запускает в режиме Wayland. Разработчик регулярно проверяет SuperTuxKart, mpv, Blender, GIMP 3, LibreOffice и терминал foot.
| Дистрибутив | Пакет |
|---|---|
| Debian 13, Ubuntu 24.04 и новее | .deb, репозиторий current |
| Debian 12, Ubuntu 22.04 | .deb, репозиторий legacy |
| Fedora, RHEL 10 | .rpm |
| openSUSE Tumbleweed | .rpm |
| Arch Linux | репозиторий проекта или domicile-bin из AUR |
| NixOS, Nix в любом дистрибутиве | flake |
Сборки для видеокарт NVIDIA с проприетарным драйвером проверяются автоматически при каждой сборке движка. На видеокарте AMD разработчик работает каждый день, с Intel окружение проверяется вручную. Без видеокарты Domicile тоже запускается и рисует силами процессора, поэтому его можно попробовать в виртуальной машине.
У встроенного браузера нет сохранения паролей, автозаполнения и перевода страниц, входа в аккаунт Google и синхронизации Chrome, страниц chrome://, предварительного просмотра печати и режима «картинка в картинке». Пароли и ключи доступа предлагается хранить в расширении менеджера паролей, разработчик проверял расширение Bitwarden. Поддерживаются только расширения Manifest V3: uBlock Origin Lite работает, а классический uBlock Origin – нет.
Для элементов панели нужны системные службы: для уровня заряда батареи – UPower, для звука – PipeWire или PulseAudio и утилита pactl, для сети – NetworkManager, iwd или wpa_supplicant. Пакеты Domicile рекомендуют их к установке.
Установка
Domicile ставится из репозитория проекта, и дальше пакетный менеджер обновляет его вместе с системой. В Debian 13 и Ubuntu 24.04 и новее нужно добавить ключ и репозиторий, затем установить пакет:
sudo curl -fsSL -o /etc/apt/keyrings/domicile.asc https://packages.domicile-desktop.com/domicile.asc echo "deb [signed-by=/etc/apt/keyrings/domicile.asc] https://packages.domicile-desktop.com/apt current main" | sudo tee /etc/apt/sources.list.d/domicile.list sudo apt update && sudo apt install domicile
В Debian 12 и Ubuntu 22.04 в строке репозитория вместо current указывается legacy. В Fedora и RHEL 10 команды такие:
sudo tee /etc/yum.repos.d/domicile.repo <<'REPO' [domicile] name=Domicile baseurl=https://packages.domicile-desktop.com/rpm/fedora gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.domicile-desktop.com/domicile.asc REPO sudo dnf install domicile
В openSUSE Tumbleweed:
sudo rpm --import https://packages.domicile-desktop.com/domicile.asc sudo zypper addrepo --gpgcheck https://packages.domicile-desktop.com/rpm/opensuse domicile sudo zypper install domicile
В Arch Linux проще всего установить пакет domicile-bin из AUR. Команды для репозитория проекта в Arch и модули для NixOS приведены в инструкции по установке. Пакеты самых новых сборок публикуются на странице выпусков проекта на GitHub.
После установки во всех дистрибутивах, кроме NixOS, нужно выбрать оболочку Manganese в файле конфигурации. Его можно создать двумя командами:
mkdir -p ~/.config/domicile
echo '{ "shell": "@domicile-desktop/manganese" }' > ~/.config/domicile/domicile.json
Затем нужно выйти из системы и на экране входа выбрать сеанс Domicile. Чтобы сначала посмотреть на Manganese, не выходя из своего сеанса Wayland, достаточно запустить в терминале команду ниже – рабочий стол откроется в отдельном окне, а после закрытия окна вы вернетесь в привычное окружение:
domicile @domicile-desktop/manganese
Первые шаги
Рабочим столом Manganese управляют клавишей Meta. Лаунчер открывается сочетанием Meta+Space или Meta+D, а также кнопкой в левом углу панели. В нем ищутся приложения, файлы из домашней папки, сайты и запросы для поисковой системы, а справа показывается предпросмотр выбранной строки. Интерфейс Manganese и Settings – только на английском, и названия приложений в лаунчере тоже английские, даже если в системе есть русский перевод.

Если ввести !, лаунчер покажет метки для поиска на сайтах: !gh ищет на GitHub, !im – в Google Картинках, !maps – в Google Картах, !wiki – в Википедии, !yt – на YouTube, а !p открывает приватное окно браузера. Без метки запрос уходит в поиск Google.

Клавиши для терминала по умолчанию нет: терминал открывается из лаунчера, а свое сочетание можно назначить в модуле конфигурации (пример ниже). Новые окна выстраиваются плиткой: каждое открывается вкладкой рядом с активным, фокус следует за указателем мыши. Окно можно перетащить за заголовок или с зажатой клавишей Meta, а границу между окнами – потянуть мышью.
Сайты открываются из того же лаунчера: достаточно ввести адрес или запрос и нажать Enter. У каждого окна браузера своя адресная строка с кнопками навигации, разрешениями сайта, масштабом и загрузками.
На панели слева расположены кнопка лаунчера, трей и номера рабочих столов с окнами, в центре – часы, справа – переключатель раскладки (если раскладок несколько), переключатель темы, кнопка запрета гашения экрана, яркость и ночной свет, громкость, Bluetooth, сеть, батарея и уведомления. Элементы для оборудования, которого нет, не показываются.
Основные сочетания клавиш
| Клавиши | Действие |
|---|---|
| Meta+Space, Meta+D | Лаунчер |
| Meta+H/J/K/L, Meta+стрелки | Перевести фокус на соседнее окно |
| Meta+Shift+H/J/K/L, Meta+Shift+стрелки | Переместить окно, за краем – на соседний монитор |
| Meta+Shift+Q | Закрыть окно |
| Meta+F / Meta+Shift+F | Во весь экран / на все мониторы |
| Meta+Shift+Tab | Сделать окно плавающим или вернуть в плитку |
| Meta+Minus / Meta+Shift+Minus | Показать скрытый блокнот / убрать в него окно |
| Meta+1 … Meta+0 | Рабочие столы 1–10 |
| Meta+Shift+1 … Meta+Shift+0 | Отправить окно на рабочий стол |
| Meta+W / Meta+S / Meta+E | Вкладки / стопка / окна группы рядом |
| Meta+Shift+V | История буфера обмена |
| Meta+Shift+Space | Открыть скопированный адрес или найти скопированный текст |
| Meta+Shift+Return | Заблокировать экран |
| Снимок экрана |
В документации описан еще обзор рабочих столов по Meta+O, но он появился в более новых сборках: в версии 1.1.2 этого сочетания нет. На тачпаде работают жесты: тремя пальцами переключается фокус, четырьмя – рабочие столы и скрытый блокнот.
По клавише Print открывается окно Take a screenshot: в нем можно снять весь экран, монитор или отдельное окно либо выделить область мышью, а затем сохранить снимок кнопкой Save или скопировать кнопкой Copy. Снимки сохраняются в папку ~/Pictures/Screenshots, записи экрана – в ~/Videos/Screen recordings. История буфера обмена хранится только в памяти и очищается при выходе из системы.

Настройка через Settings и файл domicile.json
У Manganese два способа настройки: приложение Settings, которое открывается из лаунчера, и файл ~/.config/domicile/domicile.json. Изменения в Settings применяются сразу и сохраняются в тот же файл, а файл рабочий стол перечитывает при каждом сохранении, не закрывая окна. Если в файле ошибка, рабочий стол продолжает работать с последними правильными настройками, а Settings показывает, в какой строке ошибка.
| Страница Settings | Что там настраивается |
|---|---|
| Appearance | Тема, акцентный цвет, контраст, анимация, значки |
| Keyboard | Раскладки клавиатуры |
| Displays | Профили мониторов |
| Power & lock | Гашение экрана и блокировка |
| Privacy | Запрет приложениям на камеру, микрофон, геолокацию и другое |
| Launcher | Что исключить из поиска файлов |
| Startup | Программы для автозапуска |
| Shell | Часы, ночной свет и яркость |
| Extensions | Расширения браузера |
| Site permissions, Site data | Разрешения сайтов и данные, которые они хранят |
| Code | Файл конфигурации в текстовом редакторе |
Базовая настройка: тема, раскладки, блокировка, часы
Этот файл подойдет для начала. Он включает темную тему с синим акцентным цветом, добавляет английскую и русскую раскладки, гасит экран через 10 минут без действий и блокирует через 15 минут, убирает секунды из часов и включает ночной свет с 21:30 до 7:00.
{
"shell": "@domicile-desktop/manganese",
"theme": { "mode": "dark", "accent_color": "#3584e4" },
"input": {
"keyboard": {
"keymaps": [
{ "name": "us", "xkb_layout": "us" },
{ "name": "ru", "xkb_layout": "ru" }
]
}
},
"idle": { "blank_after_seconds": 600, "lock_after_seconds": 900 },
"shell_options": {
"clock": { "format": "24h", "seconds": false },
"nightLight": { "schedule": "custom", "from": "21:30", "to": "07:00", "warmth": 60 }
}
}
Каждая раскладка в списке keymaps описывается целиком: поля xkb_layout, xkb_variant и xkb_options внутри записи не наследуются от соседних. Рабочий стол стартует на первой раскладке. После сохранения файла на панели появляется индикатор US/RU, по щелчку на нем раскладку можно сменить, а в Settings на странице Keyboard видны обе раскладки. Если нужна одна раскладка с опциями xkb, например Caps Lock в роли Escape, достаточно строки "keyboard": { "xkb_layout": "us", "xkb_options": ["caps:escape"] }.

В документации файл начинается со строки "$schema": "https://domicile-desktop.com/config.schema.json" – она нужна редактору кода для подсказок. В версии 1.1.2 ее лучше не добавлять: рабочий стол файл принимает, а Settings открывается с ошибкой «Unrecognized key: "$schema"».
Автозапуск, приватность, расширения и темные сайты
Второй пример дополняет первый: новые разделы добавляются в тот же файл, а в раздел theme добавляется параметр force_dark. Здесь при входе запускается апплет NetworkManager, приложениям передается просьба не использовать камеру и микрофон, в браузер ставится расширение uBlock Origin Lite, сайт Comss.ru рисуется в темных тонах, а скрытые файлы и папки node_modules не попадают в поиск лаунчера.
{
"startup": { "commands": [["nm-applet", "--indicator"]] },
"lockdown": { "disable_camera": true, "disable_microphone": true },
"extensions": { "web_store": ["ddkjiahejlhfcafbddmgiahcphecmpfh"] },
"theme": { "mode": "dark", "accent_color": "#3584e4", "force_dark": ["www.comss.ru"] },
"files": { "omit": ["**/.*", "node_modules"] }
}
Команды автозапуска записываются списком: сначала программа, затем ее аргументы. Они выполняются один раз при входе, а не при каждом сохранении файла. Апплет NetworkManager без параметра --indicator запускается, но значка в трее не показывает. Запреты из раздела lockdown передаются приложениям через портал, и их соблюдают только те программы, которые его поддерживают. Расширение указывается идентификатором из Chrome Web Store: uBlock Origin Lite поставился сам примерно за 15 секунд, его значок появился в трее слева на панели, а окно расширения – на русском. Если убрать идентификатор из списка, расширение удаляется.
Параметр force_dark пригодится для сайтов без своей темной темы, например Gmail (mail.google.com): пока на рабочем столе темная тема, браузер рисует их темными средствами Chromium. Указывается имя сайта, оно охватывает и поддомены.

Документация описывает и настройки тачпада и мыши в разделе input – естественную прокрутку, касание вместо щелчка, профиль ускорения. Но это возможность новых сборок: версия 1.1.2 отклоняет файл с ошибкой unknown field `touchpad`. По той же причине в 1.1.2 нет параметра cursor_hide_when_typing. Тему курсора, его размер и шрифты версия 1.1.2 принимает в разделе theme – это параметры cursor_theme, cursor_size, font_name и monospace_font_name.
Масштаб и мониторы
Новый монитор рабочий стол сам размещает справа от остальных. Чтобы задать положение, масштаб или поворот, создается профиль – описание набора мониторов. Применяется первый профиль, все мониторы которого подключены. В виртуальной машине экран называется Virtual-1, и такой профиль включает масштаб 125% на ходу:
{
"output": {
"profiles": [
{ "name": "vm", "displays": [{ "display": "Virtual-1", "scale": 1.25 }] }
]
}
}
На обычном компьютере имена экранов выглядят как drm-1, а внешний монитор можно указать по производителю, модели и серийному номеру. Имена показывает команда wayland-info в строках wl_output. Кроме масштаба, для каждого монитора в профиле задаются положение (position), поворот (transform, например rotate-270) и выключение ("enabled": false).
Продвинутая настройка: модуль domicile.tsx
Сочетания клавиш, состав панели, правила для плавающих окон, обои и закладки лаунчера настраиваются уже не в JSON, а в модуле ~/.config/domicile/domicile.tsx на TypeScript с React. Модуль заменяет domicile.json, и оба файла сразу в папке лежать не должны: при входе Domicile откажется запускаться с ошибкой more than one … remove all but one. Отдельный проект, npm и сборка не нужны – React и пакеты @domicile-desktop/* берутся из установленного Domicile.
Экспорт Shell запускает оболочку с вашими параметрами, а каждый другой экспорт становится разделом конфигурации, как в JSON: theme, input, startup, shell_options и остальные. При первом входе с модулем оболочка собирается около 7 секунд, затем после каждого сохранения файла Domicile пересобирает ее примерно за 5 секунд, не закрывая окна. Settings при этом показывает настройки только для чтения, а сам модуль можно править на странице Code.

Свои клавиши, плавающие окна, обои и закладки
В этом примере к стандартным сочетаниям добавлены терминал на Meta+Return, переключение раскладки на Meta+Alt+Space и панель уведомлений на Meta+N. Калькулятор GNOME и окно ввода пароля pinentry всегда открываются плавающими, обоями служит фотография с Wikimedia Commons, а в лаунчере появилась закладка Comss.ru. Вместо foot подставьте свой терминал.
import { commonsPhoto, runManganese } from "@domicile-desktop/manganese";
import {
DEFAULT_KEYBINDINGS,
exec,
keymap,
notifications,
} from "@domicile-desktop/manganese-window-management/keyboard/commands";
export const theme = { mode: "dark" };
export const input = {
keyboard: {
keymaps: [
{ name: "us", xkb_layout: "us" },
{ name: "ru", xkb_layout: "ru" },
],
},
};
export const shell_options = { clock: { format: "24h", seconds: false } };
export const Shell = runManganese({
keybindings: {
keybindings: {
...DEFAULT_KEYBINDINGS,
"Meta+Return": exec("foot"),
"Meta+Alt+space": keymap("next"),
"Meta+n": notifications(),
},
},
floating: [{ app: "pinentry" }, { app: "^org.gnome.Calculator$" }],
wallpapers: {
dark: [commonsPhoto("Moscow Kremlin from Kamenny bridge.jpg")],
},
applications: {
bookmarks: [{ name: "Comss.ru", url: "https://www.comss.ru/list.php?c=whatsnew" }],
},
});
Функция exec принимает программу и ее аргументы, для строки оболочки используется exec("sh", "-c", "…"). При переключении раскладки внизу экрана появляется подсказка с ее названием, а индикатор на панели меняется. Правило в floating сравнивает идентификатор приложения и заголовок окна с регулярными выражениями – калькулятор открывается плавающим по центру экрана. Функция commonsPhoto дает ссылку на фотографию с Wikimedia Commons по имени файла. В список обоев можно добавить и свой файл, папку с картинками или адрес изображения в интернете, а встроенные фотографии подключаются через DEFAULT_WALLPAPERS.


Свой элемент панели
Элементы панели – обычные компоненты React, поэтому свой элемент пишется в несколько строк. Этот пример добавляет рядом с основными часами время в Москве. Компонент и импорт стиля добавляются в тот же domicile.tsx, а параметр bar – в вызов runManganese:
import { DEFAULT_BAR, runManganese } from "@domicile-desktop/manganese";
import { useEffect, useState } from "react";
import "./moscow.css";
const Moscow = () => {
const [now, setNow] = useState(new Date());
useEffect(() => {
const timer = setInterval(() => setNow(new Date()), 1000);
return () => clearInterval(timer);
}, []);
const time = now.toLocaleTimeString("ru-RU", {
hour: "2-digit",
minute: "2-digit",
timeZone: "Europe/Moscow",
});
return <span className="moscow">Москва {time}</span>;
};
export const Shell = runManganese({
bar: { ...DEFAULT_BAR, center: [...DEFAULT_BAR.center, <Moscow key="moscow" />] },
});
Стиль лежит рядом, в файле ~/.config/domicile/moscow.css:
.moscow {
font-size: 13px;
font-weight: 500;
margin-inline-start: 12px;
opacity: 0.7;
white-space: nowrap;
}
Панель состоит из трех колонок – left, center и right. Чтобы сохранить стандартные элементы и добавить свой, берется DEFAULT_BAR, а чтобы собрать панель полностью заново, все элементы перечисляются вручную: каждый стандартный элемент Manganese – отдельный пакет, например @domicile-desktop/manganese-bar-module-clock.

Скругленные углы у окон
Файл CSS, подключенный в domicile.tsx, действует на всю страницу оболочки. Например, если добавить в модуль строку import "./look.css";, а в файл look.css записать правило ниже, у содержимого всех окон Manganese появятся скругленные углы:
app {
border-radius: 14px;
}
Раскладка окон и ввод мышью при этом работают как обычно. Заголовки и вкладки Manganese рисует сам, поэтому правило скругляет только содержимое окна, и в верхнем левом углу под строкой вкладок проглядывает узкая полоска обоев.
Своя оболочка с нуля
Оболочку можно написать и полностью самостоятельно, в одном файле. Пример из документации раскладывает все окна в ряд со скругленными углами, обводит активное окно синей рамкой и добавляет внизу строку запуска программ, а Meta+Return открывает терминал:
/// <reference types="@domicile-desktop/react/elements" />
import { useDomicile } from "@domicile-desktop/react/domicile-provider";
import { mount } from "@domicile-desktop/react/mount";
import { useFocusedWindow, useWindows } from "@domicile-desktop/react/windows";
import { useEffect } from "react";
const Desktop = () => {
const focused = useFocusedWindow();
const windows = useWindows().filter((window) => window.parent === undefined);
return (
<main style={{ display: "flex", gap: 8, height: "100vh", padding: 8 }}>
{windows.map((window) => (
<app
app-id={window.appId}
key={window.appId}
style={{
borderRadius: 8,
flex: 1,
outline: window.appId === focused ? "2px solid royalblue" : "none",
}}
/>
))}
<Launcher />
</main>
);
};
const Launcher = () => {
const { keyboard, processes } = useDomicile();
useEffect(() => {
keyboard.grab("Meta+Return");
const unlisten = keyboard.on("shortcut", ({ chord }) => {
if (chord === "Meta+Return") {
processes.launch(["foot"]);
}
});
return () => {
unlisten();
keyboard.ungrab("Meta+Return");
};
}, [keyboard, processes]);
return (
<form
onSubmit={(event) => {
event.preventDefault();
const command = String(new FormData(event.currentTarget).get("command"));
const argv = command.split(" ").filter(Boolean);
if (argv.length > 0) {
processes.launch(argv);
}
event.currentTarget.reset();
}}
style={{ bottom: 16, left: "50%", position: "fixed", translate: "-50%" }}
>
<input name="command" placeholder="Run an app, like firefox" />
</form>
);
};
export const Shell = mount(Desktop);
Файл shell.tsx можно положить в любую папку. В уже запущенном Domicile оболочка загружается из терминала командой domicile load-shell ./shell.tsx: Domicile сам собирает файл, открытые окна выстраиваются в ряд, а приложения запускаются из строки внизу. Фона в этом примере нет, поэтому за окнами белая страница. Вернуться к Manganese можно командой domicile load-shell ~/.config/domicile/domicile.tsx – все окна остаются на месте.

Поскольку окно приложения – это HTML-элемент, к нему применим любой CSS. Разработчик в описании проекта показывает такой пример – если подключить его в той же оболочке через import "./rot.css";, все окна повернутся на 17 градусов, станут полупрозрачными и получат скругленные углы:
app {
transform: rotate(17deg);
border-radius: 12px;
opacity: 0.9;
}
Повернутые окна остаются рабочими: щелчки попадают по кнопкам калькулятора, а в терминале можно печатать.

Полезные команды
Команда domicile open --app <адрес> открывает сайт в отдельном окне без адресной строки. domicile install-app <адрес> устанавливает сайт как приложение и добавляет его в лаунчер, но только если у сайта есть манифест веб-приложения: так устанавливается, например, excalidraw.com, а для сайтов без манифеста команда сообщает, что установить их нельзя. Удаляет такое приложение domicile uninstall-app <адрес>.

domicile theme toggle переключает светлую и темную тему до выхода из системы, в файл конфигурации выбор не записывается. domicile screenshot делает снимок экрана, domicile screen-record записывает экран. Любую команду оболочки можно выполнить из терминала, например domicile send-shell workspace 2 переключает на второй рабочий стол. domicile which-shell показывает, какая оболочка запущена, а domicile check-config проверяет файл domicile.json.

Если что-то пошло не так
Если сеанс Domicile не запускается, нужно переключиться на консоль сочетанием Ctrl+Alt+F2, войти в систему и запустить domicile вручную: он напишет, какой файл конфигурации взял и почему остановился. Файл domicile.json стоит проверить командой ниже. Если он правильный, команда ничего не выводит, а при ошибке называет строку и столбец, например invalid config syntax: expected `,` or `}` at line 3 column 3. Модуль domicile.tsx эта команда не проверяет.
domicile check-config ~/.config/domicile/domicile.json

В Ubuntu 24.04 и новее для движка браузера должен быть загружен профиль AppArmor из пакета – если его нет, пакет нужно переустановить. Если экран не разблокируется паролем, значит, отсутствует служба проверки пароля domicile в /etc/pam.d. В этом случае нужно переключиться на консоль сочетанием Ctrl+Alt+F3, исправить файл и вернуться: открытые окна не пропадут.
Если рабочий стол подтормаживает под нагрузкой, нужно проверить, установлен ли rtkit, и добавить пользователя в группу domicile, после чего выйти и войти снова:
sudo usermod -aG domicile "$USER"
Если на панели нет батареи, звука или сети, не хватает служб UPower, PipeWire или PulseAudio с утилитой pactl, NetworkManager или iwd.
Наши наблюдения
Мы установили Domicile на тестовый ПК – виртуальную машину VMware с Ubuntu 24.04.4, четырьмя ядрами процессора и 8 ГБ памяти, без 3D-ускорения. Из репозитория была установлена версия 1.1.2 с движком Chromium 159: вместе с ней установлен 101 пакет зависимостей, загрузка составила 286 МБ, а на диске Domicile занял около 865 МБ. Сеанс Domicile запускается с экрана входа GDM.
Видеоускорения в виртуальной машине нет, поэтому Domicile рисует силами процессора. Окна, лаунчер и переключение рабочих столов при этом работают без заметных задержек. При прокрутке сайта процесс отрисовки занимает около половины одного ядра, а вся система – около 17% от четырех ядер, в простое нагрузки почти нет. Сразу после входа занято 1,2 ГБ памяти, из них около 700 МБ приходится на 19 процессов Domicile и его движка. С открытыми терминалом, браузером и Settings занято 1,4 ГБ. Действие ночного света на снимках экрана виртуальной машины не видно, а таймеры гашения и блокировки экрана мы не проверяли.
Интерфейс Manganese и Settings работает только на английском: часы показывают день недели и дату в формате «Monday 2026-11-09 12:48», окно снимка экрана называется Take a screenshot. Лаунчер берет из ярлыков приложений только английские названия: App Center вместо «Центра приложений», Calculator вместо «Калькулятора». Заголовки окон и вкладок браузера при этом русские, а GTK-приложения работают на русском. Кириллица после переключения на русскую раскладку вводится и в терминале foot, и в адресной строке браузера. Но сочетания с Ctrl в русской раскладке работают не везде: в foot вместо Ctrl+U пришла служебная последовательность символов, а Ctrl+L в браузере не выделил адресную строку.
Экран блокировки по Meta+Shift+Return принимает пароль пользователя. Ошибка в domicile.json не ломает работающий рабочий стол: прежние настройки остаются, уведомления об ошибке версия 1.1.2 не показывает, но Settings сообщает, в какой строке ошибка. Команда domicile --version в этой версии не работает и завершается ошибкой разбора параметров. В журнале постоянно появлялись ошибки обращения к RealtimeKit, потому что пользователь не входил в группу domicile, – на скорость работы в виртуальной машине это заметно не влияло.
