v0.3.2
Documentation
Other Changes
- Added support for Qt 6.12
- Added support for Hyprland’s new workspace address format.
Bug Fixes
- Fixed main process crashes on pam subprocess misbehavior.
- Fixed crashes when attempting to create or modify session locks reentrantly.
- Fixed networking state breaking after restarting NetworkManager.
- Fixed accessibility information not being provided for Quickshell windows.
- Fixed
WlSessionLockSurface.screenbeing null and never updating with a real screen on monitor plug. - Fixed
NotificationAction.textnot accepting text updates. - Fixed PipeWire route volume writes for devices without a reported volume step.
- Fixed a crash when quitting or reloading while a
Loaderwas still loading asynchronously. - Fixed future
Socketconnection attempts after a failed connection attempt. - Fixed Open wifi networks showing as Unknown security.
v0.3.1
Documentation
Bug Fixes
- Fixed
ScreencopyViewnot displaying when only lock surfaces are shown. - Fixed
WlSessionLockSurface.visiblecrashing if accessed before backing surface creation. - Fixed
MprisPlayerreturningrateforminRateandmaxRate. - Fixed missing/wrong change signals on various properties.
- Fixed session lock crashes on sleep, wake, DPMS, and unlocking.
QsWindow.updatesEnabledmakes sure windows are redrawn when set to true.- Fixed potential crashes from usage of
WindowsetProjection.screensduring monitor unplug. - Fixed crashes from accessing freed objects laundered through a
ScriptModel. - Fixed crashes when a wifi network disappear.
- Fixed unhandled notifications sending
NotificationClosedout of order. - Fixed
qs killnot waiting for the process to exit. - Fixed IPC calls from children of a crashed and relaunched process crashing.
- Fixed
JsonAdaptercrashing when deserializing new objects into an array. - Fixed
Toplevel.unsetRectanglecrashing when calle. - Fixed intermittent
FileViewcrashes when updating watched files. - Fixed
ColorQuantizerdeletion crashing if an operation was live. - Fixed crashes when failing to create a
ScreencopyView. - Fixed
PwNodePeakMonitorcrashing when sampling a stream with mismatched channels from the node. - Fixed unsetting
PopupAnchor.itemcausing a crash. - Fixed hiding the last
PanelWindowon screen causing a crash under X11. - Fixed crashes when
ScriptModel.valuesis set while processing previously set values.
v0.3.0
Documentation
Breaking Changes
Config paths are no longer canonicalized
This fixes nix configs changing shell-ids on rebuild as the shell id is now derived from the symlink path. Configs with a symlink in their path will have a different shell id.
Shell ids are used to derive the default config / state / cache folders, so those files will need to be manually moved if using a config behind a symlinked path without an explicitly set shell id.
New Features
- Added support for creating Polkit agents.
- Added support for creating wayland idle inhibitors.
- Added support for wayland idle timeouts.
- Added support for inhibiting wayland compositor shortcuts for focused windows.
- Added the ability to override Quickshell.cacheDir with a custom path.
- Added minimized, maximized, and fullscreen properties to FloatingWindow.
- Added the ability to handle move and resize events to FloatingWindow.
- Pipewire service now reconnects if pipewire dies or a protocol error occurs.
- Added pipewire audio peak detection.
- Added network management support.
- Added support for grabbing focus from popup windows.
- Added support for IPC signal listeners.
- Added Quickshell version checking and version gated preprocessing.
- Added a way to detect if an icon is from the system icon theme or not.
- Added vulkan support to screencopy.
- Added generic WindowManager interface implementing ext-workspace.
- Added ext-background-effect window blur support.
- Added per-corner radius support to Region.
- Added ColorQuantizer region selection.
- Added dialog window support to FloatingWindow.
- Added lua config support to Hyprland module.
Other Changes
- IPC operations filter available instances to the current display connection by default.
- PwNodeLinkTracker ignores sound level monitoring programs.
- Replaced breakpad with cpptrace.
- Reloads are prevented if no file content has changed.
- Added
QS_DISABLE_FILE_WATCHERenvironment variable to disable file watching. - Added
QS_DISABLE_CRASH_HANDLERenvironment variable to disable crash handling. - Added
QS_CRASHREPORT_URLenvironment variable to allow overriding the crash reporter link. - Added
AppIdpragma andQS_APP_IDenvironment variable to allow overriding the desktop application ID. - Added
DropExpensiveFontspragma andQS_DROP_EXPENSIVE_FONTSenvironment variable which avoids loading fonts which may cause lag and excessive memory usage if many variants are used. - Added
DefaultEnvpragma which sets an environment variable if not already set. - Unrecognized pragmas are no longer a hard error for future backward compatibility.
Bug Fixes
- Fixed volume control breaking with pipewire pro audio mode.
- Fixed volume control breaking with bluez streams and potentially others.
- Fixed volume control breaking for devices without route definitions.
- Fixed escape sequence handling in desktop entries.
- Fixed volumes not initializing if a pipewire device was already loaded before its node.
- Fixed hyprland active toplevel not resetting after window closes.
- Fixed hyprland ipc window names and titles being reversed.
- Fixed a hyprland ipc crash when refreshing toplevels before workspaces.
- Fixed missing signals for system tray item title and description updates.
- Fixed asynchronous loaders not working after reload.
- Fixed asynchronous loaders not working before window creation.
- Fixed memory leak in IPC handlers.
- Fixed ClippingRectangle related crashes.
- Fixed crashes when monitors are unplugged.
- Fixed crashes when default pipewire devices are lost.
- Fixed ToplevelManager not clearing activeToplevel on deactivation.
- Desktop action order is now preserved.
- Fixed partial socket reads in greetd and hyprland on slow machines.
- Worked around Qt bug causing crashes when plugging and unplugging monitors.
- Fixed HyprlandFocusGrab crashing if windows were destroyed after being passed to it.
- Fixed ScreencopyView pixelation when scaled.
- Fixed JsonAdapter crashing and providing bad data on read when using JsonObject.
- Fixed JsonAdapter sending unnecessary property changes for primitive values.
- Fixed JsonAdapter serialization for lists.
- Fixed pipewire crashes after hotplugging devices and changing default outputs.
- Fixed launches failing for
--daemonizeon some systems. - Fixed screencopy crashing when used across GPUs.
- Fixed pipewire volumes not working for some pw-pulse clients.
- Fixed nulls in Toplevel.screens after unplugging a monitor.
- Fixed some DbusMenu updates being dropped from apps.
Packaging Changes
glibandpolkithave been added as dependencies when compiling with polkit agent support.vulkan-headershas been added as a build-time dependency for screencopy (Vulkan backend support).breakpadhas been replaced bycpptrace, which is far easier to package, and theCRASH_REPORTERcmake variable has been replaced withCRASH_HANDLERto stop this from being easy to ignore.DISTRIBUTOR_DEBUGINFO_AVAILABLEwas removed as it is no longer important without breakpad.libdrmis now unconditionally required as a direct dependency.
v0.2.1
Documentation
New Features
- Changes to desktop entries are now tracked in real time.
Other Changes
- Added support for Qt 6.10
Bug Fixes
- Fixed volumes getting stuck on change for pipewire devices with few volume steps.
- Fixed a crash when running out of disk space to write log files.
- Fixed a rare crash when disconnecting a monitor.
- Fixed build issues preventing cross compilation from working.
- Fixed dekstop entries with lower priority than a hidden entry not being hidden.
- Fixed desktop entry keys with mismatched modifier or country not being discarded.
- Fixed greetd hanging when authenticating with a fingerprint.
v0.2.0
Documentation
Breaking Changes
- Files outside of the shell directory can no longer be referenced with relative paths, e.g. ’../../foo.png’.
- PanelWindow’s Automatic exclusion mode now adds an exclusion zone for panels with a single anchor.
QT_QUICK_CONTROLS_STYLEandQT_STYLE_OVERRIDEare ignored unless//@ pragma RespectSystemStyleis set.
New Features
Root-Relative Imports
Quickshell 0.2 comes with a new method to import QML modules which is supported by QMLLS. This replaces “root:/” imports for QML modules.
The new syntax is import qs.path.to.module, where path/to/module is the path to
a module/subdirectory relative to the config root (qs).
Better LSP support
LSP support for Singletons and Root-Relative imports can be enabled by creating a file named
.qmlls.ini in the shell root directory. Quickshell will detect this file and automatically
populate it with an LSP configuration. This file should be gitignored in your configuration,
as it is system dependent.
The generated configuration also includes QML import paths available to Quickshell, meaning
QMLLS no longer requires the -E flag.
Bluetooth Module
Quickshell can now manage your bluetooth devices through BlueZ. While authenticated pairing has not landed in 0.2, support for connecting and disconnecting devices, basic device information, and non-authenticated pairing are now supported.
Other Features
- Added
HyprlandTopleveland related toplevel/window management APIs in the Hyprland module. - Added
Quickshell.execDetached(), which spawns a detached process without aProcessobject. - Added
Process.exec()for easier reconfiguration of process commands when starting them. - Added
FloatingWindow.title, which allows changing the title of a floating window. - Added
signal QsWindow.closed(), fired when a window is closed externally. - Added support for inline replies in notifications, when supported by applications.
- Added
DesktopEntry.startupWmClassandDesktopEntry.heuristicLookup()to better identify toplevels. - Added
DesktopEntry.commandwhich can be run as an alternative toDesktopEntry.execute(). - Added
//@ pragma Internal, which makes a QML component impossible to import outside of its module. - Added dead instance selection for some subcommands, such as
qs logandqs list.
Other Changes
Quickshell.shellRoothas been renamed toQuickshell.shellDir.- PanelWindow margins opposite the window’s anchorpoint are now added to exclusion zone.
- stdout/stderr or detached processes and executed desktop entries are now hidden by default.
- Various warnings caused by other applications Quickshell communicates with over D-BUS have been hidden in logs.
- Quickshell’s new logo is now shown in any floating windows.
Bug Fixes
- Fixed pipewire device volume and mute states not updating before the device has been used.
- Fixed a crash when changing the volume of any pipewire device on a sound card another removed device was using.
- Fixed a crash when accessing a removed previous default pipewire node from the default sink/source changed signals.
- Fixed session locks crashing if all monitors are disconnected.
- Fixed session locks crashing if unsupported by the compositor.
- Fixed a crash when creating a session lock and destroying it before acknowledged by the compositor.
- Fixed window input masks not updating after a reload.
- Fixed PanelWindows being unconfigurable unless
screenwas set under X11. - Fixed a crash when anchoring a popup to a zero sized
Item. - Fixed
FileViewcrashing ifwatchChangeswas used. - Fixed
SocketServersockets disappearing after a reload. - Fixed
ScreencopyViewhaving incorrect rotation when displaying a rotated monitor. - Fixed
MarginWrapperManagerbreaking pixel alignment of child items when centering. - Fixed
IpcHandler,NotificationServerandGlobalShortcutnot activating with certain QML structures. - Fixed tracking of QML incubator destruction and deregistration, which occasionally caused crashes.
- Fixed FloatingWindows being constrained to the smallest window manager supported size unless max size was set.
- Fixed
MprisPlayer.lengthSupportednot updating reactively. - Fixed normal tray icon being ignored when status is
NeedsAttentionand no attention icon is provided. - Fixed
HyprlandWorkspace.activate()sending invalid commands to Hyprland for named or special workspaces. - Fixed file watcher occasionally breaking when using VSCode to edit QML files.
- Fixed crashes when screencopy buffer creation fails.
- Fixed a crash when wayland layer surfaces are recreated for the same window.
- Fixed the
QsWindowattached object not working when usingWlrLayershelldirectly. - Fixed a crash when attempting to create a window without available VRAM.
- Fixed OOM crash when failing to write to detailed log file.
- Prevented distro logging configurations for Qt from interfering with Quickshell commands.
- Removed the “QProcess destroyed for running process” warning when destroying
Processobjects. - Fixed
ColorQuantizerprinting a pointer to an error message instead of an error message. - Fixed notification pixmap rowstride warning showing for correct rowstrides.
v0.1.0
Documentation
Initial release