Xfce Forum

Sub domains
 

You are not logged in.

#1 2017-10-20 09:37:12

marko
Member
Registered: 2017-10-20
Posts: 9

How does Xfce detect when a monitor is connected?

Hi all,

Currently, there are 3 ways that I know of that can be used to detect when the end user plugs or unplugs a monitor:

1. Via a udev rule
2. Via xrandr
3. Via reading /sys/class/drm/cardX-x/status but this doesn't always show the status correctly.

Now I've noticed, Xfce automatically brings up the Display Configuration Utility when the monitor video cable is plugged in.

Please tell me how, what C/C++ API call or linux specific system callback or polling is Xfce using to detect this. I would *really* love to know this.

I've already done this via a udev rule and referencing a script to run when this happens but the problem is, this rule does not work when the NVIDIA drivers are installed.

Creating a script that polls /sys/class/drm/cardX-x/status is not reliable because it doesn't always report the correct status. For instance, my HDMI cable was disconnected but /sys/class/drm/card0-HDMI-A-1/status returned "connected" and that's not good.

Creating a script and running xrandr every few seconds is a bit heavy so this is no good either.

One alternative that works is to replace /usr/bin/xfce4-display-settings with my own script but I'd rather not do that and I would really like to know how does Xfce detect when a monitor is plugged in.

BTW, Xfce is the best DE of all times. I can never use anything else but Xfce.

Last edited by marko (2017-10-20 09:39:23)

Offline

#2 2017-10-20 23:49:18

ToZ
Moderator
From: Canada
Registered: 2011-06-02
Posts: 3,893

Re: How does Xfce detect when a monitor is connected?

Hello and welcome.

Just had a quick look at the code and it looks like it reacts to an xrandr RRScreenChangeNotify event. See: https://git.xfce.org/xfce/xfce4-setting … ays.c#n427.


How To Ask For Help           Xfce FAQ                            Xfce Release Information
The Xfce Community          Xfce Tips and Tricks

Offline

#3 2017-10-21 02:21:03

marko
Member
Registered: 2017-10-20
Posts: 9

Re: How does Xfce detect when a monitor is connected?

Thanks! I will take a look at it.

Offline

#4 2017-10-21 11:13:02

marko
Member
Registered: 2017-10-20
Posts: 9

Re: How does Xfce detect when a monitor is connected?

Here is a perfectly (tested) working example: https://gist.github.com/mafrasi2/4ee01e … e463f32fca

More info: https://www.x.org/archive//X11R7.7/doc/ … dr.3.xhtml

"A XRRScreenChangeNotifyEvent is sent to a client that has requested notification whenever the screen configuration is changed. A client can perform this request by calling XRRSelectInput, passing the display, the root window, and the RRScreenChangeNotifyMask mask.

XRRScreenConfiguration is an opaque data type containing the configuration information for a screen."

Last edited by marko (2017-10-21 11:16:10)

Offline

#5 2017-10-21 19:21:57

ToZ
Moderator
From: Canada
Registered: 2011-06-02
Posts: 3,893

Re: How does Xfce detect when a monitor is connected?

Nice. Thanks for posting back a solution.


How To Ask For Help           Xfce FAQ                            Xfce Release Information
The Xfce Community          Xfce Tips and Tricks

Offline

#6 2017-10-21 21:39:47

marko
Member
Registered: 2017-10-20
Posts: 9

Re: How does Xfce detect when a monitor is connected?

No problems and again, Xfce is absolutely awesome. Keep up the good work with the GTK 3.x port please and I expect the same level of customization, responsiveness and stability (not concerned about memory consumption, have plenty of it). One concerning thing which I hope won't be overlooked is the panel icon spacing / padding / sizing. Right now, my xfce4-panel icon spacing, padding and sizing between icons (launcher shortcuts and notification icons) is all equal (top, bottom, left and right) - this padding and sizing is adjustable via the theme. "Please" preserve this functionality with GTK 3.x. It's very pleasant to the eyes - it's all aesthetically spaced out.

Last edited by marko (2017-10-22 00:54:45)

Offline

#7 2017-10-22 12:09:58

filipbekic01
Member
From: Serbia, Sremska Mitrovica
Registered: 2015-11-25
Posts: 6

Re: How does Xfce detect when a monitor is connected?

Hey marko, thanks for the script, lovely.

I also have high hopes for GTK3 porting, can't wait actually. Huge fan of xfce4 too smile

Offline

#8 2017-10-22 13:16:00

ToZ
Moderator
From: Canada
Registered: 2011-06-02
Posts: 3,893

Re: How does Xfce detect when a monitor is connected?

marko wrote:

Keep up the good work with the GTK 3.x port please and I expect the same level of customization, responsiveness and stability (not concerned about memory consumption, have plenty of it).

filipbekic01 wrote:

I also have high hopes for GTK3 porting, can't wait actually.

The GTK3 port is looking good. Here is the current status. Looks alot like GTK2 Xfce, but with the newer toolkit:

screenshot2017-10-2209-03-52.png
(Xfce built off of current git tree - latest development versions of components)

Still as configurable as the GTK2 version, with theme/appearance tweaks now being done via css in gtk.css (instead of gtkrc-2.0). xfce4-panel still supports the older GTK2 plugins so they can still be used if they are not ported over to GTK3.


How To Ask For Help           Xfce FAQ                            Xfce Release Information
The Xfce Community          Xfce Tips and Tricks

Offline

#9 2017-10-23 11:17:05

marko
Member
Registered: 2017-10-20
Posts: 9

Re: How does Xfce detect when a monitor is connected?

No problems, I have found the following section does not detect the HDMI hot plug event for some reason:

if ( (event->response_type == XCB_RANDR_NOTIFY_MASK_SCREEN_CHANGE) )

But I found that the following works for both DP and HDMI (they are the only ones I have):

if (event->response_type == 89) and I found this out by running debug print of event->response_type and every time I connected / reconnected my DP and HDMI, the result was 89 so I did an if statement checking for 89. All I want is to detect when a change takes place.

ToZ, thanks for the screenshot and good to know GTK3 progress is doing well, I will post my screenshot shortly.

Last edited by marko (2017-10-23 11:19:29)

Offline

#10 2017-11-22 05:35:14

astro
Member
Registered: 2017-11-22
Posts: 2

Re: How does Xfce detect when a monitor is connected?

I just installed and am using 4.12.1, and this feature is not working.

I plug in HDMI, the second monitor flashes through it's different outputs, stops at HDMI, then says "no signal", then goes black.

I opened up the display settings and selected "Configure new displays when connected", and that has not resolved my issue, and the secondary monitor is not available for selection in the drop down.

`xrandr --query` displays: HDMI-1 disconnected

Last edited by astro (2017-11-22 05:35:57)

Offline

Board footer

Powered by FluxBB