Plasma Workspace issueshttps://invent.kde.org/plasma/plasma-workspace/-/issues2024-03-19T17:58:33Zhttps://invent.kde.org/plasma/plasma-workspace/-/issues/119Do Not Disturb: When fullscreen applications are present2024-03-19T17:58:33ZKristen McWilliamDo Not Disturb: When fullscreen applications are presentCurrently DnD can be enabled automatically when:
- screens are mirrored
- screen sharing
![image](/uploads/5780293f4a2a33a1fc11cbd81658a067/image.png)
It would be nice to have an option to automatically enable DnD when a fullscreen ap...Currently DnD can be enabled automatically when:
- screens are mirrored
- screen sharing
![image](/uploads/5780293f4a2a33a1fc11cbd81658a067/image.png)
It would be nice to have an option to automatically enable DnD when a fullscreen application is present. This would be useful for presentations, watching movies, etc.
Thoughts?Kristen McWilliamKristen McWilliamhttps://invent.kde.org/plasma/plasma-workspace/-/issues/118Move org.kde.plasma.private.sessions module elsewhere, so other projects won'...2024-03-11T13:17:05Zivan tkachenkoMove org.kde.plasma.private.sessions module elsewhere, so other projects won't run into dependency cyclesCurrently KScreenLocker requires plasma-workspace as a runtime-only dependency for CI, otherwise tests would fail. However, plasma-workspace is a chunky dependency which in turn also requires KWin etc. so we'd rather avoid that. KScreenL...Currently KScreenLocker requires plasma-workspace as a runtime-only dependency for CI, otherwise tests would fail. However, plasma-workspace is a chunky dependency which in turn also requires KWin etc. so we'd rather avoid that. KScreenLocker only needs it for the `org.kde.plasma.private.sessions` QML module; but last time I checked that module unfortunately [required PW::KWorkspace library on its own](https://invent.kde.org/plasma/plasma-workspace/-/blob/cbad5501ab22db51fc554b6bb46b64688c03fab9/components/sessionsprivate/CMakeLists.txt#L21) which isn't ideal.
See https://invent.kde.org/plasma/kscreenlocker/-/merge_requests/199#note_890449https://invent.kde.org/plasma/plasma-workspace/-/issues/117Follow-up from "[kcms/users] Fix sizing in fingerprint dialog"2024-02-20T23:11:26ZNate GrahamFollow-up from "[kcms/users] Fix sizing in fingerprint dialog"The following discussion from !3928 should be addressed:
- [ ] @ngraham started a [discussion](https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3928#note_875971): (+4 comments)
> Since internally this component has ...The following discussion from !3928 should be addressed:
- [ ] @ngraham started a [discussion](https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3928#note_875971): (+4 comments)
> Since internally this component has an icon that could benefit from being displayed at a standard size, I'm not convinced about these hardcoded implicit sizes set here. I'd prefer for the component to internally set an implicit size that's based on the size of the icon, plus the size of the progress circle, plus optionally any needed exterior padding.6Nicolas FellaNicolas Fellahttps://invent.kde.org/plasma/plasma-workspace/-/issues/116Sort appium tests by creating folders2024-03-14T15:44:03ZFushan WenSort appium tests by creating foldersWith more and more appium tests being added, it's necessary to sort them so people will not get lost.
- applets
- kcms
- ...With more and more appium tests being added, it's necessary to sort them so people will not get lost.
- applets
- kcms
- ...Fushan WenFushan Wenhttps://invent.kde.org/plasma/plasma-workspace/-/issues/115RFC: replace "icon spacing" settings in Icon Task Manager and System Tray wit...2024-02-17T19:51:04ZJin Lium.liu.jin@gmail.comRFC: replace "icon spacing" settings in Icon Task Manager and System Tray with a panel-level "density" settingThe main problem with the current setting: in the default panel (as in the screenshot in https://kde.org), the user would perceive Kickoff and Icon Task Manager as a single row of icons, instead of two applets. But if the user change the...The main problem with the current setting: in the default panel (as in the screenshot in https://kde.org), the user would perceive Kickoff and Icon Task Manager as a single row of icons, instead of two applets. But if the user change the icon spacing setting, the spacing between the Kickoff icon and the rest of icons becomes uneven.
So I propose lifting the setting up into the panel config dialog. All applets in the panel should set their margin according to the panel setting (supposedly implemented in some common code). And containers like Task Manager and System Tray should also set their internal margins.
Moreover, when the panel is full, it could reduce the density (just like Task Manager currently does), so all applets shrink simultaneously. Thus, while the user-facing "density" setting probably has only three options, e.g. Compact, Normal, Spacious, the actual setting passed to applets should be in px.https://invent.kde.org/plasma/plasma-workspace/-/issues/114Change how the brightness applet and nightcolor KCM interacts2024-02-27T02:43:01ZJin Lium.liu.jin@gmail.comChange how the brightness applet and nightcolor KCM interactsBUG: 468068
Status quo:
1. In the KCM, I can select a night color **schedule** from: sunset, time of day, always on, always off.
1. In the applet, I can turn a switch that enables the **schedule**, not night color itself.
Problems:
1. ...BUG: 468068
Status quo:
1. In the KCM, I can select a night color **schedule** from: sunset, time of day, always on, always off.
1. In the applet, I can turn a switch that enables the **schedule**, not night color itself.
Problems:
1. I can temporarily disable night color when it's _scheduled_ to be on, by turning off the switch in the applet. But I can't temporarily enable night color when it's _scheduled_ to be off.
1. So when a time-based schedule is in effect, and it's daytime, turning the switch seems to have no effect, which can be very confusing.
1. When a night color schedule is selected, and the switch is off, the applet icon turns to a lightbulb crossed by a red line. It is wrong: a) the applet has other function - brightness control - so when night color is off, it should show the brightness icon. b) even if it should indicate that night color is off, the icon should be just the night color icon crossed.
Proposal:
1. In the KCM, merge "always off" and "always on" into a "controlled manually" option.
1. In the applet, the state of the switch should always reflect whether night color is currently in effect. Turning the switch should immediately enable/disable the night color effect, regardless of the _schedule_ selected in KCM.
1. The state of the switch should persist over sessions.
1. The schedule selected in KCM should act as if it turns on / turns off the switch in the applet at the specified time (even if the machine is powered off then). It should not interfere with the user turning the switch manually.
1. When night color is off, the tray icon should be "brightness", regardless of the _schedule_ selected in KCM.
1. The "night color" hotkey in kwin should be functionally identical to the switch in applet.
1. Show a notification when a scheduled switch happens.
@ngraham @vladzhttps://invent.kde.org/plasma/plasma-workspace/-/issues/113plasmashell coredump from theme's org.kde.plasma.desktop-layout.js2024-01-18T21:43:08ZBenjamin Fleschplasmashell coredump from theme's org.kde.plasma.desktop-layout.jsWhen you write `var panel = new panel(3)` in `contents/layouts/org.kde.plasma.desktop-layout.js` of a global theme, plasmashell will coredump.
This can be also triggered with `qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.e...When you write `var panel = new panel(3)` in `contents/layouts/org.kde.plasma.desktop-layout.js` of a global theme, plasmashell will coredump.
This can be also triggered with `qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "getApiVersion(1).newPanel(3)"`
`Error: org.freedesktop.DBus.Error.NoReply `\
`Remote peer disconnected`
newPanel is defined here: https://github.com/KDE/plasma-workspace/blob/master/shell/scripting/scriptengine_v1.cpp#L430
```plaintext
Process 93207 (plasmashell) of user 1000 dumped core.
Stack trace of thread 93207:
#0 0x000070da868ac83c n/a (libc.so.6 + 0x8e83c)
#1 0x000070da8685c668 raise (libc.so.6 + 0x3e668)
#2 0x000070da891eb41c _ZN6KCrash19defaultCrashHandlerEi (libKF5Crash.so.5 + 0x741c)
#3 0x000070da8685c710 n/a (libc.so.6 + 0x3e710)
#4 0x000070da8936ec7f _ZNK6Plasma11Containment6coronaEv (libKF5Plasma.so.5 + 0x34c7f)
#5 0x000060d4b00b780f n/a (plasmashell + 0x6b80f)
#6 0x000060d4b00c1a42 n/a (plasmashell + 0x75a42)
#7 0x000060d4b00c1cfa n/a (plasmashell + 0x75cfa)
#8 0x000060d4b00c1e94 n/a (plasmashell + 0x75e94)
#9 0x000060d4b007a2e5 n/a (plasmashell + 0x2e2e5)
#10 0x000060d4b007b193 n/a (plasmashell + 0x2f193)
#11 0x000070da8867cff4 n/a (libQt5Qml.so.5 + 0x27cff4)
#12 0x000070da8857ebe1 n/a (libQt5Qml.so.5 + 0x17ebe1)
#13 0x000070da885801b7 _ZNK3QV413QObjectMethod12callInternalEPKNS_5ValueES3_i (libQt5Qml.so.5 + 0x1801b7)
#14 0x000070da885a5fbd _ZN3QV47Runtime8CallName4callEPNS_15ExecutionEngineEiPNS_5ValueEi (libQt5Qml.so.5 + 0x1a5fbd)
#15 0x000070da885903ea n/a (libQt5Qml.so.5 + 0x1903ea)
#16 0x000070da88593d24 n/a (libQt5Qml.so.5 + 0x193d24)
#17 0x000070da885420b4 n/a (libQt5Qml.so.5 + 0x1420b4)
#18 0x000070da8859170b n/a (libQt5Qml.so.5 + 0x19170b)
#19 0x000070da88593d24 n/a (libQt5Qml.so.5 + 0x193d24)
#20 0x000070da8853731a _ZN3QV48Function4callEPKNS_5ValueES3_iPKNS_16ExecutionContextE (libQt5Qml.so.5 + 0x13731a)
#21 0x000070da8856eeed _ZN3QV46Script3runEPKNS_5ValueE (libQt5Qml.so.5 + 0x16eeed)
#22 0x000070da885040bb _ZN9QJSEngine8evaluateERK7QStringS2_i (libQt5Qml.so.5 + 0x1040bb)
#23 0x000060d4b00bf2a4 n/a (plasmashell + 0x732a4)
#24 0x000060d4b00a0d2f n/a (plasmashell + 0x54d2f)
#25 0x000060d4b009f705 n/a (plasmashell + 0x53705)
#26 0x000070da870d0e27 n/a (libQt5Core.so.5 + 0x2d0e27)
#27 0x000070da895c4846 _ZN11KActivities8Consumer20serviceStatusChangedENS0_13ServiceStatusE (libKF5Activities.so.5 + 0xc846)
#28 0x000070da870d0e27 n/a (libQt5Core.so.5 + 0x2d0e27)
#29 0x000070da895d64a2 n/a (libKF5Activities.so.5 + 0x1e4a2)
#30 0x000070da895d7f47 n/a (libKF5Activities.so.5 + 0x1ff47)
#31 0x000070da870d0fe3 n/a (libQt5Core.so.5 + 0x2d0fe3)
#32 0x000070da8831ead4 _ZN23QDBusPendingCallWatcher8finishedEPS_ (libQt5DBus.so.5 + 0x57ad4)
#33 0x000070da870c3964 _ZN7QObject5eventEP6QEvent (libQt5Core.so.5 + 0x2c3964)
#34 0x000070da87d788ff _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent (libQt5Widgets.so.5 + 0x1788ff)
#35 0x000070da8709bef8 _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt5Core.so.5 + 0x29bef8)
#36 0x000070da870a0e5b _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData (libQt5Core.so.5 + 0x2a0e5b)
#37 0x000070da870e6ec8 n/a (libQt5Core.so.5 + 0x2e6ec8)
#38 0x000070da85db7f69 n/a (libglib-2.0.so.0 + 0x59f69)
#39 0x000070da85e16367 n/a (libglib-2.0.so.0 + 0xb8367)
#40 0x000070da85db6162 g_main_context_iteration (libglib-2.0.so.0 + 0x58162)
#41 0x000070da870ead0c _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2ead0c)
#42 0x000070da8709ac04 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x29ac04)
#43 0x000070da8709c0a3 _ZN16QCoreApplication4execEv (libQt5Core.so.5 + 0x29c0a3)
#44 0x000060d4b007016c n/a (plasmashell + 0x2416c)
#45 0x000070da86845cd0 n/a (libc.so.6 + 0x27cd0)
#46 0x000070da86845d8a __libc_start_main (libc.so.6 + 0x27d8a)
#47 0x000060d4b0070515 n/a (plasmashell + 0x24515)
Stack trace of thread 93228:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93212:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da86efb524 _ZN14QWaitCondition4waitEP6QMutex14QDeadlineTimer (libQt5Core.so.5 + 0xfb524)
#3 0x000070da88923004 n/a (libQt5WaylandClient.so.5 + 0x73004)
#4 0x000070da86ef379a n/a (libQt5Core.so.5 + 0xf379a)
#5 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#6 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93231:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93217:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93229:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93214:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93216:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93215:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93219:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93218:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93232:
#0 0x000070da86920f6f __poll (libc.so.6 + 0x102f6f)
#1 0x000070da85e162b6 n/a (libglib-2.0.so.0 + 0xb82b6)
#2 0x000070da85db6162 g_main_context_iteration (libglib-2.0.so.0 + 0x58162)
#3 0x000070da870ead0c _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2ead0c)
#4 0x000070da8709ac04 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x29ac04)
#5 0x000070da86ef7576 _ZN7QThread4execEv (libQt5Core.so.5 + 0xf7576)
#6 0x000070da886c5a20 n/a (libQt5Qml.so.5 + 0x2c5a20)
#7 0x000070da86ef379a n/a (libQt5Core.so.5 + 0xf379a)
#8 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#9 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93226:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93227:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93230:
#0 0x000070da868a74ae n/a (libc.so.6 + 0x894ae)
#1 0x000070da868a9d40 pthread_cond_wait (libc.so.6 + 0x8bd40)
#2 0x000070da793139dc n/a (radeonsi_dri.so + 0x1139dc)
#3 0x000070da7930ad1c n/a (radeonsi_dri.so + 0x10ad1c)
#4 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#5 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93211:
#0 0x000070da86920f6f __poll (libc.so.6 + 0x102f6f)
#1 0x000070da85e162b6 n/a (libglib-2.0.so.0 + 0xb82b6)
#2 0x000070da85db6162 g_main_context_iteration (libglib-2.0.so.0 + 0x58162)
#3 0x000070da870ead0c _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2ead0c)
#4 0x000070da8709ac04 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x29ac04)
#5 0x000070da86ef7576 _ZN7QThread4execEv (libQt5Core.so.5 + 0xf7576)
#6 0x000070da882dfa9a n/a (libQt5DBus.so.5 + 0x18a9a)
#7 0x000070da86ef379a n/a (libQt5Core.so.5 + 0xf379a)
#8 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#9 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
Stack trace of thread 93213:
#0 0x000070da86920f6f __poll (libc.so.6 + 0x102f6f)
#1 0x000070da8892305d n/a (libQt5WaylandClient.so.5 + 0x7305d)
#2 0x000070da86ef379a n/a (libQt5Core.so.5 + 0xf379a)
#3 0x000070da868aa9eb n/a (libc.so.6 + 0x8c9eb)
#4 0x000070da8692e7cc n/a (libc.so.6 + 0x1107cc)
ELF object binary architecture: AMD x86-64
```https://invent.kde.org/plasma/plasma-workspace/-/issues/112plasma.loadSerializedLayout(layout) not restoring panels on proper display (w...2024-01-18T21:43:15ZBenjamin Fleschplasma.loadSerializedLayout(layout) not restoring panels on proper display (wayland)As a developer creating a global theme, it is currently not possible to place a panel on a specific display in a multi-monitor setup. Wayland has deprecated the concept of "primary displays", so desktops in `var desktopsArray = desktopsF...As a developer creating a global theme, it is currently not possible to place a panel on a specific display in a multi-monitor setup. Wayland has deprecated the concept of "primary displays", so desktops in `var desktopsArray = desktopsForActivity(currentActivity());` cannot be discerned.
When you have a multi-monitor setup (3 screens) and create new theme with the "Plasma Global Theme Explorer", and then click "Layout from current Plasma Setup" and "defaults from current setup" buttons, it creates a file in `contents/layouts/org.kde.plasma.desktop-layout.js` which has `var layout = {...}`, a JSON object that contains all the panels.
However, when this script is run, all panels get placed on the central display instead of one panel on each display.
This issue concerns the default script that is provided by the "plasma global theme explorer". After reading the plasma docs and deep diving into this issue, it seems there is no way to programatically place panels on a certain desktop - so this seems like a bug to me.https://invent.kde.org/plasma/plasma-workspace/-/issues/111Get current script folder in layout script2024-01-18T21:43:22ZBenjamin FleschGet current script folder in layout scriptIn a global theme `./contents/layouts/org.kde.plasma.desktop-layout.js` it is currently not possible to get the current script folder, e.g. to apply a wallpaper which is packaged in the same folder. Common javascript things such as `__fi...In a global theme `./contents/layouts/org.kde.plasma.desktop-layout.js` it is currently not possible to get the current script folder, e.g. to apply a wallpaper which is packaged in the same folder. Common javascript things such as `__filename`, `__dirname` and `path` are obviously not supported in the plasma theme scripting engine.
In order to apply a wallpaper file which is packaged in a global theme, one needs to resort to a very hacky way to get the current folder:
```
function getCurrentDirectory() {
try {
__filename
} catch (e) {
return e.stack.toString().split("file://")[1].split("org.kde.plasma.desktop-layout.js")[0]
}
throw "cannot get current directory"
}
// set wallpaper for all desktops
var desktopsArray = desktopsForActivity(currentActivity());
for( var j = 0; j < desktopsArray.length; j++) {
desktopsArray[j].wallpaperPlugin = 'org.kde.image';
desktopsArray[j].currentConfigGroup = Array("Wallpaper", "org.kde.image", "General")
desktopsArray[j].writeConfig("Image", getCurrentDirectory() + "/../../wallpapers/my-wallpaper.svg")
desktopsArray[j].writeConfig("FillMode", "1")
}
```
I'm creating this issue to document my workaround and ask for a cleaner way to reference files which are stored in the global theme folder alongside the plasma scripts.https://invent.kde.org/plasma/plasma-workspace/-/issues/110lookandfeeltool -l / -a inconsistent (symlinked global themes)2024-01-18T21:43:28ZBenjamin Fleschlookandfeeltool -l / -a inconsistent (symlinked global themes)When a plasma theme is symlinked from ~/.local/share/plasma/lookandfeel/foobar to the theme development folder in ~/src/my-theme, then lookandfeeltool -l does not list the theme, but the theme can be applied with lookandfeeltool -a fooba...When a plasma theme is symlinked from ~/.local/share/plasma/lookandfeel/foobar to the theme development folder in ~/src/my-theme, then lookandfeeltool -l does not list the theme, but the theme can be applied with lookandfeeltool -a foobar.
The theme works correctly, because it is shown in the "global theme settings" of KDE plasma.
So either lookandfeeltool -l should correctly symlinked themes just as "global theme settings" does, or lookandfeeltool -a should refuse to enable symlinked themes.https://invent.kde.org/plasma/plasma-workspace/-/issues/109Port the weather dataengine2024-01-03T23:18:35ZFushan WenPort the weather dataengineThe weather dataengine complicates the weather widget because many data are processed in the widget side instead of the dataengine side. To simplify the widget, the ion interface will need some refactoring to provide the information that...The weather dataengine complicates the weather widget because many data are processed in the widget side instead of the dataengine side. To simplify the widget, the ion interface will need some refactoring to provide the information that suits the weather widget. There should be a day model to provide weather forecast so the widget can list them using a ListView. The widget should show information from the provider based on their capabilities instead of checking undefined values.
- [ ] Improve the current ion interface to suit the weather widget
- [ ] Make a day model and an hour model
- [ ] Add more weather providers
# WeatherModel (unit: day)
| Property | Type | Description |
|-----------------|----------------------------|------------------------------------|
| source | string | weather source |
| updateInterval | int | |
| location | string or int or [double,double] | Type depends on the weather source |
| temperatureUnit | enum | |
| pressureUnit | enum | |
| visibilityUnit | enum | |
| speedUnit | enum | |
| | | |
| count | int | Total forecast days |
| roleNames | hash | |
| updateTime | time | |
| hourlyModel | model | |
# roleNames
| Name | Type | Description |
|------------------------|--------|-------------------------------------|
| capabilities | flags | |
| condition | enum | to weather icon, see https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2 |
| currentTemperature | double | |
| currentFeelTemperature | double | |
| averageTemperature | double | |
| maxTemperature | double | |
| minTemperature | double | |
| humidity | double | |
| pressure | double | |
| pressureTendency | enum | |
| visibility | double | |
| windSpeed | double | |
| windDirection | enum | |
| windGust | double | |
| dewPoint | double | |
| precipitation | double | mm |
| detailsLink | url | Link to see more details of the day |
| notices | model | List of weather notices |
# capabilities
| Enum | Property |
|------------------------|------------------------|
| HourlyForecast | hourlyModel |
| DayNightForecast | |
| CurrentTemperature | currentTemperature |
| CurrentFeelTemperature | currentFeelTemperature |
| AverageTemperature | averageTemperature |
| MaxTemperature | maxTemperature |
| MinTemperature | minTemperature |
| Humidity | humidity |
| Pressure | pressure |
| Visibility | visibility |
| WindSpeed | windSpeed |
| WindDirection | windDirection |
| WindGust | windGust |
| DewPoint | dewPoint |
| Precipitation | precipitation |
| DetailsLink | detailsLink |
| Notices | notices |
# units
| temperatureUnit | pressureUnit | visibilityUnit | speedUnit |
|-----------------|--------------|----------------|-----------|
| Celsius | Pa | m | m/s |
| Fahrenheit | atm | km | km/h |
| | bar | | mph |
# pressureTedency
- Steady
- Rising
- Falling
# windDirection
- North
- NorthNorthEast
- NorthEast
- EastNorthEast
- East
- EastSouthEast
- SouthEast
- SouthSouthEast
- South
- SouthWest
- WestSouthWest
- West
- WestNorthWest
- NorthWest
- NorthNorthWest
# Ref
- Discussion in KWeatherCore: https://invent.kde.org/libraries/kweathercore/-/issues/7#note_8397006.1https://invent.kde.org/plasma/plasma-workspace/-/issues/108Follow-up from "kcm/autostart: fix status check for running entry"2023-12-17T16:57:58ZShubham AroraFollow-up from "kcm/autostart: fix status check for running entry"The following discussion from !3691 should be addressed:
- [ ] @nicolasfella started a [discussion](https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3691#note_833146): (+1 comment)
> What I'd like to see is in the C...The following discussion from !3691 should be addressed:
- [ ] @nicolasfella started a [discussion](https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3691#note_833146): (+1 comment)
> What I'd like to see is in the C++ code having an enum like
>
> ```
> enum State {
> Active,
> Inactive,
> Activating,
> Deactivating,
> Failed,
> };
> ```
> and mapping the strings we get from systemd to those. Then we expose this enum to QML where we then can compare enum values instead of strings (which is always a bit brittle).
>
> But the patch as-is works and could go inShubham AroraShubham Arorahttps://invent.kde.org/plasma/plasma-workspace/-/issues/107lockscreen: A use-case for Kirigami.ScenePosition2023-12-05T20:55:38Zivan tkachenkolockscreen: A use-case for Kirigami.ScenePositionThis procedural code feels like it could be replaced with Kirigami.ScenePosition attached property:
_lookandfeel/org.kde.breeze/contents/lockscreen/MainBlock.qml:_
```qml
//the y position that should be ensured visible when the on s...This procedural code feels like it could be replaced with Kirigami.ScenePosition attached property:
_lookandfeel/org.kde.breeze/contents/lockscreen/MainBlock.qml:_
```qml
//the y position that should be ensured visible when the on screen keyboard is visible
property int visibleBoundary: mapFromItem(loginButton, 0, 0).y
onHeightChanged: visibleBoundary = mapFromItem(loginButton, 0, 0).y + loginButton.height + Kirigami.Units.smallSpacing
```https://invent.kde.org/plasma/plasma-workspace/-/issues/106Review from SUSE security team2023-12-05T15:36:36ZChristophe MarinReview from SUSE security teamQuoting from https://bugzilla.opensuse.org/1217186
It seems we actually never reviewed this fontinst service before. The code for
it is pretty old. I am not very happy with the D-Bus interface and the actions
implemented there.
To star...Quoting from https://bugzilla.opensuse.org/1217186
It seems we actually never reviewed this fontinst service before. The code for
it is pretty old. I am not very happy with the D-Bus interface and the actions
implemented there.
To start off, the only exported D-Bus method, org.kde.fontinst.manage, is
actually a one-catches all method that multiplexes the following individual
function calls:
```
QString method = args["method"].toString();
// qDebug() << method;
if ("install" == method) {
result = install(args);
} else if ("uninstall" == method) {
result = uninstall(args);
} else if ("move" == method) {
result = move(args);
} else if ("toggle" == method) {
result = toggle(args);
} else if ("removeFile" == method) {
result = removeFile(args);
} else if ("reconfigure" == method) {
result = reconfigure();
} else if ("saveDisabled" == method) {
result = saveDisabled();
```
These should all be individual D-Bus methods with individual Polkit actions
associated with them. Only then will it be possible to actually benefit from
Polkit by changing authentication settings on a fine grained level.
The single manage action that we have now is set to `auth_admin_keep` for the
logged in user. Although this way only people that have admin access anyway
are able to call the method, there are a couple of worries here. A look at the
individual sub-actions:
- install(): this can be used to copy arbitrary file paths to arbitrary
locations, the new files end up with mode 0644.
- uninstall(): this allows to remove arbitrary file paths, as long as their
parent directories have a writable bit set.
- move(): this allows to move arbitrary paths complete with new owner uid and
group gid to arbitrary new locations.
- toggle(): this takes raw XML that also seems to specify font paths that are
to be enabled or disabled.
- removeFile(): does what is says on the label.
- configure(): saves modified font directories and invokes a small bash script
`fontinst_x11` that prepares font directories and triggers a font refresh at
the X server.
This range of freedom looks like the fontinst helper is actually the new kio
D-Bus layer that allows arbitrary file operations. It is way beyond the scope
of what a fontinst helper should do. If an administrator wants to allow
regular users to modify system fonts by lower the authentication requirements
for this Polkit action then these regular uses will easily be able to gain
full root privileges by using this D-Bus API.
I strongly recommend investing some efforts here for KDE6 with a major
interface change:
- provide separate D-Bus methods and Polkit actions for each "sub-method" we
currently have.
- instead of providing arbitrary source paths, the D-Bus clients should pass on
an already open file descriptor. This way it is made sure that the caller
actually has permissions to access the file.
- instead of providing arbitrary destination paths, the helper should make sure
that fonts are only installed in system font directories.
- instead of allowing arbitrary uid/gid ownership changes the font files
should always be owned by root:root mode 0644 if the service is running on
the system bus. If the service is running on the session bus then no
ownership change will be possible anyway (since the service is running
unprivileged).
Otherwise the code could certainly benefit from investing some love, in parts
it still uses C APIs (like `fopen()`) and it generally looks pretty
convoluted.
Here is one additional misc finding:
- in `Misc::setFilePerms()` there is a `umask()` save & restore call around a
`chmod()` invocation. This doesn't make sense. `chmod()` doesn't even use
the umask.https://invent.kde.org/plasma/plasma-workspace/-/issues/105TODO: Audit PanelConfigView constructor2023-12-04T11:13:56Zivan tkachenkoTODO: Audit PanelConfigView constructorThe blanket cleanup of warnings in https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3605#note_820942 has uncovered a potential bug in PanelConfigView constructor which didn't use `QWindow *parent` argument passed to it.
N...The blanket cleanup of warnings in https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3605#note_820942 has uncovered a potential bug in PanelConfigView constructor which didn't use `QWindow *parent` argument passed to it.
Note that `PopupPlasmaWindow` takes a `QWindow *parent`David EdmundsonDavid Edmundsonhttps://invent.kde.org/plasma/plasma-workspace/-/issues/104TODO: Audit font installer KCM2023-11-29T18:36:06Zivan tkachenkoTODO: Audit font installer KCMThe blanket cleanup of warnings in https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3605 has uncovered some questionable pieces of code which have not been touched for years (maybe decades even).
Someday we should look cl...The blanket cleanup of warnings in https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3605 has uncovered some questionable pieces of code which have not been touched for years (maybe decades even).
Someday we should look closer and make sure everything is alright with it.https://invent.kde.org/plasma/plasma-workspace/-/issues/103krunner text input regressions since 2f440982372023-12-06T20:38:24ZFabian Vogtkrunner text input regressions since 2f440982372f440982378a7e11d4659493a978fbd1ebd107bd set `rightPadding: 0` which means the text goes beneath the icon and the cursor even beyond the text field:
![Screenshot_20231126_002809](/uploads/c5b7d060218650dd569857c21310e23b/Screenshot_2023...2f440982378a7e11d4659493a978fbd1ebd107bd set `rightPadding: 0` which means the text goes beneath the icon and the cursor even beyond the text field:
![Screenshot_20231126_002809](/uploads/c5b7d060218650dd569857c21310e23b/Screenshot_20231126_002809.png)
The placeholder text is not clipped at all and escapes the text field:
![Screenshot_20231126_003157](/uploads/03384ca42f1aa4b861dc33b641ac2b73/Screenshot_20231126_003157.png)
It also does not scroll along with the input text:
![Screenshot_20231126_003317](/uploads/e8dd8cbbbe9c4f462ebb7afc94140fa8/Screenshot_20231126_003317.png)
Especially the latter appears to be hard to fix, maybe 2f440982378a7e11d4659493a978fbd1ebd107bd should be reverted for now?
CC @alexAlexander LohnauAlexander Lohnauhttps://invent.kde.org/plasma/plasma-workspace/-/issues/102License of .desktop files2023-11-09T11:16:51ZDavid EdmundsonLicense of .desktop filesThe following discussion from !3458 should be addressed:
- [ ] @sitter started a [discussion](https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3458#note_796759): (+4 comments)
> missing .license fileThe following discussion from !3458 should be addressed:
- [ ] @sitter started a [discussion](https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3458#note_796759): (+4 comments)
> missing .license filehttps://invent.kde.org/plasma/plasma-workspace/-/issues/101RFC: Enable force passing tests in plasma-workspace2024-01-26T17:43:15ZFushan WenRFC: Enable force passing tests in plasma-workspaceDiscussion from !3450 : a consensus is needed to enable force passing tests in plasma-workspace.
Background incident: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3315 was merged without passing testlockscreen.
Main ...Discussion from !3450 : a consensus is needed to enable force passing tests in plasma-workspace.
Background incident: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3315 was merged without passing testlockscreen.
Main obstacles:
- Some tests are flaky
- Nobody steps up to fix the failing tests
Solutions:
- `ctest-arguments: '--repeat until-pass:5'`
- If a test keeps failing but nothing goes wrong in reality, it means the test is outdated and can be disabled or removed until someone cares about it, which is totally fine given the limited development resource. The only unacceptable thing is **merging something with a obviously related test failing while the test still passes in master**.https://invent.kde.org/plasma/plasma-workspace/-/issues/100Lock/Logout plasmoid doesn't work as expected.2023-10-25T14:18:55ZJisu WoniuLock/Logout plasmoid doesn't work as expected.# Description
After upgraded to `plasma-workspace` v5.27.9-1 in Arch Linux, the lock/logout plasmoid didn't work.
# Error message
```plaintext
file:///usr/share/plasma/plasmoids/org.kde.plasma.lock_logout/contents/ui/lockout.qml:104:1...# Description
After upgraded to `plasma-workspace` v5.27.9-1 in Arch Linux, the lock/logout plasmoid didn't work.
# Error message
```plaintext
file:///usr/share/plasma/plasmoids/org.kde.plasma.lock_logout/contents/ui/lockout.qml:104:13: Kirigami.Icon - Kirigami is neither a type nor a namespace
```
![Screenshot](/uploads/bd51fd0482fdd8e275f3c62a973909dd/Screenshot_20231025_052039.png)
# Arch Linux bug report
<https://bugs.archlinux.org/task/80075>