libkscreen merge requestshttps://invent.kde.org/plasma/libkscreen/-/merge_requests2024-02-26T16:50:32Zhttps://invent.kde.org/plasma/libkscreen/-/merge_requests/184allow using the values in the EDID as the color profile for outputs2024-02-26T16:50:32ZXaver Huglallow using the values in the EDID as the color profile for outputsDepends on https://invent.kde.org/libraries/plasma-wayland-protocols/-/merge_requests/72 and https://invent.kde.org/plasma/kwin/-/merge_requests/5308Depends on https://invent.kde.org/libraries/plasma-wayland-protocols/-/merge_requests/72 and https://invent.kde.org/plasma/kwin/-/merge_requests/53086.1https://invent.kde.org/plasma/libkscreen/-/merge_requests/183:cherries: Round up output geometry2024-02-20T18:30:28ZYifan Zhu:cherries: Round up output geometryUnder fractional scaling, output screens can have non-integral sizes.
Previous code uses QSizeF::toSize(), which rounds to the nearest
integer. This sometimes results in different screens sharing one pixel
at the edge, which causes BUG 4...Under fractional scaling, output screens can have non-integral sizes.
Previous code uses QSizeF::toSize(), which rounds to the nearest
integer. This sometimes results in different screens sharing one pixel
at the edge, which causes BUG 464842 and BUG 477791.
Implement Output::explicitLogicalSizeInt() and
Config::logicalSizeForOutputInt to explicitly round up non-integral
sizes, and use them in calculating output geometry.
BUG: 464842
BUG: 477791
(cherry picked from commit 6f797a908360de5c9654cd6cbd1dcc170b35207c)5.27Yifan ZhuYifan Zhuhttps://invent.kde.org/plasma/libkscreen/-/merge_requests/178Draft: Introduce KScreenLid2024-01-27T21:07:59ZJakob PetsovitsDraft: Introduce KScreenLidWIP patch attempting to address https://invent.kde.org/plasma/powerdevil/-/issues/22. Will remove draft status once it's fully working. Goes together with the [kscreen-liblid branch on jpetso/powerdevil](https://invent.kde.org/jpetso/pow...WIP patch attempting to address https://invent.kde.org/plasma/powerdevil/-/issues/22. Will remove draft status once it's fully working. Goes together with the [kscreen-liblid branch on jpetso/powerdevil](https://invent.kde.org/jpetso/powerdevil/-/tree/work/jpetso/kscreen-liblid?ref_type=heads).
---
This is a new library that only has one class to access the system's
display lid status.
The API of the class was extracted from PowerDevil which was already
abstracting this functionality. Here we are doing in a generic way
so it can be used elsewhere.
The implementation requires separate backends, replacing the
previously used UPower D-Bus API for lid monitoring which has
been deprecated for a long time and may disappear anytime now.
For open/closed status, this WIP commit accesses systemd's login1
D-Bus API which has been recommended as replacement for UPower
lid monitoring. However, the specification for the login1 interface
does not guarantee a PropertiesChanged signal for the "LidClosed"
property and indeed, this implementation does not appear to receive
any such events. So we'll probably have to use something else. [**Edit:** As of systemd 256, the PropertiesChanged signal for "LidClosed" is supported! So this code should work for v256 and beyond.]
Compared to UPower, the login1 interface does not expose whether
a lid is present on the system. So we need something else for
at least this part anyway, if we want to keep showing or hiding
lid-related properties such as the lid action field in PowerDevil's
"Energy Saving" KCM.
For determining lid presence, this WIP commit uses KWin's
InputDevice D-Bus API. This is only implemented for Wayland,
so we'll need to factor it out into a separate class similar to
KScreen::Dpms before merging.https://invent.kde.org/plasma/libkscreen/-/merge_requests/132XRandR: Touchscreen mapping2023-12-11T17:01:10ZIlya Pominovipominov@astralinux.ruXRandR: Touchscreen mappingMove touchscreen mapping code from kscreen to libkscreen
Note: Revert commit https://invent.kde.org/plasma/kscreen/-/commit/09b988e6628093e7d4c8b92cd8a0a1fe2da2f77e after taking MR https://invent.kde.org/plasma/kscreen/-/merge_requests/212Move touchscreen mapping code from kscreen to libkscreen
Note: Revert commit https://invent.kde.org/plasma/kscreen/-/commit/09b988e6628093e7d4c8b92cd8a0a1fe2da2f77e after taking MR https://invent.kde.org/plasma/kscreen/-/merge_requests/212https://invent.kde.org/plasma/libkscreen/-/merge_requests/131XRandR: Add detection of tablet mode2023-12-11T17:02:03ZIlya Pominovipominov@astralinux.ruXRandR: Add detection of tablet modeTrack list of input devices via XInput. If there is a touchscreen,
consider that the tablet mode is available. If there are no other
pointing devices, consider tablet mode is engaged.
Use the "kscreen-ignore-tablet-mode" property to ign...Track list of input devices via XInput. If there is a touchscreen,
consider that the tablet mode is available. If there are no other
pointing devices, consider tablet mode is engaged.
Use the "kscreen-ignore-tablet-mode" property to ignore an input device:
xinput set-prop <id> --type=int --format=8 kscreen-ignore-tablet-mode 1https://invent.kde.org/plasma/libkscreen/-/merge_requests/121Avoid updates for Xwayland if there are no changes for it2023-04-17T13:34:08ZAlexander VolkovAvoid updates for Xwayland if there are no changes for ithttps://invent.kde.org/plasma/libkscreen/-/merge_requests/120Draft: XRandR: Use RandR 1.5 to change monitors scaling2023-04-17T21:18:45ZIlya Pominovipominov@astralinux.ruDraft: XRandR: Use RandR 1.5 to change monitors scalingUse RandR 1.5 to change monitors scaling instead Xft.dpi.
This will allow you to set the scale separately for each monitor, and
the Qt applications will be able to change the scale without restarting.
These changes are possible after ta...Use RandR 1.5 to change monitors scaling instead Xft.dpi.
This will allow you to set the scale separately for each monitor, and
the Qt applications will be able to change the scale without restarting.
These changes are possible after taking MR to Qt:
https://codereview.qt-project.org/c/qt/qtbase/+/468398
Also, libxcb should be fixed:
https://gitlab.freedesktop.org/xorg/lib/libxcb/-/merge_requests/47
Currently you need to delete the previously added monitor before it
configuring because xserver not following randrproto:
https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1113https://invent.kde.org/plasma/libkscreen/-/merge_requests/57Request passing unit tests on Linux and BSD2022-06-16T06:04:51ZDavid EdmundsonRequest passing unit tests on Linux and BSDDavid EdmundsonDavid Edmundsonhttps://invent.kde.org/plasma/libkscreen/-/merge_requests/3Use ConfigMonitor instead of XRandrOutput to try to enable newly attached dis...2021-03-29T10:04:54ZJeremy WhitingUse ConfigMonitor instead of XRandrOutput to try to enable newly attached display.This is failing still to enable a display that gets attached after having 0
displays attached, but I'm not sure why...
journalctl output after adding this patch and booting with no display then attaching
```
Sep 18 08:54:36 ness kscree...This is failing still to enable a display that gets attached after having 0
displays attached, but I'm not sure why...
journalctl output after adding this patch and booting with no display then attaching
```
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xrandr: Output 68 : connected = true , enabled = false
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: RRScreenChangeNotify
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Window: 67108869
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Root: 306
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Rotation: "Rotate_0"
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Size ID: 65535
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Size: 1024 768
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: SizeMM: 271 203
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: RRNotify_OutputChange
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Output: 68
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: CRTC: 0
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Mode: 0
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Rotation: "Rotate_0"
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Connection: "Connected"
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xcb.helper: Subpixel Order: 0
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xrandr: XRandROutput 68 update
m_connected: 0
m_crtc QObject(0x0)
CRTC: 0
MODE: 0
Connection: 0
Primary: false
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xrandr: Output 68 : connected = true , enabled = false
Sep 18 08:54:36 ness kscreen_backend_launcher[1509]: kscreen.xrandr: Emitting configChanged()
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: backendConfigChanged called, newConfig: KScreen::Config(
KScreen::Output( 68 "VGA1" connected disabled pos: QPoint(0,0) res: QSize(->
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: backendConfigChanged called, iterating over outputs to watch for config changes
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: Checking output, edid: 0x0 is connected: true is enabled: false
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: Requesting edid
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: Requesting missing EDID for outputs (68)
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: edidReady called
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: edidReady output id: 68
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: config: KScreen::Config(
KScreen::Output( 68 "VGA1" connected disabled pos: QPoint(0,0) res: QSize(->
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: Received edid: ""
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: setting output edid, setting enabled
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: Calling updateConfigs with config: KScreen::Config(
KScreen::Output( 68 "VGA1" connected enabled pos: QPoint(0,0) res: QSize(19>
Sep 18 08:54:36 ness org_kde_powerdevil[1358]: Applying config: KScreen::Config(
KScreen::Output( 68 "VGA1" connected enabled pos: QPoint(0,0) res: QSize(19>
Sep 18 08:54:37 ness plasmashell[906]: backendConfigChanged called, newConfig: KScreen::Config(
KScreen::Output( 68 "VGA1" connected disabled pos: QPoint(0,0) res: QSize(-1, -1) m>
Sep 18 08:54:37 ness plasmashell[906]: backendConfigChanged called, iterating over outputs to watch for config changes
Sep 18 08:54:37 ness plasmashell[906]: Checking output, edid: 0x0 is connected: true is enabled: false
Sep 18 08:54:37 ness plasmashell[906]: Requesting edid
Sep 18 08:54:37 ness plasmashell[906]: Requesting missing EDID for outputs (68)
Sep 18 08:54:37 ness plasmashell[906]: edidReady called
Sep 18 08:54:37 ness plasmashell[906]: edidReady output id: 68
Sep 18 08:54:37 ness plasmashell[906]: config: KScreen::Config(
KScreen::Output( 68 "VGA1" connected disabled pos: QPoint(0,0) res: QSize(-1, -1) m>
Sep 18 08:54:37 ness plasmashell[906]: Received edid: ""
Sep 18 08:54:37 ness plasmashell[906]: setting output edid, setting enabled
Sep 18 08:54:37 ness plasmashell[906]: Calling updateConfigs with config: KScreen::Config(
KScreen::Output( 68 "VGA1" connected enabled pos: QPoint(0,0) res: QSize(1920, 1080>
Sep 18 08:54:37 ness plasmashell[906]: Applying config: KScreen::Config(
KScreen::Output( 68 "VGA1" connected enabled pos: QPoint(0,0) res: QSize(1920, 1080>
```Daniel Vrátildvratil@kde.orgDaniel Vrátildvratil@kde.orghttps://invent.kde.org/plasma/libkscreen/-/merge_requests/2Enable new output devices when they are connected.2023-01-05T04:49:27ZJeremy WhitingEnable new output devices when they are connected.When a new output device is connected this change makes the new
display become enabled by default.
The largest display size reported by the display is used by default.When a new output device is connected this change makes the new
display become enabled by default.
The largest display size reported by the display is used by default.Daniel Vrátildvratil@kde.orgDaniel Vrátildvratil@kde.org