~emersion/kanshi#42: 
configuration applied twice

I don't know if this is a kanshi or sway issue (since I assume kanshi just reacts to information from sway), but I noticed that sometimes the same profile gets applied twice.

When I start sway with an external monitor connected, I get:

applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
applying profile output 'Samsung Electric Company SyncMaster HVGQ901
399' on connected head 'DP-2'
applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
applying profile output 'Samsung Electric Company SyncMaster HVGQ901
399' on connected head 'DP-2'
configuration applied
configuration applied

when I disconnect the internal monitor, I get:

applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
configuration applied

i.e. it's applied once.

But then I killed kanshi and started it from the command line and now I get:

applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
configuration applied
configuration applied
applying profile
applying profile output 'Samsung Electric Company SyncMaster HVGQ901399' on connected head 'DP-2'
applying profile output 'eDP-1' on connected head 'eDP-1'
applying profile
applying profile output 'Samsung Electric Company SyncMaster HVGQ901399' on connected head 'DP-2'
applying profile output 'eDP-1' on connected head 'eDP-1'
configuration applied
configuration applied

I never noticed this before, but then again I was paying more attention to kanshi's output now.

As far as I can tell, there's only one instance of kanshi running.

Status
REPORTED
Submitter
github.com:tbm (unverified)
Assigned to
No-one
Submitted
1 year, 9 months ago
Updated
1 year, 9 months ago
Labels
No labels applied.

github.com:tbm (unverified) 1 year, 9 months ago · edit

I just had:

applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
applying profile
applying profile output 'eDP-1' on connected head 'eDP-1'
configuration applied
configuration applied

but sway's log only contains it once:

2019-12-20 12:35:35 - [main.c:300] Found config * for output eDP-1 (Unknown 0x5B2D 0x00000000)

github.com:jameswalmsley (unverified) 1 year, 9 months ago · edit

Did you resolve this?

What is your config file? Which versions of wlroots / sway are you using?

github.com:tbm (unverified) 1 year, 9 months ago · edit

Config:

{
	output eDP-1 enable
}

{
	output eDP-1 disable
	output "Samsung Electric Company SyncMaster HVGQ901399" mode 1680x1050 position 0,0
}

sway 1.2 and wlroots 0.7.0

github.com:jameswalmsley (unverified) 1 year, 9 months ago · edit

I'll create a similar setup with my system and see what happens.

github.com:zsugabubus (unverified) 1 year, 9 months ago · edit

It happens because after applying a profile, the display configuration will potentially change, and whenever the display configuration changes(*), kanshi tries finding a matching profile for the new configuration. But at the second run (hopefully) nothing will change and that's why there is two profile applies.

*: display plugged in/out, resolution, refresh rate...

github.com:simoneruffini (unverified) 11 months ago · edit

What do you mean with ''will potentially change'', I mean what types of change?

I have a similar issue but for me profiles are reapplied 3 times.

In addition to that, at startup, when kanshi starts, sway logs out this:

2020-10-21 20:51:31 - [swaybg-1.0/main.c:299] Found config * for output DP-3 (Dell Inc. DELL U2414H 4VKH665N5TRS)
2020-10-21 20:51:31 - [swaybg-1.0/main.c:299] Found config * for output eDP-1 (Sharp Corporation 0x148D 0x00000000)
00:00:04.790 [ERROR] [backend/drm/drm.c:364] Failed to page-flip output 'DP-3': a page-flip is already pending
2020-10-21 20:51:34 - [swaybg-1.0/main.c:167] Destroying output eDP-1 (Sharp Corporation 0x148D 0x00000000)

github.com:lytedev (unverified) 11 months ago · edit

In order to work around this issue, I moved my exec calls into a script that sets up a lockfile. Here's my example:

# kanshi config
profile desktop-H  {
  output ...
  output ...
  exec "setup-workspaces.sh"
}

And here's setup-workspaces.sh:

# kanshi will potentially run this more than once
LOCKFILE="/tmp/kanshi-setup-workspaces.lock"
if ! (set -o noclobber; echo > "$LOCKFILE"); then exit 1; fi
touch "$LOCKFILE"
# TODO: some way to ensure the lock file is cleaned up?
# maybe check if the file is older than a minute?

# do your stuff

rm -f "$LOCKFILE"

github.com:Gochkin (unverified) 9 months ago · edit

Well I have noticed the same thing when running kanshi. For me any profile applied twice (at least this is what kanshi output suggests).

Register here or Log in to comment, or comment via email.