phkaeser / wlmaker

Wayland Maker - A Wayland compositor inspired by Window Maker
Apache License 2.0
149 stars 5 forks source link

How to configure rotation / transformation #97

Closed andypiper closed 1 month ago

andypiper commented 2 months ago

I'm trying out wlmaker on the MNT Pocket Reform.

It installs and starts just fine - but - the display on the Pocket Reform needs to be rotated by 90 or 270 degrees. Is it possible to change the display orientation (and ideally, scale) in the config file?

andypiper commented 2 months ago

For clarity, this works fine when I run in a window under another compositor with rotation already applied, but from going through the code I cannot see that there is an existing configuration option that would allow wlmaker to be the root compositor and have a transformation applied on the display. I think there may be support for a scale already but don't see it documented.

phkaeser commented 2 months ago

Hej Andy! Happy to hear you've been able to install and run it successfully! (although not rotated correctly).

Unfortunately, wlmaker does currently not (yet) support output transformations.

A quick read of wlroots suggests that 90-degree rotations on the (default) output should only be one function call (wlr_output_set_transform); plus some wiring-up of a corresponding configuration setting. (hence declaring it a "good firs issue" for any contributor).

I was aiming to work on multi-output support for v0.5; but may try to add this next. (note: I'm on vacation for a few weeks, so don't hold your breath... :) )

phkaeser commented 2 months ago

Started looking into this at https://github.com/phkaeser/wlmaker/tree/output-transform.

Finding so far:

Will need more thinking.

phkaeser commented 2 months ago

Hhhmm... actually, noticing that the pointer coordinate mapping works correctly when running it on a virtual terminal; it "just" failes when running in window mode.

phkaeser commented 2 months ago

@andypiper -- I'd be curious if you could give it a try. It'll need compiling from head (that is: at #104), and to set Transformation to a suitable value, eg. to Rotate90 in https://github.com/phkaeser/wlmaker/blob/main/etc/wlmaker.plist and use --config_file=... accordingly.

andypiper commented 2 months ago

So I have it compiled. I uninstalled wlmaker from Debian unstable, and followed the BUILD and RUN docs.

I am pretty sure that my config file is being read - I changed the terminal that gets started by default from foot to alacritty so I believe this is picking the config file I give it. If I modify Scale, this works when I run wlmaker in a window. However, Rotate90 or Rotate270 are not doing anything, either in a window, or if I run wlmaker in place of sway as my default compositor. I do not see anything in the DEBUG level of logging to show that this is either being picked up from the config file, or that there is an attempt to apply it.

One other strange (?) thing, if I copy the .plist file to $HOME/.wlmaker.plist and just try starting it, then wlmaker fails to start with a file not found error.

phkaeser commented 2 months ago

Oops, embarrassing: Added with #104, but accidentally merged the actual "set_transform" away in #105. Fixing that (and adding INFO log for what it applies) in #108 . My apologies! Can you pull head and try once more?

The config file issue is unexpected => #109 for that.

andypiper commented 2 months ago

I hoped to provide a fast follow-up here... but I've been stymied, potentially by Debian unstable changes. I'm getting a linker error related to an AMD API (!) from libgallium, and mesa-libgallium was updated late yesterday... attempting to pull it out now results in a stack of libgl* dependency issues. I dug fairly far here and even went so far as blasting the local dependencies for wlmaker and starting over; and, trying a second clean install of the OS on the Pocket Reform and going from there, but that just wanted to install the same package.

tl;dr I haven't been able to rebuild and re-test yet, but I'm still interested, and hopefully I've contributed a couple of useful bug reports in the meantime 🙂 will try again when I can.

ideasman42 commented 1 month ago

Testing wlmaker and got it running.

From attempting to setup multiple vertical monitors, it looks like the Output option currently assumes a single monitor. Could this be configurable by output name?

phkaeser commented 1 month ago

@ideasman42 -- the code is currently not built to handle multiple outputs.

Question to you: Are you looking for...

  1. A way to specify one Output for wlmaker to use (but OK to display on a single monitor only), or
  2. multi-output support, ie. the workspace spanning across multiple screens?

The former may be doable with limited effort; the latter will be a major update, though.

ideasman42 commented 1 month ago

@ideasman42 -- the code is currently not built to handle multiple outputs.

Question to you: Are you looking for...

1. A way to specify one Output for wlmaker to use (but OK to display on a single monitor only), or

2. multi-output support, ie. the workspace spanning across multiple screens?

The former may be doable with limited effort; the latter will be a major update, though.

@phkaeser the latter, or as an alternative, support for a 3rd party application such as wlr-randr to configure the outputs.

phkaeser commented 1 month ago

Thanks for clarifying, @ideasman42 . That will be a larger effort; forking into #122 for tracking.

andypiper commented 1 month ago

Iḿ back, with good news - we are in action on the MNT Pocket Reform now. I have ~/.wlmaker.plist configured with

Output = {
  Transformation = Rotate90;
  Scale = 1.5;
};

Thanks for supporting this feature!

phkaeser commented 4 weeks ago

Glad to hear it now works for you! Thanks for verifying & reporting back!