Commit graph

642 commits

Author SHA1 Message Date
91dcb41d22
services/pipewire: destroy qml ifaces early to avoid user callbacks
Consumers of defaultAudio*Changed signals can run code between
safeDestroy being called and PwObjectIface destruction due to
signal connection order. This change destroys ifaces earlier so they
are nulled by the time a changed signal is fired from destruction,
preventing access between ~PwNode() and ~QObject() completion.

Fixes #116 #122 #124
2025-07-17 00:22:58 -07:00
201c559dcd
core: add Internal pragma 2025-07-16 20:13:59 -07:00
78e3874ac6
tooling: add per-shell tooling lock to prevent races 2025-07-16 17:47:28 -07:00
986749cdb9
tooling: add automatic QMLLS support for new imports and singletons 2025-07-16 14:35:46 -07:00
4d8055f1cd
build: fix PostReloadHook resolution in LSP 2025-07-15 19:03:27 -07:00
a45fc03c7d
service/tray: fix missing documentation for invokables
'};' prior to invokables caused the docgen regex to miss them
2025-07-15 15:58:56 -07:00
ipg0
c40074dd56
service/notifications: add inline-reply action support
Signed-off-by: ipg0 <pyromancy00@gmail.com>
2025-07-15 15:49:59 -07:00
3dfb7d8827
core/window: handle graphics context loss 2025-07-15 15:40:10 -07:00
a2146f6394
core/window: add closed() signal to all window types 2025-07-15 15:39:55 -07:00
5706c09e6f
core/window: clean up window interface property proxies 2025-07-15 14:06:26 -07:00
5ac9096c1c
Revert "core/region: use QList over QQmlListProperty for child regions"
This reverts commit 0c9c5be8dd.

Using QList breaks the default property usage.
2025-07-14 02:56:34 -07:00
05fbead660
x11/panelwindow: calc screen geom with exclusions of other panels
Fixes a typo in 9604302 which calculated panel stack offsets from the
current panel instead of others in the stack.
2025-07-13 22:54:20 -07:00
478aa2bda1
core/window: run polish in onExposed instead of polishItems
Fixes hyprland visible regions created before window expose.
2025-07-13 22:27:44 -07:00
cee1f5837e
service/mpris: make lengthSupported bindable and notify for changes
Fixes #109
2025-07-13 20:32:51 -07:00
71334bfcaf
core/desktopentry: expose exec command and use execDetached on call 2025-07-13 20:05:54 -07:00
de25787451
io/process: null stdio channels in detached processes 2025-07-13 20:05:54 -07:00
b011cd9d33
core/window: set FloatingWindow default max size to QWINDOWSIZE_MAX
Was previously zero, which will shrink the window to 1px depending on
the display server.
2025-07-13 20:05:53 -07:00
1e1ba93713
core/window: add manual PanelWindow tester 2025-07-13 18:35:41 -07:00
59d29bb254
x11/panelwindow: use Qt window default screen if none is provided
Fixes panels not updating geometry or attachments under X if a screen
was not explicitly provided by the user.
2025-07-13 18:30:48 -07:00
9604302415
x11/panelwindow: convert to bindable properties 2025-07-13 17:50:17 -07:00
479ff58f84
wayland/layershell: support opposite-to-exclusion edge margins 2025-07-13 17:08:12 -07:00
3b4ebc5f16
wayland/layershell: support auto exclusive zone without constraint 2025-07-13 17:02:18 -07:00
bb206e3a19
core/window: run window-level polish along with item polish
Fixes input masks not updating after a reload.
2025-07-12 22:02:33 -07:00
0c9c5be8dd
core/region: use QList over QQmlListProperty for child regions 2025-07-12 22:02:31 -07:00
49a3752b9d
core: correctly deregister QML incubators on destruction
Previously we'd try to cast the QObject* sender from
QObject::destroyed to a QQmlIncubationController*. This will always
return nullptr because C++ destructors change the type of the object
and the QQmlIncubationController destructor has already run at this
point. We now store controllers as QObject*s.

