zeroxoneafour / polonium

Autotile manager for Plasma 6

Home Page:https://zeroxoneafour.github.io/polonium/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rotating layout on a per screen basis

root-hal9000 opened this issue · comments

Is your feature request related to a problem? Please describe.
I use a 3 monitor setup where one screen is rotated vertically in portrait orientation for reading documents, etc. the normal layout of vertically split tiles is great for the normal screens, but makes tiles too thin to be usable on vertical monitors.

Describe the solution you'd like
To set rotation on a per screen basis.

Describe alternatives you've considered
Just floating screens on that monitor or a single window on that screen.

Additional context
This might not be possible or hard to implement, and certainly not a huge issue, just throwing out the idea as a "nice to have" feature. Thanks!

Have you tried using the per-desktop settings menu?

@zeroxoneafour I have to admit, I have no idea which menu you are talking about... I don't see anything about desktops in polonium settings, and opening the polonium settings popup will show the same setting on any screen I open it in (e.g.: I open the polonium settings popup on my vertical monitor, check rotate layout, now open polonium settings in the other screen, also shows checked)

The layout opened by Meta+\ shouldn't be the same in every desktop. There is an individual checkbox for rotate layout that shouldn't apply to other screens. You will have to set this for each desktop or activity on that screen, but the changes should preserve after logout if you install the dbus saver.

Just tested again to be sure, but it is definitely applying the same settings to all screens on all activities. You only notice when a something is retiled/moved, but yeah. I wasn't using extra desktops, just activities, but I added a virtual desktop to test and same thing.
Are you saying the dbus saver is required for this to work in the first place, or just to persist after logout?
Any other useful output I can offer for you to see?

Very strange. Can I get a log?

yeah, sorry - not sure why I didn't do that in the first place. Here's one attached, with the "Polonium DBG: true" lines removed for convenience. It's a few minutes of me changing the setting in different screens over two separate activities, and moving windows between displays to test the layout (using the kwin move to screen shortcut)

poloniumlog.txt

Adding some more info in case it's helpful:

kscreen-doctor -o

Output: 1 DP-2
        enabled
        connected
        priority 3
        DisplayPort
        Modes:  0:1680x1050@60*!  1:1280x1024@75  2:1280x1024@60  3:1440x900@60  4:1280x800@60  5:1152x864@75  6:1280x720@60  7:1024x768@75  8:1024x768@70  9:1024x768@60  10:800x600@75  11:800x600@72  12:800x600@60  13:800x600@56  14:640x480@75  15:640x480@73  16:640x480@60 
        Geometry: 6058,0 1313x2100
        Scale: 0.8
        Rotation: 8
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: incapable
        Wide Color Gamut: incapable
        ICC profile: none
Output: 2 DP-3
        enabled
        connected
        priority 1
        DisplayPort
        Modes:  0:3840x2160@60*!  1:2560x1440@60  2:1920x1200@60  3:1920x1080@60  4:1920x1080@60  5:1920x1080@60  6:1920x1080@50  7:1920x1080@24  8:1600x1200@60  9:1680x1050@60  10:1280x1024@75  11:1280x1024@60  12:1280x800@60  13:1152x864@75  14:1280x720@60  15:1280x720@60  16:1280x720@50  17:1024x768@75  18:1024x768@60  19:800x600@75  20:800x600@60  21:720x576@50  22:720x480@60  23:640x480@75  24:640x480@60  25:640x480@60 
        Geometry: 2400,21 3658x2058
        Scale: 1.05
        Rotation: 1
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: incapable
        Wide Color Gamut: incapable
        ICC profile: none
Output: 3 DP-4
        enabled
        connected
        priority 2
        DisplayPort
        Modes:  0:1920x1080@60*!  1:1600x900@60  2:1280x1024@75  3:1280x1024@60  4:1152x864@75  5:1024x768@75  6:1024x768@60  7:800x600@75  8:800x600@60  9:640x480@75  10:640x480@60 
        Geometry: 0,330 2400x1350
        Scale: 0.8
        Rotation: 1
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: incapable
        Wide Color Gamut: incapable
        ICC profile: none

