MoonLightOS

Основа від Ubuntu — без робочого стола Ubuntu

Ubuntu має найширший репозиторій пакетів і найкращу підтримку обладнання серед усіх основ Linux. Один лише пакет linux-firmware покриває переважну більшість Wi-Fi, Bluetooth, графіки та чипсетів, які зараз у вжитку, а ubuntu-drivers-common як слід дає раду картам NVIDIA. Secure Boot працює без підготовки, бо підписані shim і GRUB від Canonical лежать у репозиторії, а ядро підписане. А ще ця основа має дванадцять років супроводу з безпеки.

Замінити варто було саме робочий стіл Ubuntu: він важкий, і в ньому немає ні кнопки «Пуск», ні піктограм на столі, ні панелі завдань. У Cinnamon усе це є. Тому MoonLightOS починає з мінімальної основи й будує робочий стіл сам. Власного робочого стола Ubuntu в системі немає, і ніде в інтерфейсі основа не згадується.

Одне залишено незмінним свідомо: кодова назва випуску, яку бачить apt, і далі «resolute», бо від неї залежать PPA й усе, що звертається до lsb_release. Назви, які справді бачать люди, беруться з /etc/os-release.

Знімок екрана MoonLightOS
Логотип стоїть нерухомо, а світло навколо нього пульсує. Два зображення сяйва з циклами 2,6 і 3,1 секунди то сходяться, то розходяться у фазі, тому світіння ніколи не виглядає механічним. Обидва генеруються з вихідної графіки під час збірки, і той самий логотип із сяйвом ви побачите в меню GRUB, на екрані входу, у встановлювачі, на сторінці «Про MoonLightOS» і у вікні «Вітаємо».

Оформлення

Одна панель унизу, висотою 52 пікселі. Ліворуч — кнопка «Пуск» і поле пошуку, у центрі — запущені програми з найбільшими піктограмами на панелі, праворуч — область стану. У меню видно ваше фото, ім’я та чи маєте ви права адміністратора, а його поле пошуку знаходить програми, налаштування, файли й результати з інтернету.

Знімок екрана MoonLightOS
Це справжній знімок із реального запуску встановленого образу, а не макет.

Три розкладки

  • MoonLight

    Одна панель унизу. У доці живуть і улюблені програми, тому другий рядок із ярликами не потрібен.

  • Дві панелі

    Тонка смужка вгорі для годинника й піктограм стану та док унизу, який ховається сам.

  • Компактна

    Одна тонка смужка вгорі. Займає найменше місця на екрані й найменше навантажує стару графіку.

Світла й темна

Обидві теми генерує один скрипт з однієї колірної палітри — для GTK 2, 3 і 4, оболонки Cinnamon і рамок вікон. Теми GTK імпортують Adwaita й змінюють її кольори, тому нові елементи та виправлення з основного проєкту з’являються самі. Тема піктограм побудована на Papirus і замінює лише ті піктограми, що визначають дистрибутив. Колір акценту змінюється в розділі «Робочий стіл і док».

Перемикання за розкладом

Типово світла з 07:00 і темна з 19:00. Невелика фонова служба перемикає тему за цим розкладом.

Віджети на робочому столі

Типово показано великий годинник і монітор процесора, пам’яті та диска. Правою кнопкою можна додати календар і наліпки, які зберігаються як звичайний текст просто під час набору.

Анімація запуску

Логотип стоїть нерухомо, а світло навколо нього пульсує. Два зображення сяйва з циклами 2,6 і 3,1 секунди то сходяться, то розходяться у фазі, тому світіння ніколи не виглядає механічним. Обидва генеруються з вихідної графіки під час збірки, і той самий логотип із сяйвом ви побачите в меню GRUB, на екрані входу, у встановлювачі, на сторінці «Про MoonLightOS» і у вікні «Вітаємо».

Типографіка

Inter для інтерфейсу, JetBrains Mono для коду й Noto для всього іншого, включно з китайською, японською, корейською та кольоровими емодзі.

Сім шпалер

П’ять фотографічних сюжетів із пінгвіном, озером і молодим місяцем плюс генерована пара «день — ніч». У випуску типово стоїть «Захід сонця над озером».

Скорочення, які ви вже знаєте

Windows і macOS майже для всього мають різні клавіатурні скорочення. Оскільки два набори майже не конфліктують, MoonLightOS підтримує обидва: клавіша Super діє за правилами Windows, а Control — за правилами Mac.

