Skip to content

yami 2.5.0

Choose a tag to compare

@Trendorin Trendorin released this 05 Nov 17:32
· 232 commits to main since this release
  • Floating, partial-width bar (#5, «Bar: floating (partial-width) bar option + geometric centering for barCenter modules»). Settings → bar → look: barFloat puts 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; barMargin sets 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 the barCenter modules at the geometric middle of the bar and shifts them only as far as a long left group (a track title in media) requires; after-left keeps 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 wallSkwdColors its 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 night bar module and yami msg night
  • Themes as one file, the templates part of #8: yami theme export | import FILE shares a look (palette, effects, fonts, bar, widgets, wallpaper; never commands or scripts), yami export | import FILE moves 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: winRadius rounds 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); winBorder sets 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 error no 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 FILE does 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 and prefer-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=1 when /dev/ntsync exists) and the focused game registered with GameMode; yami doctor games shows 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 report packs versions, doctor, this boot's journal and configs for an issue, with passwords, tokens, the home path, user and host scrubbed; yami doctor mentions 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) and games (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, in yami doctor and in yami 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 msg reports a command the shell does not have (yami msg cal used to answer «ok» and do nothing)
  • Fix: yami import refuses 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 doctor shows 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 --uninstall also 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 import writes only the files yami export makes (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 report and 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 import holds every file the import may replace, is never overwritten by a second import in the same second, keeps the last five and goes back with yami import FILE --yes
  • Updates: Session restore runs once per login even if the shell restarts
  • Updates: An update of an install that has no record of its components (a home-only install of an older version) no longer starts a 5–25 minute yami-niri build unless yami-niri is already installed
  • Updates: yami clean, fork/yami-niri.sh clean and the installer remove a YAMI_NIRI_SRC folder only when it holds nothing but the yami-niri trees; install.sh --uninstall also removes the build cache (gigabytes) unless it holds your patch work
  • CI: every distro family the installer supports (Arch, Fedora, Debian, Ubuntu, openSUSE, Void, Alpine) checks the package names, builds the workspace and runs the installer's dry run; install.sh --print-packages prints the lists
  • Code: app.rs, the file manager's fm.rs, draw.rs and app.rs, settings.rs, snap.rs and update.rs split into smaller modules; the updates tab shows release notes as plain text

Thanks

Thanks to @Minish777 (#5, #6, #8), @nyx-minion (#3) and @jinxojin (#7) for the ideas and the detailed reports behind this release.

Install

bash <(curl -fsSL https://raw.githubusercontent.com/Trendorin/yami/v2.5.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.5.0.

Описание и установка по-русски: README.ru.md.