Fixes #108
2025-07-11 00:38:58 -07:00
026aac3756
build: add icon and desktop file 2025-07-10 21:57:10 -07:00
d7079b7524
core: allow qml scanner to detect namespaced and versioned imports 2025-07-10 04:28:05 -07:00
6f774af11e
core/colorquant: print image source url vs pointer on err 2025-07-10 04:05:16 -07:00
5703fbae21
wayland/lock: handle null window in configure()
Has caused a crash.
2025-07-10 04:01:00 -07:00
07ea4de248
io/ipchandler: add registry logs 2025-07-10 03:50:11 -07:00
2629e211fa
crash: initialize QApplication after logging to run cat filter 2025-07-10 03:40:55 -07:00
b4c62b8ff9
core: only log warn+ from quickshell.paths 2025-07-10 03:40:30 -07:00
1af08c0c52
core: only call QmlScanner::scanDir() on directories
Removes a bogus warning message.
2025-07-10 03:12:43 -07:00
4b35d7b51b
core: support qs. imports 2025-07-10 01:50:53 -07:00
3d594e16dd
core/log: track default logging categories
Fixes a bug in fb37be7 which ignored default logging categories due to
skipping QLoggingRegistry's filter.
2025-07-08 13:49:06 -07:00
5d7e07508a
bluetooth: fix defaultAdapter reactivity
Fixes #100
2025-07-07 02:21:50 -07:00
87d99b866f
services/pipewire: destroy bound audio object when node is destroyed
Fixes a leak and prevents a UAF via device volume signals
derefing the freed node.

Fixes #91
2025-07-04 20:29:50 -07:00
7eff415b25
core/qmlglobal: re-add shellRoot as a deprecated property 2025-07-04 20:06:22 -07:00
3cc7ced3a0
core/window: fix QsWindow being null for WlrLayershell 2025-07-04 17:58:55 -07:00
fb37be7611
core/log: ignore on-disk logging configs for quickshell* rules.
Fixes fedora hiding all command output by default.
2025-07-04 16:43:01 -07:00
9708d8212a
core/reloader: trigger onPostReload if launched post-reload
This is similar to the check in Reloadable, and fixes a number of hard
to debug issues with Process, IpcHandler, NotificationServer, and
GlobalShortcut not working depending on where you put them in a QML file.
2025-07-04 16:02:14 -07:00
0e6518a706
core/command: improve dead instance selection
Prints dead instances if they exist, as well as allowing dead instance
selection for a substring if no live instances exist.
2025-07-02 22:47:19 -07:00
86591f122d
io/process: mask the "QProcess destroyed for running process" warn 2025-07-02 20:16:47 -07:00
f681e2016f
bluetooth: add bluetooth integration
Missing support for things that require an agent, but has most basics.

Closes #17
2025-07-01 00:25:16 -07:00
1d02292fbf
hyprland/ipc: actually set lastIpcObject 2025-06-27 04:09:14 -07:00
f842b84a5a
widgets/wrapper: round child position when centering
Fixes misalignment when resizeChild is false and wrapper width is odd.
2025-06-26 12:43:59 -07:00
d949f91347
wayland/screencopy: apply output transform to wlr screencopy
Note that this only fixes output copies, and not toplevel copies.
Toplevel copies are harder because a toplevel can be on more than
one output. Hopefully we'll all be using image-copy-capture before
this one comes up.

Fixes #75
2025-06-25 12:34:00 -07:00
27f97c3283
wayland/toplevel: refactor toplevel output tracking to its own file 2025-06-24 19:38:34 -07:00
20c3da01f1
io/fileview: null watcher ptr after deletion to avoid UAF
Fixes #69
2025-06-21 12:57:15 -07:00
8be18c05ed
hyprland/ipc: expose HyprlandToplevel jsons 2025-06-20 21:31:44 -07:00