ДіяЯк у WindowsЯк у macOS
Відкрити менюSuperSuper
ПошукSuper+SpaceSuper+Space
Файловий менеджерSuper+E—
Заблокувати екранSuper+LCtrl+Super+Q
Показати робочий стілSuper+DCtrl+Super+D
Прикріпити вікно до половини екранаSuper+Left / Right—
Розгорнути / відновитиSuper+Up / Super+DownAlt+F10 / Alt+F5
ЗгорнутиSuper+HAlt+F9
Закрити вікноAlt+F4Super+Q
На весь екранSuper+FCtrl+Super+F
Перебір віконAlt+Tab, Super+TabAlt+Tab
Наступне вікно цієї програмиAlt+`Super+`
Усі вікнаSuper+WCtrl+Up
Усі робочі столиSuper+SCtrl+Down
Перейти на інший робочий стілCtrl+Alt+Left / RightCtrl+Left / Right
Перенести вікно на інший робочий стілCtrl+Shift+Alt+Left / RightCtrl+Shift+Left / Right
НалаштуванняSuper+ISuper+,
Системний моніторCtrl+Shift+Esc—
Виконати командуSuper+R, Alt+F2—
ТерміналCtrl+Alt+TCtrl+Alt+T
БраузерSuper+BSuper+B
КалькуляторSuper+CSuper+C
Мікшер і еквалайзерSuper+ASuper+A
Історія буфера обмінуSuper+VSuper+V
НотаткиSuper+NSuper+N
Перетворення файлівSuper+Shift+CSuper+Shift+C
Знімок усього екранаPrintShift+Super+3
Знімок областіShift+PrintShift+Super+4
Знімок вікнаAlt+Print—
Панель знімків і записуCtrl+Shift+PrintShift+Super+5
Вийти з сеансуCtrl+Alt+Delete—

Якщо навести вказівник у верхній лівий кут, відкривається огляд вікон. Сама клавіша Super відкриває меню, а Super+Space — меню з курсором уже в полі пошуку.

Три формати пакетів, один магазин

apt, snap і Flatpak встановлені всі три, і GNOME Software показує результати з усіх: спершу snap, далі пакети з репозиторію Ubuntu, потім Flathub. Пакет .deb завжди найлегший варіант, а Flathub закриває все інше.

Сама програма Snap Store — це snap, залежності якого важать близько гігабайта: завелико для образу, розрахованого на комп’ютери з 2 ГБ оперативної пам’яті. Тому магазин може показувати й встановлювати snap-пакети з першого запуску, а окрема служба завантажує саму програму Snap Store, щойно з’явиться з’єднання.

Сторінка налаштувань «Програми» показує, що встановлено, з якого з трьох форматів походить кожна програма і чи немає чогось установленого двічі.

Програми на образі

Підібрані так, щоб універсальний робочий стіл працював з першого запуску — навіть без інтернету.

Інтернет

Firefox (власна збірка Mozilla, з uBlock Origin у вигляді локального розширення, тому він працює навіть без мережі), Thunderbird, Geary, Transmission

Офіс і документи

LibreOffice Writer, Calc, Impress і Draw; Evince; текстовий редактор GNOME; Xournal++; PDF Arranger; MoonLight PDF; Календар; Годинник; Погода; Карти; Калькулятор

Медіа

VLC; Celluloid; Rhythmbox; GStreamer з libav, наборами розширень «bad» і «ugly» та VA-API, тому H.264, H.265 і AAC грають у кожній програмі

Графіка й сканування

GIMP; Малювання; Eye of GNOME; MoonLight Export; Simple Scan; переглядач шрифтів; Знімок екрана

Система

GNOME Software; системний монітор; Диски; GParted; аналізатор використання диска; Timeshift; Redshift; File Roller; Seahorse; Blueman; принтери; MoonLight Tweaks

Мережа та VPN

NetworkManager з OpenVPN, OpenConnect (Cisco AnyConnect, GlobalProtect, Fortinet), L2TP, PPTP, SSH і вбудованою підтримкою WireGuard

Розробка

Visual Studio Code; gcc, g++, make, gdb; git, git-lfs; cmake, meson, ninja; Python 3 з pip, venv, NumPy і OpenCV; Node.js і npm; Rust і Cargo; Go; OpenJDK 21 з Maven і Gradle; Docker Engine, Compose v2 і Buildx; SQLite

Термінал

GNOME Terminal; bash, zsh і fish; tmux, screen; Neovim, nano; ripgrep, fd, jq, yq, htop, btop, ncdu, tree; nmap, dig, whois, traceroute, httpie, socat; rsync, rclone, aria2; shellcheck; inxi, fastfetch