trimmed inxi output:

System:
  Host: hal9000 Kernel: 6.8.1-arch1-1 arch: x86_64 bits: 64
  Desktop: KDE Plasma v: 6.0.2 Distro: EndeavourOS
Machine:
  Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
  Mobo: ASUSTeK model: PRIME B650-PLUS v: Rev 1.xx
    serial: <superuser required> UEFI: American Megatrends v: 0809
    date: 10/23/2022
Battery:
  ID-1: hidpp_battery_0 charge: 100% condition: N/A
CPU:
  Info: 12-core model: AMD Ryzen 9 7900X bits: 64 type: MT MCP cache:
    L2: 12 MiB
  Speed (MHz): avg: 5080 min/max: 400/5733 cores: 1: 5147 2: 5147 3: 5147
    4: 5147 5: 5147 6: 5147 7: 5014 8: 5014 9: 5014 10: 5014 11: 5014 12: 5014
    13: 5147 14: 5147 15: 5147 16: 5147 17: 5147 18: 5147 19: 5014 20: 5014
    21: 5014 22: 5014 23: 5014 24: 5014
Graphics:
  Device-1: NVIDIA TU104 [GeForce RTX 2070 SUPER] driver: nvidia v: 550.67
  Device-2: AMD Raphael driver: amdgpu v: kernel
  Device-3: Logitech Webcam C930e driver: snd-usb-audio,uvcvideo type: USB
  Display: wayland server: X.org v: 1.21.1.11 with: Xwayland v: 23.2.4
    compositor: kwin_wayland driver: X: loaded: amdgpu,nvidia
    unloaded: modesetting dri: radeonsi gpu: nvidia,amdgpu resolution:
    1: 1313x2100 2: 3657x2057 3: 2400x1350
  API: EGL v: 1.5 drivers: nvidia,radeonsi,swrast,zink
    platforms: gbm,wayland,x11,surfaceless,device
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 550.67
    renderer: NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2
  API: Vulkan v: 1.3.279 drivers: nvidia surfaces: xcb,xlib,wayland

According to the log, you tried to set the engine config for the DP-2 display once and the DP-3 display 3 times. Can you take another log using the latest v1.0b2 release and attempt to individually set settings once for each monitor? The Polonium DBG: true lines should be removed in the latest release and there is a bit of change to the handling of the settings.

Also, is it just the rotation setting that isn't sticking, or are other settings such as window layout and insertion also not staying on desktops?

Ok, so I did testing before and after updating to v1.02b, attaching both logs.
I tried to be consistent in the testing of how I changed the settings in each monitor, but I am pretty much falling asleep and probably wasn't (I just now saw you said once, I went back and changed each monitor twice in I think in the same order - again, sleep lol)
Rotation behavior: same after update.
As for other settings - only one setting sticks on a per screen basis: the engine. I was able to keep that for each monitor.
But rotate layout, and insertion point get changed across all screens when I change in one screen.
Let me know what else I can do to help with further info.
PS.: saw the shout-out on the release, thanks haha

polonium_beforeupdate.txt
polonium_afterupdate.txt

PS.: What is the KWin Engine? Just no tiling?

I think I fixed it. There was an issue with the rotating checkbox not updating properly which has been fixed, but there were also some other issues with the configs not applying. Try the latest commit and see if it works. If you don't want to set these changes after each logout, I highly recommend using the dbus-saver systemd service.

The KWin engine is the default Plasma fancy zones-esque tiling, just modded a bit to make it more useable (per-desktop tiles, engine integration, etc.)

Yes! fixed for me! Both rotation and insertion point settings stick on a per screen, per activity basis. Thank you! I was going to close the issue, but I will leave it up to you, not sure if you wait for general release for that.
Thanks again!
Edit: trying the dbus saver next!
edit 2: works like a charm, suggestion: add a note on readme about starting the service, since at least in my case it was still inactive/dead after logout and log in despite enabling first

The per monitor savings did the trick. Thank you.
But having those settings visible in the main settings page would be helpful. At least have some text mentioning the per monitor solution would save the users some time.