Changelogs 19-08-2026 [Alpha]
Applications#
Changelogs for the releases published on that date across the repositories. It is still in Alpha state, so it is common to run into bugs or unfinished features. Any report can be filed in the repositories and/or through the official communication channels
vasak-desktop#
- New animation when opening the notification centre
- New animation when opening the menu
- New animation when opening applets
- A popup for the system tray is added on right click
- The menu is rearranged to improve visibility
- Keyboard navigation in menu filtering is improved
- The battery indicator icons are improved
- A bug when changing brightness in Wayland is fixed
- The apps shown in the panel area are fixed
- Dark theme handling is fixed
- PipeWire usage is fixed
- Menu indexing is improved
- Reactive icons are added
- A confirmation pop-up is added for the session buttons
- OSD feedback for actions is added
- Resource usage for the desktop in general is reduced
- Several tray icons did not appear, and the right-click menu would not open for several applications. They were three separate things, and not one of them was visible without a real application publishing its icon:
- The menu was requested at the wrong path. The path each application publishes was read with the wrong declared type, so the read always failed and the panel fell back to a fixed path that is only the correct one for applications built with a particular library. Those worked by accident; the rest showed no action at all.
- The submenus showed a copy of the whole menu instead of their own contents, because it always asked for the root level rather than the submenu that was being opened.
- When an icon was not found, the gap stayed empty forever: the class that drew the replacement was misspelled and did not exist. On top of that, the lookup by name searched six fixed paths and ignored the system icon theme. Now it uses the same resolver as the rest of the panel —which does know the theme and updates when you change it— and if the application asks for an icon that is not installed, the first letter of its name is shown, so at least you can see something is there and click it.
- The control centre now recognises the VPNs it manages through its own application —Twingate, Tailscale, ZeroTier, wg-quick— not just the ones created from NetworkManager. With Twingate connected it said there was no VPN while all the traffic was going through it. The known ones are shown with their name («Twingate», not «sdwan0») along with which one egresses where and with which address. It requires network plugin 2.2.0.
- The repository is 62 MB lighter. The README preview GIF was larger than the entire rest of the project combined and it was downloaded in full on every clone; a link to a video takes its place.
- New panel menu with the phone’s applications, next to the file manager, and a card in the notification centre with the phone’s state and its open windows, with a button to close them. The panel button only appears when a phone is connected: a permanent icon for something that needs a device most people never plug in is noise in the only strip of screen that is always visible. If the phone is connected but not yet authorised, the icon carries a warning dot.
- In that menu every application had the same icon. Android does not hand over an application’s icon through any straightforward path, so all 89 rows fell back to the same generic square: it looked broken and did not help find anything. Now the known applications —WhatsApp, Telegram, Spotify, Instagram, YouTube, Gmail, Chrome, Discord, Netflix and a few more— use their real icon from the VasakOS theme, and the rest show a tile with the first letter of the name. Guessing the icon from the package name was tested against a real phone and discarded: it gets a third right, and most of those correct guesses are wrong —the phone’s «Settings» ended up with the VasakOS Settings icon, right next to its own name, as if it opened the store—.
- That menu did not respect the system colours. The device selector was a native drop-down —drawn by GTK, not by the theme— and the system applications switch was a native checkbox. Now they use the desktop components. Along the way, the open and close animation did not exist: it failed silently and the window appeared and disappeared abruptly.
- Dark mode and the icon pack were lost on restart. The theme switch only told
gsettings, which nobody reads in VasakOS —that works on GNOME, where a service distributes it to applications—. The ones that looked right were the ones that had been notified while open: on restart they all went back to light with the default icons, next to a desktop that was still dark. Now it is also written where GTK looks for it at startup (gtk-3.0andgtk-4.0in the user configuration), respecting the rest of what is in those files: font, cursor, text size and the rest stay as they were. - Tapping a notification now does what it promises. The one that opens the page, the one that shows the download: that action is not drawn as a button —the button is the whole notification— and the card had no click handler, so it was unreachable. Now it can be tapped, with the cursor and tooltip text that indicate it, and only when the notification really has something to open.
- The panel showed no open windows at all. Wayfire 0.11 reports geometry with decimals and the read expected integers, so the whole list failed and it retried once per second: it looked like a harmless log line, but the list never arrived.
- Opening the notification centre closed the whole desktop. The window was created the first time it was used, from a background task; GTK is not safe off the main thread and the process went down with it.
- The tray icons had the wrong colours and a yellow halo. The colour channels were rotated: Telegram’s blue looked violet, the Chrome logo lost its colours, and —most visibly— the smoothed edge of any light icon came out yellow and opaque, because the edge transparency ended in the blue channel. This affected every application that puts an icon in the tray, not one in particular.
- The tray icons looked blurry. It always took the first size the application offers, almost always the 16 px one, and scaled it up. Telegram, for example, offers up to 256. Now a size is chosen that holds up on screen without stretching. Full-colour icons stay in colour: monochrome is not forced.
- The panel button did not close the control centre: it closed it and then reopened it in the same click.
- Text that did not follow the theme. Several labels —the security of a Wi-Fi network, the weather minimum, the network name— used a colour the theme does not define, so they inherited the parent’s and the dimmed variants were not dimmed.
- The battery indicator stayed frozen at whatever percentage it had at login. It never subscribed to system notifications, so it learned nothing: it repeated the same value all session long.
- The panel showed the wired icon while on Wi-Fi. It described the first active connection it found —loopback, a VPN tunnel, whatever— instead of the one that actually gives you egress, and anything that was not Wi-Fi it drew as ethernet. Now it asks which one is primary, and a modem or a tunnel has its own icon.
- The application menu is in the system language. Applications ship their translations inside the
.desktopfile itself and the menu always read the untranslated version: on a Spanish system everything appeared in English even though the application had a Spanish name. This also applies to the description and to the words the search finds them by. - The Wi-Fi network list fits on screen now. The network applet spent almost all of its height on three stacked blocks —VPN, traffic and Ethernet— and the list, which is the reason you open the applet, was left a strip so short it got cut off along with the refresh button. Now the traffic goes on the Wi-Fi row, VPN and Ethernet share a row, and the list keeps what was freed: four networks at a time and the button always in sight.
- Fixed: the dot indicating “disconnected” was invisible, because it used a colour that does not exist in the theme.
- The notification centre appeared in the middle of the screen. It was an ordinary window positioned with a call that does nothing in Wayland —an application cannot decide where it is placed— and then it was dragged into place by asking the compositor. Now it is anchored to the right edge, between the panel and the background, which is how a desktop component says where it goes.
- It closes with Escape and on clicking anywhere else. Before it stayed open on top of whatever you were using until you tapped it again.
- Fixed: the button that opens and closes it desynchronised from what was on screen.
- Fixed: when it was anchored it ended up with no size and opened as a 200×200 little square stuck to the top right. It is back to its 350 px wide across the full height of the screen.
- The notification history is read from the daemon instead of the desktop running its own server competing for the same name.
- Logging out now closes the whole session instead of leaving loose processes behind.
- The menu’s Settings button now opens Settings. It invoked a command that did not exist: the error was swallowed silently and the button did nothing. The same happened with the search’s “Settings” action, which closed the window without opening anything.
- On connecting, disconnecting or changing a monitor, the desktops and the panel are rebuilt. Before they were built only once at login: a screen plugged in afterwards got nothing, and a disconnected one left its surfaces dangling.
- The primary monitor is asked of the system instead of assuming it is the one at position (0,0) —with several screens that is simply the leftmost one, so the panel and the notification centre could appear on the wrong screen.
- Fixed the control centre mixing screen units, which on scaled screens sent it to another monitor.
- Menu search now finds with capitals. Typing “F” for Firefox returned nothing, and the arrow highlight pointed at a different item from the one shown, because there were two separate filtered lists.
- The session buttons (shutdown, reboot, log out) no longer leave the menu blank when clicked.
- The menu opens instantly. Before every open re-read and re-interpreted all the system
.desktopfiles, blocking the interface during the scan, and it also rebuilt the whole window. Now the list is cached and it updates by itself when you install or uninstall a package —before you had to close and reopen the menu to see a new application. - The volume slider no longer freezes the panel. Every move spawned a process and blocked the interface for up to 3 seconds; the clock and the animations froze while you dragged. Same with brightness.
- Opening the control centre, the applets and the shutdown menu no longer rebuilds the whole window every time. Along the way: the shutdown dialog showed the previous action if the window was reused (you picked Reboot and then Shutdown, and it showed Reboot), and the control centre queried the network every 2 seconds even while hidden.
- The logs stopped being written to disk on every line. Every
console.login the frontend was a synchronous write that stalled the interface. On top of that the log files piled up forever; now ones older than a week are deleted. - ⚡ The panel clock wakes up once a minute instead of twelve, and no longer shows the minute up to 5 seconds late. A permanent animation that made the panel repaint all session long was removed, and two timers that were left running were fixed.
- The desktop is translated (Spanish and English) and starts in the system language. Before it had no translation and mixed the two languages on the same screen: a menu in Spanish whose buttons said Shutdown, Reboot and Logout.
- The system tray now actually responds. The desktop took the service name but did not implement the interface: it did not answer applications that registered (they waited until they timed out) nor did it publish the state that many of them query before showing their icon. On top of that two watchers were running, and every panel reload added another.
- Cleanup of the X11 leftovers. Nine files were still using the window handling from before the migration to Wayfire, which in Wayland does absolutely nothing. Now every menu and pop-up window is positioned through the route that does work.
- The desktop recovers if Wayfire or the notification daemon restarts. Before a transient failure was final: the taskbar went dead and notifications froze silently until the whole desktop was restarted.
- The desktop no longer fails to start if Wayfire is slow to respond at boot; it now retries in the background, and what is delayed is the taskbar, not the session.
- Fixed a lock-up of up to 50 ms between the two threads that track open windows, every time one changed.
- It stopped spawning a process per second —about 86,000 per day— just to find out whether the microphone was muted. Now it listens for audio changes, and it reconnects if the sound server restarts.
- The weather widget: no longer shows fake Berlin data from 2023 when there is no network —it says it could not fetch it—, it stopped sending your IP to a third party over unencrypted HTTP on every menu open (it now infers the city from the system time zone), and the days of the week are no longer off by one.
vasak-desktop-settings#
- Locking with Super+L gave a different screen than coming back from suspend. The shortcut still called gtklock, with a stylesheet that did not even exist: GTK’s grey dialog came up, while locking by inactivity already showed the VasakOS screen. Now both are the same one, the login screen. With that, gtklock is no longer installed, along with the ~400 lines of Python that existed only to tint it.
- The SSH key stops asking for the passphrase on every connection. There was no agent running, so
sshasked for it again every time; now the session starts the agent, the key is added by itself the first time it is used, and the passphrase is asked by the Vasak dialog, which stores it in the keyring: typing it once is enough for good. - The desktop session did not start. Two dependencies the session needs in order to boot were missing: the tool that launches the compositor, and the desktop itself, which starts automatically. On the live image they appeared by accident; on update, they did not.
- Fixed: the desktop portal was being started from a path that does not exist on Arch, so it never started even though it looked like it did. The open, save and screen sharing dialogs depend on it.
- Importing a GPG key looked like it did nothing. The dialog that asks for the password was drawn in text mode, inside a terminal nobody was looking at: the pinentry launcher only looks for a graphical interface if it sees certain environment variables, and gpg-agent inherits the environment of whatever first woke it, which is often not the graphical session. Now the session is detected by its Wayland socket, which is always there.
- The session is managed by systemd (uwsm): applications correctly see the graphical environment and services start and stop with the session.
- Screen locking built in, with the look of the system.
- The keyboard you chose at install time now reaches the desktop. Wayfire has no “undefined” keyboard by default: it has
uswritten in by hand, so a machine installed with a Latin American or Spanish keyboard booted up typing in English and the layout left by the installer was read by nobody. Thewayfire.inishipped now leaves those keys empty —which is not the same as not setting them: empty, Wayfire stops imposing its own— and the session exports the system layout. Whatever you type in Settings takes precedence over both. - The lock screen now actually resembles the rest of the desktop. It takes the colours, corner radius and typography from the settings at the moment it locks, so changing the theme in Settings is enough for the lock screen to follow. The unlock button was painted with GTK’s accent colour instead of the system colour, and the corners used a fixed radius that had nothing to do with the chosen one.
- The desktop wallpaper appears behind the lock screen, blurred and tinted with the theme colour —before the screen was a flat rectangle because the image was never passed to it. The blur is computed once and reused until the wallpaper or the theme changes.
- Fixed: on suspend, the machine waited for someone to unlock before going to sleep. Now it locks and suspends.
- The display manager’s reference configuration is shipped.
- The duplicate startup of the authentication agent was removed; it was left running twice.
- The compositor’s plugin list was trimmed to the ones VasakOS actually uses.
vasak-resonance#
- Playback no longer loads the whole file into memory: it streams as it plays. A long album used to reserve over 1 GB.
- The desktop panel no longer shows frozen music: the player notifies when the track, state or volume changes.
- The remote control listened without authentication; now it only accepts local connections and requires a token.
- Playing a song moved gigabytes per day between the player and its interface: the album cover was sent in full twice a second. Now it travels once, when the song changes.
- The song data cache was rewritten in full on disk 120 times a minute and grew without limit until it filled the browser’s storage, at which point playback stopped updating.
- ⚡ Searching was re-indexing the whole library on every keystroke. Now the index is only rebuilt if the library is older than the index itself.
- Scanning folders, searching and managing playlists no longer freeze the window: they were done on the UI thread. A scan left the app unresponsive for its entire duration.
- Fixed: when tuning to a radio station, the “loading” indicator never turned off.
- The radio stations had no controls: pause and resume did nothing and the button always said “stopped”. Now pause cuts the connection and resume reconnects, which is the correct behaviour for a live stream.
- When a song ended with no duration in its tags, the player just sat there: now the player itself detects the end of the track. And when the queue finishes it actually stops instead of staying “playing”.
- There are playlists now. They were complete in the backend with no screen using them: the “Playlists” section actually showed the queue, and there was no way to create one. They can be created, deleted, filled by searching the library, emptied, and played or queued in full.
- The player did not start if
~/.config/vasakwas missing: it crashed before opening the window. - The desktop’s music controls did not work: the volume control moved with no effect and the progress bar was decorative, because the player did not offer those operations. Now it does, and clicking the song name brings the player to the front (before it did nothing).
vasak-settings#
- Battery configuration is added
- A window management area is added
- An autostart management area is added
- An effects configuration area is added
- A workspaces configuration area is added
- A monitors configuration area is added
- A Language and Keyboard configuration area is added
- A PipeWire bug is fixed
- New Phones section: the Android phones that have already connected once, with their state, when they were first seen and their last address. They can be renamed and forgotten. The ones that are not connected also appear, because otherwise there would be no way to forget a phone you do not have at hand —which is exactly when you want to—. A notice above the list clarifies that forgetting a phone does not revoke its access: that is revoked from the phone itself, in the developer options.
- That screen knew nothing: plugging a phone in or unplugging it with the window open changed nothing until Settings was closed and reopened.
- Appearance: dark mode and the icon pack now survive a restart. It is the same fix as the desktop’s theme switch —both store it the same way— described in vasak-desktop .
- Every Privacy switch says whether it really blocks anything. There was a footnote for eleven switches, easy to overlook; a control that looks like protection and is not is worse than no control at all. Online accounts are delivered by a service that asks before answering, so denying there does something real; camera, microphone and screen are delivered by PipeWire and the portal, which do not consult this policy yet.
- Accounts are managed through the daemon, not through files. This screen wrote
accounts.jsonitself and stored the token in the user’s keyring: that entry was a second door to the same secret, which any program of yours could request without going through the permission prompt. Now the secret is handed over once and the application keeps no copy; listing returns metadata only. - Opening Wi-Fi closed the whole application. The component that talks to NetworkManager slept the thread waiting for a reply, and done from where it was done, that does not fail gracefully: it aborts the program. Along the way, network operations no longer freeze the window while NetworkManager answers.
- New Users section: create and delete accounts, change passwords, rename, grant or revoke administrator rights, and lock an account without deleting it. It will not let you delete yourself or leave the machine with no administrator at all.
- New Date and time section: automatic time over the network, time zone with a search box, manual adjustment, and hardware clock in local time (for whoever shares the machine with Windows).
- New Brightness and Night Light section: software brightness and blue light reduction on a fixed schedule or at sunrise/sunset.
- Configurable idle lockout from Energy: minutes until locking, screen blanking, and lock on suspend. Before it lived hidden inside a line of
wayfire.iniwith no way to touch it from the interface. - The keyboard layout could not be changed —nor anything that lives in
wayfire.ini: a single invalid byte in that file was enough for the application to refuse to read it entirely, and with that the keyboard, shortcuts, plugins, autostart and monitors pages would neither load nor save. Wayfire reads the same file without trouble, so now the settings do too. - The keyboard variants were those of every distribution combined (347 from 99 distributions), so it was easy to pick one that does not exist for yours; when that happens XKB does not build the layout and the keyboard stays as it was, saying nothing. Now the ones for the chosen distribution are listed, with their real name («Spanish (no dead keys)» instead of NODEADKEYS).
- In the menu it appeared as «vasak-settings», with the Tauri logo and inside Accessories. The menu entry was the one Tauri generates by default: no name of its own, no category and untranslated. Now it is called Settings —translated into thirty languages, like the terminal and the gallery—, it carries the preferences icon from the VasakOS theme, it lands under Settings, and it is found by searching for «preferences» or «settings».
- Fixed: anyone who had ever touched that screen was left with the old lock screen, without the system colours and without a wallpaper, because the stored settings overrode the packaged one. It also fixes the machine waiting for the unlock instead of going to sleep on suspend.
- Wayfire plugins can be enabled and disabled from each settings page, and there is a new page that lists them all by category. The ones the desktop needs in order to work do not offer the switch and explain why. ⚡ Turning off the ones you do not use is memory and work the compositor stops doing.
- Fixed the settings getting corrupted on save. The plugin list of
wayfire.iniis written across several lines, and any save destroyed it. On top of that, saving a section lost the options the interface does not know about. - Options that existed on no screen: the workspace grid (how many workspaces you have), the shortcut for closing windows, and who draws the decoration.
- Settings for the plugins that could only be switched on: window switcher, quick switcher, output switcher, new window placement, and window rules.
- Autostart fixed: it showed commands without their name, and the two entries the session depends on could be deleted, leaving the machine with no desktop.
- The application is translated (Spanish and English) and starts in the system language. Along the way: battery state and desktop addresses were shown raw in English, and dates ignored the language.
- More consistent interface: form fields are now shared components. Fixes emptying a numeric field writing an invalid value into the settings with no way to recover it.
- The package did not build. 23 type errors broke the build. Among them were three visible failures: a theme colour that was never shown, the account provider icons that did not load, and the shortcuts «Clear» button that did nothing.
- New Privacy and security section: it lists which applications can use your online accounts, with a switch per permission and a button to make it ask again. Changing a permission asks for your password. It only shows what the system really enforces: a switch that looks like protection and is not is worse than not having it.
- Support for multimedia and brightness keys in the shortcuts, with a dedicated card for special keys.
vasak-terminal#
- Focus on opening a new terminal is fixed
- Focus on opening a new tab is fixed
- A bug in displaying apps with instructions is fixed
- The terminal’s exit is fixed
- An overlay mode is added for the terminal
- Font size control is added
- Terminal spacing is fixed
- The terminal’s output stopped being polled 60 times a second: now the process pushes what it writes. This also fixes an unexpected close when receiving accented characters or emoji split across two reads.
- The package did not build. On top of that, the labels of the drop-down menus ignored the class passed to them.
- The tab bar showed the translation keys instead of the texts, and always in English. Now it starts translated and in the session language.
vasak-permissions (new)#
- Applications now ask you for permission, like on macOS: the first time a program wants to use the camera, the microphone, the screen or one of your accounts, a dialog appears explaining what it will be able to do and you decide. The answer is remembered, and each permission is decided separately.
- What was decided can no longer be changed by any program of yours. Before the accounts permission list lived in your configuration folder: any program rewrote it and granted itself whatever it wanted. Now it is a system service and the file cannot be written by your user. Changing a permission requires authentication.
- If the program was not installed by the system, the dialog says so, because in that case nobody can guarantee that tomorrow it is the same program.
- The agent that shows the dialog does not create any window until there is something to ask: a hidden window would cost about 150 MB permanently for a dialog seen a handful of times.
- The desktop portal’s dialog is now ours: when an application asks for the camera or the location through the portal, the dialog looks like the rest of VasakOS instead of inheriting GNOME’s.
- The service flatly rejects what it cannot enforce (camera, microphone, screen, location, keyboard reading): those are delivered by PipeWire and the portal, which do not consult this policy. Storing an answer that changes nothing, and that the Settings screen could not even display, was worse than not storing it —nobody could trust it or undo it. Online accounts are enforced.
- Fixed: if a program asked for something during login, before the agent had started, it stayed denied forever and you were never asked again.
- At most five dialogs per minute. For anyone who gets more of them than they can read, every subsequent answer is a reflexive click.
- Actually enforcing camera, microphone and screen requires application sandboxing: the portal cannot say which program is asking (the identity it receives is empty outside a sandbox) and an application can talk to PipeWire directly.
vasak-press-and-hold (new)#
- The accent picker now actually appears, is navigable with the keyboard and writes the variant. It never appeared —the window stayed 0×0 and unmapped—, the numbers selected nothing (pressing
1typed a1) and of all the variants onlyñcould be typed: the injection looked for the character in your keyboard layout, andédoes not exist as a key in the Latin American layout. Now the picker brings its own virtual keyboard with one key per variant, so it types any of them without depending on the keyboard you have. - The picker uses the system’s colours, radius and typography, it centres itself and it fits as many variants as the letter has: with the seven of
athey used not to fit in the window, and with the two ofnthey were lost against the left edge. - Typing fast no longer scrambles the letters. The letter was typed on key release, so pressing the second before releasing the first turned “as” into “sa”. In an editor you see it and correct it; in a password field you see nothing, and this is why the lock screen rejected the correct password. Holding a key down still opens the picker, same as before.
- Holding a key down opens the accent picker, like on macOS: hold
iand í, ì, î, ï… appear, and you pick with a number or a click. The window is centred and not next to the cursor, because many applications do not report where the insertion point is and the picker would end up anywhere. - Before, it did not work because it never started: there was no service and no autostart, the package was not in any list, and its recipe downloaded from the wrong organisation a version that was never published. That pressing and holding a key repeated the letter was, simply, the system behaving normally with nobody intercepting.
- It still did not work even with the service running: it could not open the device it writes through. It was two things chained —the package did not load the module that makes that device actually exist, and its permission rule was numbered so the system read it too late— and both were needed for the accent picker to run at all.
- And with permissions solved, the last one appeared: the virtual keyboard was never created on any machine. What the program described to the system in order to create it did not have the shape the system expects, so it was always rejected. It is the first time this code gets as far as producing a keyboard.
- And once that happened, the service stayed “active” with the function dead, which is the worst way to fail: now it retries for a few seconds —in case it beat the system to it at login— and if it still does not manage, it exits, so that it is visible where to look for failures.
- If a keyboard cannot be taken exclusively, it is ignored instead of used: since everything you type is forwarded, a keyboard that keeps sending on its own makes each key arrive twice. If no keyboard can be taken, the picker is disabled and says so, and typing still works the same.
- And with the keyboard finally created, it took over the whole system: it left the machine with no keyboard. The virtual keyboard is declared with all the keys, so it passed the same test the program uses to recognise a real keyboard, and it was created before searching for them: it found itself and took exclusive control of its own device. From then on, every key it forwarded it swallowed itself instead of reaching the screen, and went back in where it had come out. You could not type, not even to turn it off. Now keyboards are searched before the virtual one exists, and it is additionally excluded by name.
- Choosing an accent never wrote anything: the list of variants that filled the keyboard reader and the one the picker read were two different lists, so the second was always empty and every selection failed.
- Holding a key that has no variants lost the letter. If you held it longer than four tenths of a second —what anyone takes to think— the keypress was not forwarded, and on release it was decided it was too late: you typed
sand nothing appeared.
vasak-flare-daemon (new)#
- Notifications that offer to open something can now be opened. The daemon had no way of triggering the primary action —the one the browser uses to go to the page, or the file manager to show the download— so tapping the notification did nothing. On top of that, when acting on a notification it now tells whoever sent it that it was closed: without that signal the application keeps waiting for it forever.
- System notification server. It shows a notice at the bottom right when a notification arrives and keeps the history, which the desktop queries to show what is unread. Before every application competed for the same service.
vasak-connect (new)#
- The applications on your Android phone open as desktop windows. You connect the phone over USB with debugging enabled and they appear in a new panel menu; each one opens in its own window, alongside the system ones. It is not the phone’s screen shoved into a box: the phone stays free to use in the meantime.
- The phone is detected when you plug it in, without opening or tapping anything, and a notice arrives in the notification centre. If you have not yet accepted debugging, the notice tells you to look at the phone’s screen.
- ⚡ While no phone is connected the service costs nothing. It does not poll: it waits for the kernel to tell it, and it does not even start the adb server until there is something to talk about.
- The menu showed “unauthorised” even after you had authorised it. Accepting debugging on the phone generates no system notification —the device does not announce itself again, only what it answers changes— so the service never found out and the dialog stayed up forever.
- The notification used an icon the VasakOS theme does not have, so the generic one showed.
- The icons do not come off the phone: Android does not expose them through any straightforward path, so the known applications use their VasakOS theme icon and the rest show their first letter. Fetching them from the phone itself requires reading the APK or installing a companion application, and neither fits in this version. And cable only: the wifi connection is designed but not implemented.
vasak-session-manager#
- The lock screen is now the same one as the login screen. Before it was drawn by gtklock with the GTK theme, not the system one, and the result was a mixture: the card with VasakOS colours and the rest with another theme’s. Now it takes the colours, radius and typography from your settings, shows your desktop wallpaper dimmed, and your account photo sticking out of the card.
- It refuses to lock if it is not going to be able to unlock: without its PAM file it does not cover the screen, because a lock screen that cannot verify a password leaves the machine inaccessible until the power button.
- The login screen now works with several monitors. Before it was drawn on a single one —the last the machine had detected, not necessarily the one the person is looking at— and the rest stayed black. Now it covers all of them: each monitor shows the full wallpaper (not a piece of the same image stretched between the two) and the password box appears on the monitor where the pointer is. If nobody has touched the mouse yet, it goes to the primary monitor. Moving the mouse to the other screen takes it and the half-typed password there intact.
- The wallpaper is visible, the same one VasakOS ships, instead of a flat colour. Until it can be chosen from the settings, an administrator can change it by writing the path of an image in
/etc/vasak-session-manager/background. - The session list was white on the dark background and was illegible: the system drew it with a theme that does not exist yet on the login screen. Now it is its own and follows the VasakOS theme.
- The chosen session is remembered per account, and for real. It was stored in a temporary directory that is wiped on shutdown, so on every boot the screen started from zero. On top of that it was a single choice for the whole machine: on a shared machine one person’s choice was imposed on the next. Now every account keeps its own desktop, and the choice made before this change is not lost.
- All the texts appeared untranslated (
login.title,login.signIn) instead of in Spanish: the program lacked the permission to read its own translations, and the package did not install them either. For the same reason the greetd configuration was not installed either, so the package did not leave the system ready to boot with this screen. - The login screen did not start: it closed before drawing anything. It lacked a place to write to —greetd starts it with a minimal environment and the web engine does not start without that— and it also asked a compositor that already gives it fullscreen for fullscreen.
- greetd is configured when the package is installed. Before the configuration only existed inside the live image, so anyone updating was left with lightdm and never saw the new login screen. The switch is made automatically from lightdm or from no display manager at all: if you chose another one, it is respected.
- The configuration for installed systems does not carry the live image’s autologin, which names a user that does not exist on your machine.
- It is the display manager (greetd model), with an interface aligned to the design system and a shutdown/reboot menu.
- It dropped privileges incorrectly and used a borrowed PAM service.
- The package could not be built. The Tauri CLI was pinned to a version incompatible with the Rust crate, and the build tried to assemble an AppImage (which fails and is also unused: the package installs the binary directly).
- The login screen keyboard was always the US one, no matter how the machine was configured: anyone with a Spanish keyboard typed a different password from the one they saw and could not get in. Now it uses the system layout, also offers the US one, and shows which is active.
- Every account showed “User”. Now the person’s real name and photo appear, and accounts not in
/etc/passwd(LDAP, homed) are listed too. - “Other account…” was added to type the username by hand: if the machine listed no account at all, the screen was empty with no way out.
- The screen froze while checking the password. A rejected password deliberately makes you wait several seconds, and that blocked the whole interface. On top of that, if the session service does not answer, there is now a timeout instead of getting stuck.
- It warns if Caps Lock is on, the cursor starts in the password field, and Enter signs in.
- X11 sessions were listed but did not start. Now they do, and every session receives the variables applications need to know which desktop they are in.
- It remembers the last account and session used; it shows the time and date; and it is translated (Spanish/English).
- Five unused components were removed (icons, settings, shell, vicons, GTK and pinia): it is the first thing that starts on the system.
vasa-keyring (new)#
- Encrypted keyring system
- PAM system implemented to avoid re-prompting for the password
- The keyring did not open at login, and on a new machine it did not even come into existence. PAM hands the password to the daemon one second before it claims its name on D-Bus, and that bus reply was taken as “wrong password” instead of “still starting up”: the retry written precisely for that moment never got to run. Since the keyring database is created the first time it is opened, it was left uncreated, and everything that depends on it —stored passwords, SSH key passphrases— failed silently.
- The SSH key passphrase is typed once and never asked again.
sshhas nowhere to store it and no way to ask for it outside the terminal it started in: from a graphical application it did not even ask, it failed and that was it. Now the same keyring dialog asks for it, with the option of remembering it there —and the keyring already unlocks at login—. - Applications said there was no keyring when it was actually locked. The service answered “unlocked” while rejecting everything, so programs did not ask to unlock it: they showed straight away that there was no key service. Now it tells the truth, and it notifies already-open applications as soon as the keyring is unlocked, instead of leaving them believing otherwise for the rest of the session.
- The keyring could end up unusable with no sign at all. A second process took the name it was running under, and on exit left the service without an owner: no application could use it while the system kept reporting that it was fine. Now the second process refuses to start and explains why.
- Auto-unlock at login was missing. The module that does it was installed but nothing connected it, and the instructions for doing it by hand were incomplete: they were missing one of the two necessary lines, so following them was not enough either. Installing the package now reports what is left to configure and where.
- The system image now leaves auto-unlock running, with no need to edit any file by hand: the
system-loginshipped in the ISO already carries both lines. Before every installation started with a keyring that ran, answered and failed at everything, and the only place to fix it was a file nobody knew had to be touched. - Auto-unlock is configured when the package is installed. Before you had to add two lines by hand to a PAM file nobody knew existed, and until they were added the keyring ran, answered and failed at everything. That file is touched carefully: only if it is the expected one, the whole thing is assembled, compared against the original and only then replaced in one go, leaving a copy alongside. Uninstalling leaves it as it was.
- Auto-unlock could never have worked, not even with the lines in place: the module handed the password to the root bus instead of your user’s, because PAM runs as root before your session exists.
- Three wrong passwords and the keyring stops answering for half a minute. Any program in your session can ask it to unlock, and with no limit it could try passwords as fast as the service answered. Getting the password right clears the count and the wait.
- When the keyring is locked, it now asks you. Before it was a dead end: everything failed and the only way out was logging back in. That left out logins with no password —autologin, fingerprint, card— where auto-unlock can never happen, and the case of the daemon restarting halfway through the session. The dialog is offered by the applications that use the standard keyring themselves, with no changes to them.
- The applications that use the standard Linux keyring now work: the full interface they expect was implemented, with the correct names, change notifications and collection locking.
- Fixed: editing or deleting a secret was not saved.
- The master password was stored in a plain text file.
- Storing and retrieving passwords now actually works: no application could do it. The keyring did not publish the default collection where programs look for it, and the replies had a format they rejected. Verified with
secret-tooland with the same mechanism vasak-accounts uses. - The encrypted channel between the applications and the keyring was built wrong and did not follow the standard, so no program could use it; and what arrived encrypted was stored without being decrypted, so reading it back was garbled.
- On keyring restart, the next password saved silently overwrote the oldest. Also: creating a password wiped from disk the ones in other collections.
- The keyring file is written in one go and only its owner can read it; before a power cut halfway through the write left it unusable.
- If a password cannot be saved, the application now finds out at the moment and with the reason; before it got a confirmation and lost it on logout.
- Fixed: the login module never unlocked the keyring, because it asked for a name and a method that do not exist.
vasak-accounts#
- It starts on its own when some application needs it.
- Permission checks could be fooled by substituting the process being queried; and demo data was also loaded in the final version.
- No application could use an online account. Every account created from Settings was born without permissions and the daemon denies whatever is not allowed, so the entire feature was inert. Now, the first time a program wants to use an account the user is asked and the answer is stored; each permission (mail, calendar, files) is decided separately. If there is nobody to ask, it is denied. Now those rules live in the system permissions service, alongside the camera and the microphone, in a file that none of your programs can rewrite.
- Your account tokens left your keyring. There the permission was worth nothing: any program of yours asked the keyring for the token directly and never went through the prompt. Now the accounts manager is a system service and the tokens live in files only root can read, so the only path to them goes through the permission.
- When an account is deleted its tokens are deleted too: before a live credential could be left on disk for something that no longer existed.
- Heads up: accounts and tokens stored with the previous scheme are not migrated. In practice they could not be used —no application could access an account— so they have to be added again.
vasak-accounts (new)#
- Online account management system
- Encrypted via a keyring of access keys
- Whitelist system for the apps that can access
polkit-vasak (new)#
- Authentication was being done in the unprivileged process, which is precisely the one that cannot guarantee it.
vasak-file-manager#
- Performance fixes are made
- Split view fixed
- An option to decompress files is added
- Drag and Drop is replaced with Wayland’s
- The options modal is improved
- Minor bugs are fixed
- Translations are fixed
- The preview for files is changed
- Copying, moving and deleting now show progress and can be cancelled. Before a large copy gave no sign of life and could not be interrupted. Cancellation also works inside a large directory, not just between files.
- New Task centre: an indicator in the top bar lists the operations in progress with their progress bar and a button to cancel each one. The tracking already existed in the code but nothing displayed it.
- Undo (Ctrl+Z) for copy, move, rename, create, compress and send to trash. It never offers to undo something it cannot reverse: a permanent delete is not reversible, and if a file was overwritten while resolving a conflict, undo does not delete it —because the original can no longer be recovered and deleting it would destroy data instead of restoring it. Undo’s own deletions go to the trash.
- Compress a selection into zip, tar.gz, tar.xz, tar.bz2, tar or 7z, with real progress and cancellation (which also deletes the half-written archive).
- Fixed: when extracting a
.rar, the destination was interpreted as a name prefix instead of as a folder. - Fixed: two tabs opening the same folder could leave an orphaned change watcher.
- The package did not build. 24 type errors broke the packaging build. Along the way the eject button for removable drives was fixed, which was implemented but never wired up.
- The SMB password travelled on the command line, visible to any user on the machine; and sshfs connections did not verify the host key.
- The installed application showed the translation keys instead of the texts. Now it starts translated and in the session language.
vasak-galery#
- Dependencies are updated
- The
.desktopfile is fixed - Photos are sorted by their real capture date (EXIF), not by the file date, which changes when they are copied.
- The library scan is parallel and shows progress.
vasakos-icon-theme#
- The start button no longer shows an apple. The ten
start-hereicons the theme inherited from WhiteSur drew the Apple logo; they now carry the VasakOS lynx silhouette. It is drawn on purpose at small size: the original logo is 38 fine strokes over a gradient, and at 16 px it turns into a smudge, so scaling it down was not an option. - 32 icons that were invisible in the dark theme are now visible: file manager badges, emotes, file types (fonts, libraries, encrypted files), the folder in list view, and the start button itself. They were dark grey on a dark background, 1.1:1 contrast. The underlying cause was that the dark variant shared several directories with the light one through symlinks, and since it was the same file there was no way to recolour them. It costs 3 MB more of installed size.
- 809 new icons brought over from the original project: more than 30 applications (DevPod, Embellish, Virustotal, Gauge, Sly, Flacon, Lunacy, Reqable, Agenda, Affinity and others) that until now showed the generic icon.
- Fixed: Flare, TubeFeeder and Pipeline were left without an icon by a symlink cycle.
Libraries#
tauri-plugin-config-manager#
- The cache expires after changing
toggleThemein order not to be unresponsive to a theme change
tauri-plugin-drag-and-drop-wayland (new)#
- A new library is created to handle drag and drop in Wayland