Сумісність із Windows

Wine з підтримкою 32 біт, winetricks, DXVK (Direct3D 9—11) і VKD3D (Direct3D 12)

Обладнання та драйвери

Мікропрограми

Повний набір linux-firmware, мікрокод Intel і AMD та fwupd для оновлення мікропрограм.

Графіка

Mesa з Vulkan, VA-API і VDPAU для Intel та AMD. Драйвер NVIDIA лежить на образі ISO, тому його можна ввімкнути на сторінці драйверів навіть без інтернету.

Wi-Fi і Ethernet

Понад п’ятдесят драйверів бездротових адаптерів у ядрі, а також broadcom-sta і r8168, зібрані через DKMS для тих чипів, із якими стандартні драйвери справляються погано.

Принтери та сканери

CUPS із повним набором драйверів, друк у PDF, SANE і Simple Scan.

Bluetooth

BlueZ, Blueman і кодеки Bluetooth від PipeWire, а сторінка налаштувань прямо повідомляє, якщо в комп’ютері немає обладнання Bluetooth.

Звук

PipeWire з WirePlumber, сумісністю з PulseAudio і вбудованим десятисмуговим еквалайзером.

Ноутбуки

power-profiles-daemon, thermald, відсоток заряду на панелі, типово ввімкнені дотик замість клацання та природне прокручування, підтримка Wacom і Synaptics.

Віртуальні машини

Гостьові доповнення для VirtualBox, QEMU/SPICE і VMware уже на образі, тому екран змінює розмір, а буфер обміну спільний.

Сканери відбитків пальців

fprintd, libfprint і завантажувач TOD установлені та з’єднані з PAM. «Відбиток пальця» визначає сенсор і проведе вас через реєстрацію.

Розблокування обличчям

Розблокування обличчям на основі OpenCV для екрана входу, екрана блокування та sudo. Вимкнене, поки ви самі його не ввімкнете.

Безпека

У встановленій системі MoonLightOS усе, що перелічено нижче, увімкнено типово.

  • Secure Boot

    Мікропрограма → shim від Canonical → підписаний GRUB → підписане ядро. «Налаштування» → «Про MoonLightOS» показує, чи ввімкнено його на вашому комп’ютері.

  • Шифрування диска

    Шифрування всього диска LUKS2 — одна позначка у встановлювачі.

  • Брандмауер

    ufw увімкнено: вхідні з’єднання заблоковані, вихідні дозволені.

  • AppArmor

    Режим примусового застосування, зокрема для snap.

  • Автоматичні оновлення безпеки

    Щодня з репозиторію безпеки Ubuntu та packages.mozilla.org. Невикористані ядра й залежності видаляються, а комп’ютер ніколи не перезавантажується самовільно.

  • Root заблокований, sudo залишає слід

    Перший обліковий запис адмініструє комп’ютер через sudo. Пароль root не встановлюється взагалі.

  • Якість пароля та блокування

    Щонайменше вісім символів із двох різних класів. Після восьми невдалих спроб обліковий запис блокується на п’ятнадцять хвилин.

  • Посилення захисту ядра

    Ядро налаштоване так, щоб програми без прав дізнавалися про систему й одна про одну якомога менше: вказівники ядра та повідомлення завантаження приховані, зневадження чужого процесу заблоковано, а підмінити ядро під час роботи неможливо. Мережевий рівень укріплено проти підроблених маршрутів і злив з'єднань, а адреси IPv6 регулярно змінюються.

  • Менша поверхня атаки

    FireWire і набір рідко потрібних модулів файлових систем та мережевих протоколів не можуть завантажуватися автоматично, тож під'єднаний пристрій або отриманий пакет не затягнуть код, яким цей комп'ютер ніколи не користується.

  • Унікальність із першого запуску

    Ідентифікатор машини та ключі хоста SSH створюються на встановленому комп’ютері. Ключ хоста, спільний для всіх встановлень, зробив би перевірку хоста безглуздою.

  • Жодної телеметрії

    Служб звітування про помилки та статистики використання в образі немає. Телеметрію Firefox, дослідження, Pocket і спонсорований вміст вимкнено політикою, а захист від стеження увімкнено.

  • Захист від USB

    USBGuard установлено, тому пристрій, під’єднаний при заблокованому екрані, не вважається надійним. Типово вимкнено; вмикає його одна кнопка на сторінці «Безпека».

  • Аварійний пароль

    Другий пароль, який робить будь-що, окрім входу в систему. Режим стирання знищує ключі LUKS диска й вимикає комп’ютер; режим прикриття відкриває порожній сеанс і заморожує його через п’ять хвилин. Типово вимкнений, для налаштування потрібен ваш справжній пароль, і збігатися з ним він не може.

  • Пароль на меню завантаження

    Пропонується на сторінці «Безпека», бо той, хто може перезавантажити комп’ютер, інакше відредагує меню завантаження й отримає оболонку root.

  • Зрозумілі запити пароля

    Кожен помічник MoonLight має власну названу дію polkit, тому запит пароля прямо каже, на що ви погоджуєтеся.

