quickshell/changelog/v0.2.0.md
2025-07-26 22:50:32 -07:00

5.1 KiB

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_STYLE and QT_STYLE_OVERRIDE are ignored unless //@ pragma RespectSystemStyle is 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 HyprlandToplevel and related toplevel/window management APIs in the Hyprland module.
  • Added Quickshell.execDetached(), which spawns a detached process without a Process object.
  • 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.startupWmClass and DesktopEntry.heuristicLookup() to better identify toplevels.
  • Added DesktopEntry.command which can be run as an alternative to DesktopEntry.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 log and qs list.

Other Changes

  • Quickshell.shellRoot has been renamed to Quickshell.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 screen was set under X11.
  • Fixed a crash when anchoring a popup to a zero sized Item.
  • Fixed FileView crashing if watchChanges was used.
  • Fixed SocketServer sockets disappearing after a reload.
  • Fixed ScreencopyView having incorrect rotation when displaying a rotated monitor.
  • Fixed MarginWrapperManager breaking pixel alignment of child items when centering.
  • Fixed IpcHandler, NotificationServer and GlobalShortcut not 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.lengthSupported not updating reactively.
  • Fixed normal tray icon being ignored when status is NeedsAttention and 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 QsWindow attached object not working when using WlrLayershell directly.
  • 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 Process objects.
  • Fixed ColorQuantizer printing a pointer to an error message instead of an error message.
  • Fixed notification pixmap rowstride warning showing for correct rowstrides.