Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

show different picture for multiple monitors #574

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

qunxyz
Copy link

@qunxyz qunxyz commented Oct 12, 2022

Different wallpapers and settings for each monitor #469

@pihentagy
Copy link

What is the process to merge such PRs, @peterlevi?

@jlu5 jlu5 requested a review from peterlevi October 18, 2023 01:22
@jlu5
Copy link
Member

jlu5 commented Oct 18, 2023

Just to update, I will leave more architecturally impactful PRs to @peterlevi for review

@peterlevi
Copy link
Member

@qunxyz Thanks for the contribution. Sorry for taking so long to respond, recently I haven't had any time for Variety.

While I can see this PR working well for a lot of people, I don't see it as something that can be merged as is into the product. I see several fairly big concerns here:

  1. It doesn't seem this would play well with "Alignment and Scaling" options that are already part of Variety

  2. As it stands, it is a one-size-fits-all approach, everyone with multiple monitors gets the same behavior. There are no options for controlling the behavior. This is also related to the point above - it seems there needs to be good integration with the "Alignment and scaling" options.

Variety's philosophy (for good or bad), is to give more control to users about how everything would work. Some people might want the same wallpaper on each monitor, others - a random wallpaper on each, others may want to keep one monitor static, while having random wallpapers on another, some might want to use one combination of options for one monitor, and a different one for the other. E.g. imagine someone with one landscape monitor, and one portrait - they may want to configure different wallpaper sources that fit well the orientation of each monitor.

I feel that if we are officially adding "Support for multiple monitors", it must come with some configuration capabilities.

  1. There is something to be said about code quality - code would have to be simplified, better documented, split into cleaner functions. I also see some potential bugs with how the images are selected, e.g. code like https://github.com/varietywalls/variety/pull/574/files#diff-163a63b8c56df600c807b344ca288a55589926cbb1ae54e0908847da4affd11eR1400-R1402 looks sketchy.
    But fixing the code quality comes after there is agreement about how this feature should be approached at a high-level.

So I can see the logic here as a proof of concept, maybe a base approach for a solution, but not the final solution.

Generally speaking, support for multiple monitors is an important, huge feature, and the way I'd like it approached is first to have a general plan (no code) for how it should be done, before seeing code for it - what UI options we'll have, how things would work, etc.

My idea for this feature has been along these lines:

  1. I think we need a general configuration for multiple monitors (same wallpaper on each, random wallpaper on each, different configuration for each).

  2. In the case of "different configuration on each", Variety may spawn several Variety instances, each configuring and controlling a separate monitor, via the multiple profiles feature that was added with this in mind, among other things - see Different wallpapers and settings for each monitor #469 (comment). Users would have full control over exactly how each monitor behaves, what image sources it uses, etc.

  3. We will need some logic like this here that would actually build the final wallpaper image (or use DE-specific logic to set the different wallpapers). This logic would have to be isolated, and accessible as a separate executable, so that it can also serve the multi-profile case. I.e it will be a dedicated "set_wallpaper" utility that can work well with multiple monitors, regardless of the underlying DE, and will be able to set the wallpaper simultaneously for all monitors, or independently one by one. This can even be extracted into its own project, independent of Variety, as it is very well-defined and can potentially have more contributors than Variety. And Linux seems to lack something like this, given the DE-specific shenanigans we have to do in Variety...

This could happen in phases, and I think good first steps here might to just come up with the generic set_wallpaper utility from point 3 above, then simplify Variety to use it instead of the current set_wallpaper script, and then add support in Variety for "same picture on all monitors vs. different picture on each monitor", make them work well with all the other Variety features, and leave users to deal with "separate configuration for each monitor" manually, using multiple profiles - at this point they'll have the convenient set_wallpaper utility at their disposal. Nice wizard-like UX for that most complex configuration can come last.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants