Skip to content

Releases: tarkh/w

v0.23.0

Choose a tag to compare

@tarkh tarkh released this 09 Oct 11:24
  • Audio pack. w-pack install audio sets up music production on W's
    PipeWire stack: Ardour 9, qpwgraph for routing, Audacity, and a plugin starter
    set (Surge XT, the LSP suite, Dragonfly Reverb). PipeWire takes over the JACK
    API — pipewire-jack replaces jack2, and stays if the pack is removed,
    because other apps link against it — and your account gets realtime audio
    priority from your next login. Ardour, Audacity and qpwgraph open in your W
    colours. The W assistant can work inside an open Ardour session — tracks,
    plugins, mixer, MIDI — once you turn on MCP HTTP Server (Experimental) in
    Ardour's Preferences → Control Surfaces; it is off by default because Ardour's
    server listens on every network interface without authentication. About
    660 MiB. The installer offers the pack as well.
  • W Help. SUPER+F1, Hub → Documentation and the new Open in Help button
    on documentation cards now open the W documentation as a site in its own
    window: pages by category, search, English and Russian, painted in your
    current theme. It is the copy on disk in /usr/share/doc/w/html, so it works
    offline. From a terminal: w-help [page[#section]].
  • Assistant, Calendar, Power menu and Volume control start from any app.
    Their launcher entries carried an escape that GLib rejects, so Nemo,
    gio launch and the desktop portals could not start them — only W's own
    launcher could. Fixed.
  • Arrow keys in W dialogs moved focus the wrong way in rows of buttons.
    Fixed.
  • Assistant: remote MCP servers. A drop-in in mcp.d can name its server
    with URL= (streamable HTTP) instead of COMMAND/ARGS; every assistant
    host receives it in its own native form.
  • Signed install images. From the next nightly build the ISO carries a
    Sigstore build-provenance attestation, made by the build itself. Check it with
    gh attestation verify w-*-x86_64.iso --repo tarkh/w; the edge release
    notes show the steps.
  • A broken link to the FAQ in Keeping W up to date (English and Russian) is
    fixed.

Install image: download the current build — rebuilt nightly, including from this release.

W install image — edge

Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 18:05

The W install image, rebuilt every night from the tip of main and again
after every release. This is the only image W publishes — there is no separate
per-version download.

File w-0.23.0-2026.10.15-x86_64.iso
Release 0.23.0
Built 2026.10.15 (UTC)
From commit 3de5b622
Size 1.6G
SHA-256 92100c0f082d3324cb3490d383fcb8a90d6fc9fdf29acea3a9eb435ab96da545

W is a rolling distribution, so the release number and the build date say two
different things: 0.23.0 is which version of W's own configuration this is,
and 2026.10.15 is the day its packages were pulled from Arch. Both are recorded
in /etc/os-release on the installed system as IMAGE_VERSION and
W_BUILD_DATE. An image of the same release built a month apart is a different
set of packages — that is normal, and it is why this download is rebuilt nightly
instead of being frozen per version.

sha256sum w-0.23.0-2026.10.15-x86_64.iso

The checksum only catches a broken download — it sits on the same page as the
file. The image's signature is its build provenance: a Sigstore attestation that
this file was built by this repository's edge-iso workflow from the commit
above, which is a release snapshot signed with the W release key:

gh attestation verify w-0.23.0-2026.10.15-x86_64.iso --repo tarkh/w
# in a clone of the repository — the key is the one every W machine trusts
git -c gpg.ssh.allowedSignersFile=rootfs/usr/share/w/update/w-release.allowed_signers \
  verify-commit 3de5b6226f75

v0.22.0

Choose a tag to compare

@tarkh tarkh released this 06 Oct 11:21
  • 3D pack. w-pack install 3d sets up Blender 5 with the Cycles GPU runtime
    for your card (AMD HIP, Intel Arc oneAPI; NVIDIA renders through its driver).
    The W assistant can build and edit scenes in a running Blender — inspect them,
    run code, take viewport screenshots, export — with Blender's safe mode on and
    its telemetry off. Blender follows your W theme live; a theme preset you pick
    in Blender yourself is left alone. Every Open/Save dialog in Blender opens at
    the same size as the rest of W. The pack is heavy: about 2.5 GiB with its
    dependencies. On an AMD machine whose processor has integrated graphics,
    Cycles lists the iGPU as a second HIP device named after the CPU — untick it
    in Preferences → System, or renders split onto the slower chip.
  • Engine upgrades for ComfyUI and InvokeAI. Both install their engine from
    upstream, so system updates never moved it. w-pack outdated now shows the
    installed and the newest stable version, and sudo w-pack upgrade moves it:
    the service is stopped (refused while it is busy), a rollback point is
    recorded, and if the new version fails to start and answer, the previous one
    is put back. To hold a specific version, set it with
    w-conf set comfyui VERSION <x.y.z> (or invokeai). Available engine
    upgrades show up in w-update status and in Hub → Packs with an Update
    button; they are never counted in the bar's update badge and
    w-update upgrade never runs them. The assistant can plan and apply the
    upgrade too.
  • Ollama models live in the shared AI model store. With the ai-extra
    pack, Ollama now keeps its models in ollama/ inside the machine-wide store
    (/var/lib/w/ai-models by default) and follows w-conf set ai-models DIR
    like ComfyUI and InvokeAI. Models already in /var/lib/ollama are moved
    there once, during this update (instantly on Btrfs; otherwise copied, verified
    and only then removed). If both places already hold models, the store wins and
    /var/lib/ollama is left for you to merge by hand.
  • The assistant answers everyday requests lighter. In the default goose
    host, tools of installed packs (Blender, GIMP, Inkscape) are no longer sent
    with every request; the assistant turns a pack's tools on when a task needs
    them, within the same turn. A plain question now carries 58 KB instead of up
    to 128 KB — faster and cheaper on paid models.
  • Screen Recording in the launcher, next to Screenshot: it opens the region
    selector and starts recording; launching it again stops the take.
  • Every Open/Save dialog opens at one size — floating and centred at
    1000×640, in every app. Some GTK dialogs used to open tiled, and GTK saved
    that full-height tile as your size for every app afterwards. If your dialogs
    still open stretched after the update, that saved size is yours and W leaves
    it alone; reset it once with
    gsettings reset org.gtk.Settings.FileChooser window-size.
    LibreOffice dialogs opened from the Start Center no longer tile either.
  • Terminal launches follow your terminal. Nemo's "Open in Terminal" did
    nothing (it looked for gnome-terminal, which W does not ship); it now opens
    your selected terminal in that folder. Apps marked to run in a terminal and
    gio launch also use it, through the standard xdg-terminal-exec package,
    which this update installs.
  • foot gets blur. With foot as your terminal, background blur now follows
    the blur setting, including the Hub override; before, foot was never blurred.

Install image: download the current build — rebuilt nightly, including from this release.

v0.21.0

Choose a tag to compare

@tarkh tarkh released this 30 Sep 20:38
  • InvokeAI pack. w-pack install invokeai sets up InvokeAI, an image
    generation app with a canvas editor, as a service on http://localhost:9090,
    under its own account. It shares the machine-wide model store with ComfyUI
    (/var/lib/w/ai-models): every model file already there is registered in place
    — nothing is copied — and deleting a model from InvokeAI's UI can never remove
    weights ComfyUI uses. The GPU backend (NVIDIA, AMD/ROCm, Intel, or CPU) is
    picked for your machine; the pack adds a launcher entry and an AI skill. It
    also installs opencv (four small packages) for the canvas's content-aware
    infill. On a machine with two GPUs (for example an AMD card plus the
    processor's integrated graphics), set device: cuda:0 in invokeai.yaml,
    or half the jobs run on the slower one. Removing either AI pack keeps the
    shared w-ai group for the other.
  • Clicking a notification opens its source. The window of the app that sent
    it comes to the front, on its own workspace — Telegram shows the chat, Firefox
    the tab — instead of staying behind. "Saved" notifications for screenshots and
    screen recordings now show a preview of the capture, and clicking one opens the
    file in its default app.
  • Screenshot editor opens at the size of your screen. Annotation (satty)
    used to squeeze every capture into a shorter canvas and open it shrunk; it now
    opens at its on-screen size, and a region capture opens right over the spot it
    was taken from.
  • Super+Enter no longer fails at random. On systemd 262 the terminal
    occasionally opened no window at all (about one launch in five in testing).
    Ghostty now starts in a mode that avoids the race.
  • Logging out no longer loses your saved session. If a save dialog stayed
    open during logout, the background session saver could overwrite the exit
    snapshot with a half-closed desktop, so windows came back missing or stretched.
    The saver is now paused for the exit and resumed if you cancel it.
  • Gaming pack: a rootless w-pack setup gaming no longer misreports its own
    library subvolumes as plain folders in home snapshots, and the MangoHud config
    exists right after install instead of at the next login.

Install image: download the current build — rebuilt nightly, including from this release.

v0.20.0

Choose a tag to compare

@tarkh tarkh released this 29 Sep 20:47
  • Screen recording. Super+Ctrl+R records the current screen,
    Super+Alt+R a region you drag out, Super+Ctrl+Alt+R the focused window.
    Each chord is a toggle: the same keys that start a take end it. While
    recording, the bar shows a pulsing dot and the elapsed time; click it to stop,
    right-click it to open the capture settings. Recordings land in your Videos
    folder. Encoding uses the GPU when the machine has one and falls back to the CPU
    with a notification, so a take never silently fails. Sound comes from the
    system output by default (AUDIO=mic or none to change it); MP4, MKV and WebM
    are supported. Recording all monitors at once is not possible — pick one.
    The update installs wf-recorder and imagemagick for you.

    One step by hand: your own bar config does not pick up the new indicator
    block on its own. To make the bar show it, reset that file to the shipped
    default:

    w-reset quickshell .config/quickshell/w/config/bar.json
    

    This replaces your bar.json (the bar layout) with the shipped one — the
    current copy is backed up first — so if you have customised the bar, you may
    prefer to add the recording block by hand instead.

  • Screen capture settings in the Hub. Hub → Displays has a new
    "Screen capture" tab: encoder, sound, format, frame rate and screenshot
    annotator, all changeable from the keyboard. The same settings are available as
    w-record get|set and w-screenshot get|set, and, as everywhere in W, as
    w-conf set --user record KEY VALUE.

  • Window screenshots and recordings now have rounded corners and a shadow.
    With no annotator (--copy, --save) or in Satty, a window screenshot gets
    transparent rounded corners matching your theme and a soft macOS-style shadow.
    Turn the shadow off with w-conf set --user screenshot WINDOW_SHADOW no.
    Window recordings can paint the corners black too
    (w-conf set --user record WINDOW_MASK yes); that is off by default because
    it forces CPU encoding for window takes. Flameshot captures are unchanged.
    Themes with square windows get no mask.

  • Active-window screenshots include the window border. The capture used to cut
    the frame off along the straight edges, because the border is drawn outside the
    window's own rectangle. This has been so since window screenshots arrived in
    v0.19.0; it also applies to window recordings and to the Flameshot preselection.

  • The selection overlay looks the same for screenshots and recordings: no fill,
    a 1 px frame and a neutral 65 % dim (Flameshot's dim is now the same depth).
    The overlay fades out instantly, so it no longer ends up in the capture.

  • Satty opens at the size of your capture instead of a fixed 70 % window.
    It is capped at 80 % of the screen: a small region no longer opens as a huge
    window, and a full-screen capture still fits with margin.


Install image: download the current build — rebuilt nightly, including from this release.

v0.19.0

Choose a tag to compare

@tarkh tarkh released this 26 Sep 17:37
  • Screenshots are now annotated in the same window you select in.
    Super+Shift+I (region), Super+I (screen) and Super+Ctrl+I (window) freeze
    the display and let you drag the area and draw on it in one surface, with the
    toolbar next to the selection — no second window opens. Flameshot does the
    annotating; it captures through the same Wayland path as the rest of W and
    wears your active theme. For region and window captures the bar steps below
    the overlay instead of covering the strip you are dragging through. The
    clipboard and plain-save captures are unchanged and still open nothing.

    Satty, the annotator this replaces, stays installed. If the overlay misbehaves
    for you — wrong monitor, slow to appear — switch back without reinstalling:

    w-conf set --user screenshot ANNOTATOR satty
    

    w-conf unset --user screenshot ANNOTATOR returns to Flameshot. One case
    always uses Satty and ignores the setting: a single capture spanning every
    monitor, which has no Flameshot equivalent.

  • Two new keybinds save the screenshot straight to a file. Super+Alt+I
    (screen) and Super+Ctrl+Alt+I (window) write a PNG into your Screenshots
    folder with no annotator and no dialog. Rebindable like any other key, e.g.
    w-hotkeys set screenshot_screen_save "SUPER + F12".

  • New W-Pack: gaming. Steam, Lutris and Heroic on one shared
    Proton/Wine/MangoHud/gamemode foundation, plus ProtonPlus, protontricks,
    gamescope, ntsync autoloading, and the game-tuned scx_lavd scheduler
    (installed, not enabled). Off by default, ~4–5 GiB:

    w-pack install gaming
    

    The pack enables the multilib repository and installs the 32-bit graphics
    stack your GPU actually needs before Steam resolves its Vulkan dependency —
    left to the resolver it picks the wrong provider and breaks Vulkan on
    AMD/Intel. Your game library is kept out of @home snapshots (it runs to
    hundreds of gigabytes and re-downloads from the storefronts), and the MangoHud
    overlay (Shift_F12) and the Heroic window are dressed in your active W
    colours. Log out and back in once after installing — the pack adds your
    account to the gamemode group, and group membership only applies to new
    sessions.

  • w-pack bundles can declare a pre.sh — a root step that runs before the
    package list, for what a package list cannot express: enabling a repository,
    syncing a fresh database, pinning a hardware-specific package ahead of a
    virtual dependency. Only bundle authors are affected; w-pack refresh still
    never runs it.


Install image: download the current build — rebuilt nightly, including from this release.

v0.18.1

Choose a tag to compare

@tarkh tarkh released this 24 Sep 19:22
  • Fixed: locking at the exact moment of a suspend no longer freezes
    half-way and replays the animation on resume.
    When suspend arrives via
    the lid, a bare systemctl suspend, or critical battery, the lock screen
    used to cut off mid-fade-in and the rest of the animation played over the
    desktop after wake. The lock now skips its fade-in when a suspend is
    already in flight — the screen is going off anyway — while normal locks
    (Super+L, idle, w-power sleep) keep it.

Install image: download the current build — rebuilt nightly, including from this release.

v0.18.0

Choose a tag to compare

@tarkh tarkh released this 24 Sep 15:55
  • New W-Pack: ComfyUI. Local image/video generation as a system service
    on :8188, with the GPU-matched engine build (NVIDIA/AMD/Intel Arc/CPU)
    chosen automatically, a shared model store under /var/lib/w/ai-models,
    and ComfyUI-Manager enabled by default so custom nodes install from the
    UI. Extra launch flags go through w-conf set comfyui ARGS "..."; extra
    environment variables go in an admin-owned 20-local.conf drop-in.
    Off by default — install with w-pack install comfyui.

  • New W-Pack: LocalSend. AirDrop-alike file transfer, integrated into
    Nemo's right-click menu ("Send with LocalSend") and scoped to the home
    firewall zone. Its accent colour follows your W theme automatically,
    the same way every other GTK4/libadwaita app does.

  • w-conf now accepts -- to end option parsing, for setting values
    that start with a dash:

    w-conf set comfyui ARGS -- --lowvram
    
  • Dev pack: added cmake, clang, and ninja to the common toolchain.

  • Fixed: ai-extra could silently skip installing the GPU-accelerated
    Ollama backend
    if the plain ollama package was already present on
    the machine (e.g. pulled in earlier as a dependency) — it was mistaken
    for a deliberate choice and left alone. It now installs the right
    backend regardless.

  • New w-power sleep command. Suspending now waits for the lock
    screen to finish drawing first, avoiding a black or half-drawn locker
    on resume; the Power menu and idle-timeout suspend now use it.

  • Fixed: some RGB mice/keyboards could still come back at their factory
    colour after resume
    , even with the resume hook introduced in v0.17.0
    — systemd could kill it before it finished detecting the device. It now
    runs in a way that survives to completion.


Install image: download the current build — rebuilt nightly, including from this release.

v0.17.0

Choose a tag to compare

@tarkh tarkh released this 20 Sep 20:38
  • Home folders now follow the system language. If your interface is in
    Russian, ~/Downloads becomes ~/Загрузки, ~/Pictures → ~/Изображения,
    and so on for all six standard folders — including ~/Screenshots, which
    the screenshot tool (Super+Shift+S) now resolves dynamically instead of
    hardcoding. The rename happens at the next login after the update and is
    one-time: folders you moved are left alone. To opt out:

    w-conf userdirs LOCALIZE=no
    

    If you run a non-Russian locale this changes nothing for you.

  • OpenRGB devices re-colour after suspend. Keyboards, mice and other
    OpenRGB-supported lighting used to go back to their hardware default after
    waking the machine and never caught up until the next theme switch. A new
    system-sleep hook (w-rgb) re-applies the theme's RGB palette on resume.

  • w-fingerprint now controls the fingerprint scanner on the lock screen.
    Two modes: native (the default, unchanged behaviour — fprintd authenticates
    through PAM) and wake (the scanner stays armed during hyprlock, so
    touching it unlocks the screen without reaching the keyboard). Switch with:

    w-fingerprint lock-sensor wake
    
  • Toolchain state hygiene: Go builds no longer litter ~/go.
    GOPATH, GOMODCACHE, GOCACHE and GOBIN are now routed into
    ~/.local/ and ~/.cache/ — outside @home snapshots — at every login,
    across TTY, SSH and the graphical session. The subvolume is carved
    automatically; a pre-existing ~/go is left untouched (safe to delete by
    hand). Future tools (cargo, gradle, npm…) will follow the same pattern.

  • w-pack deploy_managed now preserves file modes. A managed file with
    an executable bit (e.g. the graphics pack's mcpinkscape hook) kept it
    in the bundle tree but arrived on the machine as 0644. It now keeps the
    mode the file has in the pack — matching how apply_rootfs and the
    directory branch (rsync -a) have always worked.

  • w-sync re-applies packs when the pack tooling itself changes.
    Previously only changes under scripts/packs/ triggered w-pack refresh;
    a fix to w-pack or its deploy SDK now does too.

  • Hyprlock: fingerprint-aware auth config shipped. A new
    ~/.config/hypr/hyprlock-auth.conf template enables w-fingerprint lock-sensor wake to work out of the box on fresh installs. If you use
    w-reset hyprlock (e.g. after the v0.16.0 lock-screen rework), the auth
    fragment is included automatically.


Install image: download the current build — rebuilt nightly, including from this release.

v0.16.1

Choose a tag to compare

@tarkh tarkh released this 17 Sep 21:32
  • Session restore: tabbed windows and Firefox windows come back correctly.
    Two longstanding defects, both present up to and including v0.16.0:
    • Window groups (tabbed windows) came back scattered over the workspace
      instead of as groups. Every member of a group reports the same content
      rectangle, so the restore could not read the split tree and fell back to
      tiling the windows in arrival order. A group is now one tile of the tree —
      its tab bar accounted for — and is reassembled after the tree is in place:
      tabs in the saved order, the tab that was on top on top. Dwindle only; a
      floating group returns as separate floating windows and a group's lock
      state is not restored.
    • Firefox windows came back as one window of tabs plus one blank (or
      swapped). W launched firefox once per saved window, but a second launch is
      a remote command to the instance already running and opens a blank window.
      Firefox keeps its own session, so it is now launched once and each window it
      brings back is placed where a window with the same title was. At logout W
      also finishes Firefox's own "closed in series" memory in its session file —
      Firefox's own pass stops at any older closed pop-up and drops the rest,
      which on a real profile is why a second window went missing.
    • Firefox restores the tabs inside a window only if its own
      Settings → Home and startup → "Open previous windows and tabs" is on; W
      does not switch that on for you. Hub → System → Session now says so when you
      turn restore on.
    • If you keep personal relaunch overrides in ~/.config/w/session-apps.tsv,
      the file gains an optional flag column; two-column rows keep working. Flags:
      own-session (the Firefox case above) and = in the command column to keep
      the recorded command line.
  • RGB lighting is more reliable. The theme's colour was sent to the openrgb
    daemon by guessing when it had come up; on a slow login the send happened
    before the daemon knew its devices and was lost. W now waits until openrgb
    reports devices (up to 20 s) before colouring, so RGB matches the theme on the
    first try. This affects the RGB feature introduced in v0.16.0.
  • The desktop guide (w-guide, Hub → Documentation) and the on-box assistant
    explain that window groups come back as groups and where Firefox's tab-restore
    setting lives — in English and Russian.

Install image: download the current build — rebuilt nightly, including from this release.