WayfireWM / WayfireWM/wayfire

Monitor refresh rate influences animation behavior (of some plugins)

Open
#1,420 12 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs information
Dominant language
C++
Stars
3.1k
Forks
237
Avg merge
1h 43m
Merged PRs (30d)
1

Description

I have a multi monitor setup configured like this:

[output:DP-2]
mode = 1920x1080@239000
position = 0,0
transform = normal
scale = 1.000000

[output:HDMI-A-2]
mode = 1920x1080@60000
position = 1920,0 
transform = normal 
scale = 1.000000 

So basically I have noticed that my 240hz monitor displays some animations differently (I guess faster) than my 60hz secondary monitor.

I have found this to be true with wobbly windows and the fire animation.
vswitcher, expo, zoom do not seem to be affected (at least my eye doesn't notice it)

With wobbly: The window on my 60hz monitor is super wobbly, while on 240hz it is pretty stiff.
This is only true for the display from which you've "started". Say you start to drag the window on the 60hz side, it will still persist to be extremely wobbly while you drag it over to the monitor with the higher refresh rate.

With fire: The animation on 240hz is super smooth. It looks like the window is cleanly burning from the bottom to the top. The flame is closely following the bottom window border.
On 60 hz this looks totally different: Overall the window vanishes at the same speed, but the flames themselves (I guess) animate slower. So what this mean is, that the fire doesn't "follow" the bottom window border, but basically gets repeated and it looks like the whole window just "burned". It looks like the flame animation gets repeated over the whole space.
So it is actually pretty different I must say.

However I find it to be more obvious and thus easier to reproduce with wobbly windows.


To Reproduce
Prequisites: Well I guess you need a monitor with at least 75hz. You do not need a multi monitor setup to reproduce this.
Also set animate.duration=100 (I think the default value is 500). I do not know if that makes a difference, but that is my setting.

Then:

  1. Apply 60hz rate to your monitor
  2. Test how wobbly your window is by shaking it vigorously.
  3. Now apply the highest refresh rate you can. Preferably 240hz, 144hz, maybe even on 75hz there will be a noticable difference.
  4. Shake vigorously.

If you do not have a high refresh rate monitor, maybe you can set your monitor to a lower refresh rate? 29hz or 30hz is often possible to be set. As a last resort, monitor refresh rates can also be overriden by editing EDID information. I manage to overclock my 60hz monitor to 75hz easily (anything above that fails). If you want to know how to do this I guess research by yourself :p

Expected behavior
Animation's behavior should not depend on the monitors refresh rate!

Wayfire version
0.7.2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the wobbly and fire animations at 60 Hz and a higher refresh rate, using animate.duration=100 as described. Trace how animation timing is calculated for these plugins and verify that the same animation behavior and duration are maintained across monitor refresh rates.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.