Repository navigation
Releases
yami 2.7.0
- Switch between players (#24): the bar and the music popup follow the player that started playing last, so a YouTube tab no longer pushes Spotify out; with several players the name in the popup is a button that switches to the next one (right click: back), and
yami msg media playerdoes it from a key. Play/pause, next and previous keys go to the player the bar shows. - Keybindings in any layout: in Russian and other non-Latin layouts the keys with punctuation (
Mod+/,Mod+.,Mod+[,Mod+-…) used to miss or hit the wrong bind, because niri looked at the symbol the current layout prints. yami-niri 26.04-yami.6 matches them by the key of your Latin layout, as letters already were; the power menu's letters work in any layout too. Active from the next login after the fork is rebuilt. - The installer asks what to install: the components page has yami-files, yami-view, yami-play, the login screen, drives and phones, tools, games and the NVIDIA profile each on its own,
s(or--shell-only) installs only niri and the shell,--no-ID/--IDset one from the command line. Only the chosen apps are built, only their packages installed. An update repeats the choice and takes out what was unticked (yami-files, yami-view, yami-play with their file associations). - Restyle only what you want: a page of the installer (
--restyle) and settings → color → apps list GTK, Qt and KDE, the cursor, kitty, fastfetch, btop, Firefox, MangoHud, foot, cava and starship; a program left out is not touched at all (kitty: theinclude yami.confline goes, the rest of yourkitty.confstays). The key isthemeApps;appThemesof 2.6 is carried over. - yami keeps out of the drivers and the boot: the installer no longer sets NVIDIA variables for the whole session (
GBM_BACKEND,__GLX_VENDOR_LIBRARY_NAME,LIBVA_DRIVER_NAME,NVD_BACKEND,__GL_*), never writes to/etc/modprobe.dor the initramfs config, no longer installs obs-gstreamer, puts no overrides on plymouth and gives yami-niri no capability behind your back (yami-niri.sh statussays how to grant realtime). Thenvidiacomponent is one file now: niri's own profile against its VRAM growth. The next update rewritesyami-local.kdlwithout the variables; the initramfs files of 2.6 stay put,yami doctornames them with the command to remove them,--uninstalltakes them out. - Without yami-files the shell opens folders, the trash, mounted drives and
Mod+Ein your own file manager, «save as» of a screenshot saves into the screenshots folder, and the wallpaper picker hides its file buttons. - The windows module of the bar (
tasks, #28) works in any group: on the left and on the right it used to vanish, in the middle it stretched and pushed the modules after it against the right group. Now it is as wide as its windows and is centred with the rest of the middle, or sits right after the left group withbarCenterAlign=after-left(where it was before); when the bar runs out of room it is the one module that narrows. - Templates and recolouring you can see and trust (#27): settings → color → apps lists what came out of each of your templates (written, changed by hand with an «overwrite» button that keeps your edit as
*.bak-yami, an unknown{{colour}}, noyami-outputline, a target outside the allowed folders), andyami templatesprints the same. A template with a typo in a colour is no longer written half-filled, an edit in~/.config/yami/templatesrenders at once instead of at the next palette change, hand-edit detection compares bytes and survives a moved home (templates.jsonkeys are~/…now). Your own fastfetchconfig.jsoncis never replaced (yami's look goes toyami.jsonc), starship keeps the palette you chose, foot's include moved to the end offoot.iniwith a~/path so your old colour lines no longer hide the palette, and unticking foot takes it out again.yami msg pinganswerspong. - The palette from the wallpaper is where you look for it (#26): settings → color has «palette from the wallpaper» right under the palettes, and
yami palette wallpaperturns it on from a terminal (yami palettemarks it). The accent comes from your picture again with every new one, and the whole palette follows it: background, panels, borders, the 16 terminal colours, every recoloured program and your templates. - Clean pixel icons: the dock, the launcher and the bar no longer squeeze an icon into 16 px and dither it into four noisy tones. The icon is drawn large and averaged down to a grid of 16–30 cells (2 px cells in the dock), keeps 5–10 of its own colours with a dark outline and no dithering; «in palette tones» (
iconTint) gives the old one-colour look, only clean. Plain icons are taken at the size they are drawn (a 48 px dock icon used to be a 16 px one blown up). yami-files, yami-view and yami-play have icons of their own, drawn in the palette. - Your own icons and cursors: settings → look shows every installed icon set as a card with six apps drawn from it, and every cursor set with its arrow; a click switches the shell, yami's apps, GTK and Qt (and the cursor in niri and X11 apps). «Install your own set…» takes an archive or a folder (
yami icons add/yami cursor addin a terminal) into~/.local/share/icons. yami no longer installs Papirus or picks an icon set for you: «auto» is the one your system already uses.
По-русски
- Переключение плееров (#24): бар и окно музыки идут за плеером, который заиграл последним, так что вкладка YouTube больше не вытесняет Spotify; если плееров несколько, имя в окне музыки — кнопка, переключающая на следующий (правый клик — назад), а
yami msg media playerделает то же с клавиши. Клавиши play/pause, next и previous идут тому плееру, что показан в баре. - Сочетания в любой раскладке: в русской и других нелатинских раскладках клавиши со знаками (
Mod+/,Mod+.,Mod+[,Mod+-…) не срабатывали или срабатывали не те, потому что niri смотрел на символ текущей раскладки. yami-niri 26.04-yami.6 сверяет их по клавише твоей латинской раскладки, как уже было с буквами; буквы меню питания тоже работают в любой раскладке. Действует со следующего входа после пересборки форка. - Установщик спрашивает, что ставить: на странице компонентов yami-files, yami-view, yami-play, экран входа, диски и телефоны, инструменты, игры и профиль NVIDIA — каждый сам по себе,
s(или--shell-only) ставит только niri и шелл,--no-ID/--IDзадают один из командной строки. Собираются только выбранные программы, ставятся только их пакеты. Обновление повторяет выбор и убирает снятое (yami-files, yami-view, yami-play вместе с ассоциациями файлов). - Перекрашивается только то, что хочешь: страница установщика (
--restyle) и настройки → цвет → программы перечисляют GTK, Qt и KDE, курсор, kitty, fastfetch, btop, Firefox, MangoHud, foot, cava и starship; невыбранную программу yami не трогает вовсе (у kitty уходит строкаinclude yami.conf, остальной твойkitty.confостаётся). Ключ —themeApps;appThemesиз 2.6 переносится. - yami не лезет в драйверы и загрузку: установщик больше не задаёт переменные NVIDIA для всего сеанса (
GBM_BACKEND,__GLX_VENDOR_LIBRARY_NAME,LIBVA_DRIVER_NAME,NVD_BACKEND,__GL_*), не пишет в/etc/modprobe.dи конфиг initramfs, не ставит obs-gstreamer, не вешает переопределения на plymouth и не выдаёт yami-niri capability за твоей спиной (yami-niri.sh statusподскажет, как дать realtime). Компонентnvidiaтеперь один файл — собственный профиль niri против роста VRAM. Следующее обновление перепишетyami-local.kdlбез переменных; файлы initramfs от 2.6 остаются на месте,yami doctorназывает их и команду, чтобы убрать,--uninstallубирает их. - Без yami-files шелл открывает папки, корзину, подключённые диски и
Mod+Eтвоим файловым менеджером, «сохранить как» у скриншота кладёт его в папку скриншотов, а выбор обоев прячет кнопки выбора файла. - Модуль окон в баре (
tasks, #28) работает в любой группе: слева и справа он пропадал, а в середине растягивался и прижимал модули после себя к правой группе. Теперь он шириной в свои окна и стоит по центру вместе с остальной серединой или сразу за левой группой приbarCenterAlign=after-left(где был раньше); когда бару не хватает места, сужается только он. - Шаблоны и перекраска, которые видно и которым можно верить (#27): настройки → цвет → программы показывают, что вышло у каждого твоего шаблона (записан; изменён руками — с кнопкой «перезаписать», которая оставляет твою правку как
*.bak-yami; неизвестный{{цвет}}; нет строкиyami-output; цель вне разрешённых папок),yami templatesпечатает то же. Шаблон с опечаткой в цвете больше не пишется наполовину заполненным, правка в~/.config/yami/templatesприменяется сразу, а не при следующей смене палитры, ручная правка определяется по байтам и переживает переезд дома (ключиtemplates.jsonтеперь~/…). Твойconfig.jsoncу fastfetch больше не заменяется (вид yami ложится вyami.jsonc), starship оставляет выбранную тобой палитру, include у foot переехал в конецfoot.iniс путём через~/, так что старые строки цветов больше не прячут палитру, а снятая галочка foot убирает его.yami msg pingотвечаетpong. - Палитра из обоев там, где её ищут (#26): в настройках → цвет «палитра из обоев» стоит сразу под палитрами, а
yami palette wallpaperвключает её из терминала (yami paletteеё отмечает). Акцент берётся из твоей картинки заново с каждой новой, и за ним идёт вся палитра: фон, панели, рамки, 16 цветов терминала, все перекрашиваемые программы и твои шаблоны. - Чистые пиксельные значки: док, лаунчер и бар больше не сжимают значок до 16 px и не рассыпают его дизерингом на четыре шумных тона. Значок рисуется крупно и усредняется до сетки 16–30 клеток (в доке клетка 2 px), сохраняет 5–10 своих цветов с тёмной обводкой и без дизеринга; «в тонах палитры» (
iconTint) даёт прежний одноцветный вид, только чистый. Обычные значки беру...
yami 2.6.0
- Our own login screen instead of SDDM: yami-greet draws the lock screen's face (wallpaper under the veil, the big clock, the password field) inside niri, and greetd, a small daemon in Rust, checks the password and starts the session. No Qt, no QML, no theme files: it follows the shell by itself (palette, wallpaper, language, monitors and keyboard layouts, published to
/var/lib/yami-greet/lookon every change;yami login syncdoes it at once), remembers who logged in and the session, shows caps lock and the layout, asks second factors and password changes from PAM, offers sleep, reboot and power off, wipes a half-typed password after a minute and turns the screens off after two. If niri or yami-greet ever cannot start, greetd's text login takes that one boot. The installer switches an SDDM with the old yami theme over; by hand:tools/greet-install.sh. - The login screen your way and sturdier: settings → system → login screen (
greet*keys) picks its wallpaper (as on the desktop, the palette's pixel one, or the theme colour), the veil, the clock, the machine name, a user list or a name to type, the power buttons, when the screens go off and numlock; «preview» shows it over the desktop, and the tab,yami login statusandyami doctortell how its last start went (log in/var/lib/yami-greet/log). A quick login no longer counts as a failed start (two of those sent one boot to the text login), a start that shows no picture (a GPU driver still loading) is tried again, the hand-over to the session ends on a black frame instead of hanging on the last frame of the fade, and the console no longer flashes between the two. Works with OpenRC (Alpine, Gentoo) and runit (Void) as well as systemd: the login manager switches at the next boot, never in the running session. - An update brings the new login screen along: from a terminal it asks right away, from the shell settings → updates gets one «install» button for it (greetd and yami-greet, SDDM is turned off and kept:
./install.sh --uninstallbrings it back);yami doctorandyami update needname it too. - SDDM, which the login screen used before 2.6 (and the installer often installed), is turned off, not removed: it may belong to KDE. Once the new login screen has let you in,
yami doctorsays SDDM is unused and prints the one command that removes it with this distro's package manager. - The installer is lighter and tidier:
install.shis only the entry (help, flags, the order of the steps), every job has its own module ininstaller/. The summary comes first and Enter installs what it shows (cwalks through the choices);sudo ./install.shis refused with a hint (it would install into root's home; the installer asks for the password itself);slurpandxzare no longer installed (nothing used them),libcaponly with yami-niri;--helpkeeps the everyday flags apart from the rare ones. - Hide a full battery (#21): settings → bar → look → «hide a full battery» (
batHideFull) takes thebatmodule off the bar while the laptop is on power and not charging (full, or held at a charge limit). - Security: the login screen's installer never writes as root through a link the greeter account could put in its own folder, and reuses the yami-greet the update has just built instead of building it again.
- Nix (#1): a flake with the package (the login screen included), a NixOS module (
programs.yami: niri, the services, portals, fonts and tools, and greetd with yami-greet) and a Home Manager module (niri's config, settings, kitty, the default apps); CI builds it and evaluates the NixOS module on every push (docs/PACKAGING.md). Started from TheCodedKid's work. - Packagers: the Cargo feature
package-managedhands updates to the package manager: no scheduled checks, the updates tab shows a note,yami updaterefuses and exits with 1; the shell and the login screen find yami-greet, its fonts and its session script inside the package's prefix (by TheCodedKid, #1). - Brazilian Portuguese (
pt-BR, by dznass-cmd, #20): the shell, yami-files, yami-view, yami-play, the login screen and the installer. Pick it in settings → system or let the system language choose it (pt_BR.UTF-8andptwork too); the language choice is shared by every app through yami-px, and the checks render every app in Portuguese. - Phones, cameras and drives mount by themselves when they are plugged in (settings → services → drives and phones,
automount,automountOpen), like in GNOME and KDE: USB sticks, external disks, memory cards, CDs and DVDs, disk images, Android phones in file transfer mode (MTP), cameras and phones in PTP mode, iPhones and iPads. The shell listens to udev without polling (a netlink socket that the kernel filters down toblockandusbevents) and mounts what the volume itself asks to be mounted, once per plug (a phone that is still locked is tried again for half a minute): a card says what was mounted and opens it. Encrypted drives ask for their password in yami-files instead. Nothing is mounted while the screen is locked: what was plugged in meanwhile mounts after the unlock. - Fix: a phone with file transfer on did not show in yami-files until it was mounted by hand: phone and camera volumes have a USB device id that was taken for a disk's, so they were skipped. They show at once now, and a click mounts and opens them.
- yami-files: encrypted drives (LUKS, BitLocker) show as «encrypted», a click asks for the password (handed to
gioover a pipe, never stored); «eject» unmounts, locks and powers the drive off. - yami-files sidebar your way: drag places into your order, hide the ones you do not use (right click → hide, «show hidden» brings them back), fold the places, devices and network sections with a click on their title, name your bookmarks; a right click on any place or drive opens it in a new tab or in the other pane (it used to only open it in place), the middle button opens a tab. A long sidebar scrolls.
- yami-files never waits for a slow drive while drawing: the free space of devices and of the open folder is measured with the listing in the background (a hung network share used to freeze the window), and the trash is looked for on local disks only.
- Settings rebuilt: tabs in four groups (appearance, desktop, actions, system), every tab scrolls with the wheel, PageUp/PageDown, Home and End (a slider or number under the pointer is left alone while the page scrolls), the tab list scrolls too. Notifications have their own tab (cards, history, positions, the server); services gained «drives and phones». Each tab is one entry in a table with its draw function, search words and icon, so a new tab or row needs no other change.
- Blur under panels appears with the reveal (#18): it used to wait for the animation to end and then pop in; now it comes in during the first third of the reveal and goes the same way on close.
- Pixel tray (#19): settings → bar → look → «pixel tray» (
trayPixel) redraws the tray icons on the bar and in the arrow's list in palette cells, like the dock and the launcher. - Apps in the palette colours (#17): settings → color → apps: foot, cava (reloads at once) and starship follow the palette (
appThemes), and your own templates in~/.config/yami/templatesrecolour any other app:{{accent}},{{bg}},{{color4}}… and a «yami-output:» line; written only under~/.config,~/.local/shareand~/.cache, never over a file you changed. - The shell's clickable areas end where their panel's visible part ends: a row scrolled under a list's header no longer catches the header's clicks.
- The shell idles in about half the memory with a picture wallpaper (11–13 MB instead of 19–21 at 1080p, more saved at 4K): once niri shows the wallpaper the shell keeps only a small copy for the settings preview and the widgets, and rebuilds the full picture when it needs it again (the lock screen and the stream curtain show at once and sharpen a moment later).
- The wallpaper no longer redraws whenever the pointer crosses the empty desktop (it took no clicks anyway), and «kanji on the wallpaper» applies at once.
По-русски
- Свой экран входа вместо SDDM: yami-greet рисует лицо экрана блокировки (обои под вуалью, большие часы, поле пароля) внутри niri, а greetd, маленький демон на Rust, проверяет пароль и запускает сеанс. Без Qt, QML и файлов темы: он сам идёт за шеллом (палитра, обои, язык, мониторы и раскладки выкладываются в
/var/lib/yami-greet/lookпри каждой смене;yami login sync— сразу), помнит, кто входил и в какой сеанс, показывает caps lock и раскладку, задаёт вопросы PAM (второй фактор, смена пароля), умеет сон, перезагрузку и выключение, через минуту стирает недописанный пароль, через две гасит экраны. Если niri или yami-greet однажды не запустятся, эту загрузку возьмёт текстовый вход greetd. Установщик переводит на него SDDM с прежней темой yami; вручную:tools/greet-install.sh. - Экран входа под себя и надёжнее: настройки → система → экран входа (ключи
greet*) выбирают его обои (как на столе, пиксельные из палитры или цвет темы), вуаль, часы, имя машины, список пользователей или ввод имени, кнопки питания, когда гаснут экраны, и numlock; «посмотреть» показывает его поверх стола, а вкладка,yami login statusиyami doctorговорят, как прошёл его последний запуск (журнал в/var/lib/yami-greet/log). Быстрый вход больше не считается неудачным запуском (два таких отправляли одну загрузку в текстовый вход), запуск без картинки (драйвер видеокарты ещё грузится) повторяется, передача сеансу заканчивается чёрным кадром, а не зависшим последним кадром растворения, и консоль между ними больше не мигает. Работает с OpenRC (Alpine, Gentoo) и runit (Void), не только с systemd: менеджер входа меняется со следующей загрузки, никогда в идущем сеансе. - Обновление приносит новый экран входа: из терминала спрашивает сразу, из шелла во вкладке настройки → обновления появляется одн...
yami 2.5.1
- Fix: a fresh install got a shorter bar: the settings file the installer writes was taken for the pre-2.0 format, so the right side lost the battery, the power profile and the separators, and a
barRightwritten by hand into such a file was dropped. Now only a file with the old keys is converted - Fix: skwd-wall videos and Wallpaper Engine scenes (#3): yami now sees that skwd-wall draws them (its
skwd-wall-vklayer) and no longer draws its own picture on that screen, which after a shell restart could cover the live wallpaper - Docs in Russian: CHANGELOG, docs/CONFIG, docs/SECURITY and fork/README have Russian twins (
*.ru.md), linked at the top of each file and from README.ru.md (which also gets back its missing «building the shell by hand» part);tools/check.shkeeps every pair in step (the same structure, code, links and anchors), so neither falls behind. With a Russian interface, settings → updates shows the release notes in Russian - Media and sound are two popups (#10): the
mediamodule opens the player alone (cover, buttons, the equalizer, time; drag the position bar to seek, also in the media widget),volthe sound settings alone, with a choice of the microphone as well as the output when there are several; without amediamodule or a media widget (as on the default bar) the player stays at the bottom of the sound popup. Right click on the track pauses or plays, middle click skips to the next one;yami open mediaopens it from a key or the terminal - Wallpaper picker (#11): settings → wallpaper → «pick an image…» opens a grid of thumbnails of your wallpaper folder (
~/Pictures/Wallpapersby default,wallDir, «folder…» to change it), the palette's pixel wallpaper first; a click sets it and goes back to the settings, arrows and Enter work too. Thumbnails are made in the background only for the rows on screen and share yami-files' cache. «another file…» keeps the old file dialog;yami open walls(or a key you bind in settings → keys) opens the picker on its own - Tray behind an arrow (#11): settings → bar → look → tray:
arrow(trayMode) shows one arrow on the bar instead of every icon; it opens the tray apps as a list with their names, where clicks work as on the bar and an app's menu opens under its row. A dot on the arrow when an app asks for attention - Compact temperature (#11): settings → bar → look → temperature:
compact(tempStyle) draws thetempmodule as a small thermometer column and the number, about a third of its usual width - Less work while idle: a panel whose new frame is the same as the last one is not sent to niri again (the bar redraws every second, its picture changes about once a minute), the sound state asks PipeWire only about what changed, the equalizer thread sleeps while nobody sees it and computes the spectrum once per frame, the settings file is compared only when the settings changed, font files are mapped once per process, and theme.py runs at a lower priority.
- Desk mode behaves like a desktop: a window gets focus on click and comes to the front with it (focus follows the mouse only in tiling now), so a title bar of a window behind no longer shows over the window in front, and every floating window has a resize corner at the bottom right (with niri's
prefer-no-csdmost apps had no edge to drag). - Lite mode for weak and virtual machines (from a review: «extremely slow in a VM», a 15-year-old laptop locking up at login). Settings → look → «lite mode» (
lite) turns off blur, the shell's and niri's animations and the translucency of inactive windows in one switch and leaves your settings as they were. A fresh install turns it on by itself in a VM, without GPU acceleration, on pre-2011 Intel graphics or with ≤ 4 GB of memory and ≤ 4 threads;yami doctortells why it suggests it. - One «pixel look» slider (asked in the same review: «a slider to set my pixelation lower»). Settings → look: smooth, softer, yami only, all pixel: the fonts of the shell, the apps and GTK/Qt, pixel icons and the cursor move together; the separate keys stay for fine tuning.
- The installer asks for the administrator password once: every root step goes through one root shell opened at the start (sudo or doas), with no credential cache left for build scripts. Packages missing from the distro's repositories are dropped from the batch instead of installing the rest one by one (on Alpine with doas that meant a password prompt per package). On a machine with less than 6 GB of memory or 4 threads the niri fork is off by default and cargo builds with as many jobs as the memory allows.
- yami-files looks for new drives, phones and network mounts only when the system's list of them changes (it used to start
lsblkandgioevery 4 seconds while a window was open), and an idle window ticks once a second; the D-Bus helper threads of the shell and yami-files no longer wake twice a second forever (zbus'sblockingpool, held at 1.6). - Caches tidy themselves: the thumbnail cache shared by yami-files and the wallpaper picker drops thumbnails not opened for 120 days and stays under 512 MB, and yami-play forgets resume positions of files not played for a year.
- Notification and OSD position (#8): settings → system → notifications: the cards go to any corner or the middle of the top or bottom edge (
notifPos), the volume and brightness OSD to the bottom, the top or the centre (osdPos); cards keep clear of the bar and the dock. - yami-view and yami-play tick once a second while nothing on screen is about to change (four times a second only while their panels are about to hide, faster only while something moves).
- Fix:
glassset below 0.15 by hand (the slider stops there) made panels all but invisible, so their shadow and blur looked like broken frames (#8); lower values are raised to 0.15. - The settings window moves by its header (#8): drag it anywhere on the screen; it opens in the middle again next time.
- Fix: Mod+F did nothing in desk mode (#8): it was
maximize-column, which leaves floating windows alone; on the desk it now maximizes the window to the screen edges, and in tiling it still maximizes the column. - On a weak machine (less than 6 GB of memory or 4 threads) the installer and
yami updatebuild the apps with thin LTO: the compiler's peak memory is about half (1.3 GB instead of 2.4 GB with two jobs), so a 4 GB laptop no longer swaps through the build. - Fix: after an update OBS and other recorders could find no screen to capture until the next login: the update stopped the screen-sharing and file-dialog backend (
yami-files --portal) and nothing started it again in time. Nowyami-files --portal-reloadhands over to the new binary in the same process (the portal keeps talking to it), waits while a recording or a file dialog is open, and starts the backend when none runs; the installer,yami updateandtools/deploy.shuse it. - The installer puts each program into place in one step (a running copy never sees a half-written file) and stops when the apps fail to build, on a first install and on
yami updatealike: it used to go on writing configs for programs that were not there, and to build the compositor fork anyway. - Fix:
fork/yami-niri.sh offleft the fork's keys (allow-tearing,show-only-in,hide-from) inyami-fx.kdl, so at the next login the packaged niri refused the config and started with its own, without the shell.offnow strips them the waysession.shdoes, and the shell writes them only while the next login runs the fork too. - Less memory: each yami program gives the kernel back the pages of its own code it has stopped running (start-up, the settings window half a minute after it closes, a finished recording or file dialog in the portal backend). The shell idles at about 12 MB instead of 14.5, the portal backend at under 1 MB instead of 5.5, a file manager window at 19 MB instead of 23.
- yami-view keeps one copy of a big picture while it fits the window (the full-size copy for zooming in is made when you zoom), drops a picture that finished decoding after you moved on, and holds only the current picture and its neighbours: a 4K picture takes 107 MB instead of 140.
- yami-files keeps at most 32 MB of thumbnails in memory: a folder with thousands of pictures no longer grows the window by hundreds of megabytes; the thumbnails on screen stay, the oldest of the rest are dropped and come back from the disk cache when you scroll to them.
- yami-play at a fractional scale no longer clears and redraws its controls layer for every video frame while the controls are hidden.
- The shell measures its own memory (settings → about) only while the settings window is open, as PSS like
yami status, and the address in the network module comes from the kernel instead of a run ofipon the drawing thread. - yami-files copies through the kernel (
copy_file_range): on btrfs and xfs a copy inside one disk is a reflink, so a 4 GB video copies at once and takes no space until one of the two is changed; between disks the data no longer passes through the program. Phones, network shares and other FUSE mounts still copy the old way. - Screenshots without the confirm step (#13): settings → screenshots → «take the shot»:
instant(shotConfirm) takes the shot as soon as the mouse is released after selecting an area or clicking a window, and a full-screen shot (Ctrl+Print) at once, without the overlay; copy and save follow the same settings. Fix: a second Space or Enter (or a held key repeating) while the shot was being taken made a second copy, file and notification. - The music popup has four views (#13), switched by the button in its header or in settings → bar → look (
mediaView): the cover with the equalizer, the cover with lyrics, lyrics alone and a short one (title and buttons). Lyrics come from the player, from a.lrcor.txtnext to the track, or from lrclib.net (settings → services,lyricsNet; asked only while the popup shows lyrics...
yami 2.5.0
- Floating, partial-width bar (#5, «Bar: floating (partial-width) bar option + geometric centering for barCenter modules»). Settings → bar → look:
barFloatputs the bar on its own panel with a gap from the screen edges, a border all round and a hard pixel shadow;barWidthPc(30–100 %) makes it narrower and centred, docked to the top edge or floating;barMarginsets the gap. A live preview shows the shape. Popups, tray menus, a top dock, widgets, the stream badge and desk-mode title bars follow the bar, and windows keep clear of it - Centred middle modules (#5).
barCenterAlign:center(the new default) puts thebarCentermodules at the geometric middle of the bar and shifts them only as far as a long left group (a track title inmedia) requires;after-leftkeeps the old placement. A middle that holds the window list still stretches - skwd-wall support (#3, «skwd wall support»). Settings → wallpaper, shown when skwd-wall is installed: its picks become the wallpaper. Where skwd-paper draws (videos, Wallpaper Engine scenes, transitions) the shell steps aside on that monitor; in skwd-wall's pick-only mode the shell draws the picked image itself, in its cells and tones, a video or scene by its preview frame. With
wallSkwdColorsits palette, custom ones from its theme designer included, sets the accent and light or dark mode for the whole rice. The lock and login screens show the same picture. Everything is read from the files skwd-wall writes; its configuration is never touched - Widgets readable on any wallpaper (#7, «Add auto contrast checker against wallpaper and switch color between white and black»). Widgets without a frame measure the wallpaper under them: on a light spot they use the light variant of the theme (dark text, a deeper accent), on a dark one the dark variant, and every letter gets a hard one-font-pixel shadow in the opposite tone. Measured again after a new wallpaper, a move or a settings change;
widgetContrast, settings → widgets - Bar modules from scripts, the scriptable part of #6 («Feature parity gaps vs Noctalia v5: weather module and scriptable custom widgets»). An executable in
~/.config/yami/modules/prints text or JSON (text icon color click interval) and becomes a bar module; docs/CONFIG.md has a weather script as the example. A built-in weather module and script-fed desktop widgets are still open - Night light, requested in #8 («OSD/notification positioning, night-light, AUR package, and templates»): wlsunset from sunset to sunrise at your coordinates, or by the clock, with a
nightbar module andyami msg night - Themes as one file, the templates part of #8:
yami theme export | import FILEshares a look (palette, effects, fonts, bar, widgets, wallpaper; never commands or scripts),yami export | import FILEmoves every setting to a new system - Bar popups open below the bar, reported in #8: the calendar with the notification history, sound, network and the other popups covered the lower half of the bar since 2.0; they now open just below it, wherever the bar is
- The wallpaper picker comes to the front, reported in #8: «choose an image…» opened the file dialog under the settings panel, where it could not be used. Settings step aside while you pick and come back on the wallpaper tab
- Window corners and border, settings → windows:
winRadiusrounds windows through niri (the border follows; games stay square, fullscreen and maximized windows are square anyway, and in desk mode only the bottom corners round so the shell's title bar joins without a gap);winBordersets the border width or turns it off - Text from screenshots, much better. The selection is prepared the way tesseract reads best (dark text on light, enlarged when the text is small, the shell's pixel font kept at its own size, more contrast); several layouts are tried at once and the most confident wins; English and Russian are read separately and chosen per line, so
errorno longer comes out as Cyrillicеггогand Russian words do not turn into Latin look-alikes; code and terminal text keep their indentation. On screen-like samples (dark and light themes, 11–16 px, noise, gradients, terminals, mixed languages) the character error rate fell from 4.9 % to 2.1 %.yami ocr FILEdoes the same for any image - Screenshot tools: a colour picker (hex to the clipboard), text recognition (tesseract) and QR codes (zbarimg) from the selection
- Light theme: settings → color → theme (or
install.sh --theme light). The same palette on light paper with a deeper accent that stays readable; GTK (adw-gtk3 andprefer-light), Qt, KDE, kitty, btop, Firefox menus, the cursor, the lock and login screens and the light/dark icon variant (Papirus, Gruvbox-Plus) follow it - Effects, settings → look: five reveal patterns (dither, scanlines, noise, diagonal, blocks), the cell size, the closing animation on or off, CRT scanlines over shell panels. The default dither is 1.7× faster than before (0.6 ms for a full 1080p frame)
- Launcher: a calculator (
2+2*3,=sqrt(2), Enter copies), open windows and settings places in the results (vrr→ screens),>runs a command in a terminal,/finds files in your home folder,?lists settings; Ctrl+A selects the search, Ctrl+C copies it. Typed text is no longer passed through the interface translation - Games: ntsync for Proton (
PROTON_USE_NTSYNC=1when/dev/ntsyncexists) and the focused game registered with GameMode;yami doctor gamesshows what the system has and one install command for the rest; MangoHud in the palette and the pixel font (only when its config is not your own). The games tab is grouped by what each switch touches - Reply from a notification for messengers that offer it (
inline-reply) - Session restore (off by default): the programs that were open come back on their workspaces at the next login
yami reportpacks versions, doctor, this boot's journal and configs for an issue, with passwords, tokens, the home path, user and host scrubbed;yami doctormentions btrfs/zfs snapshots (snapper, timeshift) before big updates- Installer: two new components with flags,
tools(night light, text and QR from screenshots: wlsunset, tesseract, zbar;--no-tools) andgames(GameMode, MangoHud; on when Steam is installed,--games/--no-games). An update keeps the choice and turns a newly added component on at its default; since updates run without sudo, the packages a new version wants are listed in settings → updates with an install button, inyami doctorand inyami update need [--run] - Settings: tabs sorted by meaning (screens next to windows), desk mode and title bars moved to windows, the cursor to look, the terminal font and fastfetch to fonts; the bar tab has two pages, modules and look; the night light says what it needs and hides the hours when it follows the sun; a long value no longer runs over its label
- Fix: Ctrl+A, Ctrl+C, Ctrl+V and Ctrl+U in shell fields and Ctrl+P in the clipboard work in any keyboard layout
- Fix: Screenshots on a fractional scale (1.25, 1.5) save exactly the selected area, marks and mosaic included, and the colour picker takes the pixel under the cursor
- Fix: Turning on «palette from the wallpaper» applies it at once instead of after the next wallpaper change
- Fix: A dock at the top that never hides no longer leaves a double gap under the bar, and it moves when its side changes
- Fix: Bar scripts stop together with everything they started and do not outlive a crashed shell; a long-running script is no longer cut off after 1 MB of output
- Fix: Restarting the shell (
yami restart, every update) no longer leaves another copy of the music, sound and visualizer helpers (playerctl, pactl, parec) running or finished-but-unreaped each time - Fix: yami builds on musl (Alpine): the glibc-only memory calls are made only with glibc
- Fix: The night light starts with a temperature of 6500 K and with equal on and off hours
- Fix: GameMode registration keeps the order of focus changes
- Fix:
yami msgreports a command the shell does not have (yami msg calused to answer «ok» and do nothing) - Fix:
yami importrefuses an unknown flag instead of importing for real (--dryrun), writes the settings in the shell's own form (numbers no longer turn into 0.7799999713897705) and keeps its backups in the order they were taken - Fix:
yami doctorshows full program names (xdg-desktop-portal,power-profiles-daemon) - Fix: niri reloads its config only when yami's part of it really changed
- Fix: An update writes the list of missing packages again;
install.sh --uninstallalso removes the light cursor and the MangoHud config it wrote - Fix: Firefox menus got their shadow back (the CSS colour was written in the wrong order and was invisible)
- Security:
yami importwrites only the filesyami exportmakes (a crafted file could drop anything into~/.config, autostart included); reassigned keys and the file manager's terminal come in only with--yes, and imported settings pass the same checks as the settings file - Security: Key names, font names, app-ids and bar script names from the settings file are checked before they reach niri, kitty, GTK or Qt configs (a font name with a line break could add a command to kitty.conf through
yami theme import) - Security:
yami reportand screen text recognition use a private 0700 folder instead of a predictable one in /tmp, and the report hides coordinates, servers and key commands - Updates: A failed build stops the update before anything else changes (the old version, its configs and the install record stay, so the update is offered again) and keeps the previous rollback point
- Updates: A new niri config that does not validate is replaced by the previous one, so the next login still has yami's keys
- Updates: The backup made before
yami importholds every file the import may replace, is never overwritten by a second import in the same second, keeps the last fi...
yami 2.4.3
- Disk: after a successful yami-niri build the installer removes its sources and build cache (~4 GB; the installed binary does not need them, the next build fetches them again).
--keep-buildorYAMI_KEEP_BUILD=1keeps them; a tree with your own edits or commits is never touched yami clean [--dry-run]removes the build cache by hand (yami-niri sources, the shell's target) andyami doctorshows how big it isinstall.sh --no-monocraftskips the 31 MB Monocraft font (the terminal uses Terminess; updates remember it,--monocraftbrings it back)
Install
bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.4.3/install.sh)Already on yami: settings → updates → update, or yami update apply.
Built from source on your machine (Arch, Fedora, Debian/Ubuntu, openSUSE, Void, Alpine, Gentoo, NixOS). The tag is signed; check it with
git -c gpg.ssh.allowedSignersFile=keys/allowed_signers verify-tag v2.4.3.
Описание и установка по-русски: README.ru.md.
yami 2.4.2
- Battery: a pixel icon on the 2 px grid like the other bar icons (notched case, six charge columns), «on AC power» and time left in the power popup, a notification at 10% and 5%
- Wi-Fi: a saved network without its password (from the live session's KWallet, a changed password) now opens the password field instead of a dead «password required»; a wrong password asks again; passwords go to NetworkManager over D-Bus, not on the nmcli command line; WPA3-only and WEP networks; 802.1X networks point to «all connections»; works on a Russian-locale system
- Bluetooth: new devices are paired and trusted before connecting, errors show in the popup, «device manager» opens blueman (or bluetoothctl) instead of the process monitor; «all connections» falls back to nmtui when nm-connection-editor is missing
- The «installs» badge now counts installs: the installer downloads one empty release file once per machine (nothing is sent;
--no-countorYAMI_NO_COUNT=1to skip). The old badge was GitHub's clone traffic, bots included
Install
bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.4.2/install.sh)Already on yami: settings → updates → update, or yami update apply.
Built from source on your machine (Arch, Fedora, Debian/Ubuntu, openSUSE, Void, Alpine, Gentoo, NixOS). The tag is signed; check it with
git -c gpg.ssh.allowedSignersFile=keys/allowed_signers verify-tag v2.4.2.
Описание и установка по-русски: README.ru.md.
yami 2.4.1
- Hybrid laptops: the GPU sensor no longer wakes a sleeping NVIDIA card (it shows «sleep» instead of running nvidia-smi every 3 s), and the installer leaves the NVIDIA driver out of the initramfs there
Install
bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.4.1/install.sh)Already on yami: settings → updates → update, or yami update apply.
Built from source on your machine (Arch, Fedora, Debian/Ubuntu, openSUSE, Void, Alpine, Gentoo, NixOS). The tag is signed; check it with
git -c gpg.ssh.allowedSignersFile=keys/allowed_signers verify-tag v2.4.1.
Описание и установка по-русски: README.ru.md.
yami 2.4.0
- Window gaps in settings → windows: between windows and from each screen edge (the top one from the bar), with arrows or the wheel; the shell writes niri's
gapsandstruts(winGap,winLeft,winRight,winTop,winBottom) - Bar spacing in settings → bar: the left and right edge, the gap between modules, the separator width, the space around the window list and between window buttons, the window button width. Arrows or the wheel change them (
barPadL,barPadR,barGap,barSepW,barMid,barTaskGap,taskWidth) - A battery module for laptops (
bat: charge, charging, low warning; hidden without a battery), on by default for new installs - AMD graphics: temperature and load for the
gpugraph come from the kernel, not only from nvidia-smi - The lock screen also covers a monitor plugged in while locked; users from LDAP, SSSD or systemd-homed can unlock (the system login service checks them)
- Updates: a release signed by a key outside
keys/allowed_signersis refused on every git version - The OFL licence texts of DotGothic16 and Terminess are in
fonts/;tools/release.shsets the version of every crate (yami-play stayed at 2.2.1)
Install
bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.4.0/install.sh)Already on yami: settings → updates → update, or yami update apply.
Built from source on your machine (Arch, Fedora, Debian/Ubuntu, openSUSE, Void, Alpine, Gentoo, NixOS). The tag is signed; check it with
git -c gpg.ssh.allowedSignersFile=keys/allowed_signers verify-tag v2.4.0.
Описание и установка по-русски: README.ru.md.
yami 2.3.0
- yami-play: a video and music player in the shell's pixels. Every format ffmpeg knows (libmpv, loaded at run time), hardware decoding, subtitles and audio tracks, a cell timeline, the folder as a playlist, resume where you stopped, speed, frame step, saving a frame and a pixel scaling mode; the screen stays on while a video plays. Video and music open in it after the installer runs
- yami-files: phones and cameras show up under devices (Android over MTP, cameras over PTP, iPhone), with a hint when the gvfs backend is missing
- yami-files: a «network» section: mounted shares, «connect…» for smb, sftp, ftp, WebDAV and nfs with a password window, addresses remembered without passwords; kernel mounts (cifs, nfs, sshfs) are listed and can be unmounted
- The installer adds mpv (libmpv) and the gvfs backends for phones, cameras and Windows shares
- The installer no longer hangs: a closed terminal leaves the menus, arrow keys work over slow SSH and on the Linux console, sudo never waits for a password hidden behind the progress bar, git never asks for a login
- Pasting into a text field no longer freezes the window when the clipboard owner hangs; a hung shell no longer blocks
yamicommands and updates
Install
bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.3.0/install.sh)Already on yami: settings → updates → update, or yami update apply.
Built from source on your machine (Arch, Fedora, Debian/Ubuntu, openSUSE, Void, Alpine, Gentoo, NixOS). The tag is signed; check it with
git -c gpg.ssh.allowedSignersFile=keys/allowed_signers verify-tag v2.3.0.
Описание и установка по-русски: README.ru.md.
yami 2.2.1
- fastfetch is short by default: who, OS, window manager, shell, terminal and uptime, no hardware. The installer asks (
--fetch mini|full), settings → look switches it - Roll back without surprises: the button opens a choice of the previous build (instant) or any signed release, and only «install» starts it;
yami update listandyami update to X.Y.Zdo the same in a terminal - Settings a rolled-back version does not know are kept aside and come back with the next update
- After any update or rollback the updater checks that the shell answers and starts it if not, even when the installed version's own installer did not
- After an update the shell comes back by itself: the restart no longer took the updater for a running shell and left the desktop without a bar
- Settings → updates shows a small console with the update log, a progress bar by installer step and the release notes before you install
Install
bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.2.1/install.sh)Already on yami: settings → updates → update, or yami update apply.
Built from source on your machine (Arch, Fedora, Debian/Ubuntu, openSUSE, Void, Alpine, Gentoo, NixOS). The tag is signed; check it with
git -c gpg.ssh.allowedSignersFile=keys/allowed_signers verify-tag v2.2.1.
Описание и установка по-русски: README.ru.md.