Знімок екрана MoonLightOS
Це справжній знімок із реального запуску встановленого образу, а не макет.

Робота на комп’ютерах із невеликою пам’яттю

Стиснена пам'ять (zram)Половина оперативної пам’яті, до 8 ГБ, стиснення zstd, пріоритет 100. Для сторінок пам’яті робочого стола стиснення приблизно 3:1.
Налаштування підкачкиТипове значення ядра 60 виходить із того, що підкачка — це звернення до диска. Із zram це копіювання в пам’яті.
Захист від вичерпання пам'ятіДіє на 4 % вільної пам’яті й надсилає SIGKILL на 2 %. Ніколи не зупиняє Cinnamon, Xorg, LightDM чи Nemo; першими зупиняє Firefox, Thunderbird, Code, LibreOffice та компілятори.
Без індексатораНі tracker, ні фонового сканування диска.
Автоматичне налаштування графікиПри вході система перевіряє, який рендерер OpenGL активний. Якщо це llvmpipe або інший програмний рендерер, анімації вимикаються. Якщо ви потім вирішите інакше, система вашого вибору не змінить.
GRUBЗапитує скромний графічний режим із запасними варіантами, тому меню з’являється навіть у віртуальній машині з малим обсягом відеопам’яті.
SquashfsСтиснений zstd, тому живий сеанс швидко завантажується з флешки.

Мови

«Початкове налаштування» коротким списком пропонує англійську (США та Велика Британія), італійську, французьку, німецьку, іспанську, бразильську португальську, нідерландську, польську та російську, а всі інші локалі — у розділі «Більше мов». Розкладка клавіатури підбирається за вибраною мовою, тому на другому кроці зазвичай достатньо натиснути «Далі».

Усі MoonTools — разом 774 рядки — крім англійської, перекладено ще на ці вісім мов, і збірка завершується помилкою, якщо в програмі залишився видимий неперекладений рядок. Італійський мовний пакет і словники LibreOffice є на образі, тому встановлення в Італії без мережі повністю локалізоване; решту мовних пакетів можна завантажити одним натисканням.

Інструменти командного рядка свідомо залишені англійською: їхній вивід читають разом із документацією та вставляють у звіти про помилки, а це простіше робити однією мовою.

Знімок екрана MoonLightOS

Рішення, про які варто знати

  • Теми GTK імпортують Adwaita й перефарбовують її.

    Тема, написана вручну, ламається щоразу, коли GTK додає новий елемент. Ця ж успадковує виправлення з основного проєкту.

  • Сторінку «Відомості про систему» в Cinnamon перенаправлено, а не видалено.

    Оновлення Cinnamon не зможе тихо повернути її поряд із нашою, а якщо видалити пакети MoonLightOS, вона чисто повернеться на місце.

  • У squashfs лежить власна копія ядра.

    Той самий squashfs встановлювач копіює на диск. Якщо прибрати з нього /boot, встановиться система, яка не запуститься.

  • Тема запуску називається moonlightos, а не moonlight.

    У пакеті desktop-base з Debian уже є тема Plymouth із назвою moonlight, і оновлення тихо замінило б анімацію.

  • uBlock Origin вбудований, а не завантажується.

    Політика, що вказує на addons.mozilla.org, встановлює розширення лише при першому запуску Firefox із робочим з’єднанням. Розширення є в образі, і ви все одно можете його видалити.

  • Docker Engine, а не Docker Desktop.

    У Linux Docker Desktop запускає сам рушій у власній віртуальній машині, а це друге ядро й другий бюджет пам’яті на ноутбуці.

  • Важкі набори для розробки — за бажанням.

    Віртуальні машини, PHP з базами даних і LaTeX — одне натискання у «Вітаємо», замість гігабайта, який носило б із собою кожне встановлення.