File: consoleuser-xprintidle.patch

package info (click to toggle)
killer 0.90-15
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 764 kB
  • sloc: perl: 8,785; makefile: 35; sh: 1
file content (45 lines) | stat: -rw-r--r-- 1,103 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Description: Use xprintidle to figure out X session idle time.
Author: Petter Reinholdtsen <pere@debian.org>
Bug-Debian: http://bugs.debian.org/714477
Last-Update: 2014-09-28

--- a/killer
+++ b/killer
@@ -977,6 +977,26 @@
 
 }
 
+=head2 getX11IdleTime user
+
+Figure out how long a user has been idle in X11.  Return the seconds
+of idle time.
+
+=cut
+
+sub getX11IdleTime($) {
+    my $self = shift;
+    my ( $user ) = @_;
+    my $idletime_ms = `su $user -c 'DISPLAY=:0 xprintidle' 2>/dev/null < /dev/null`;
+    chomp $idletime_ms;
+    if ($idletime_ms =~ m/\d+/) {
+        print "Local user $user X idle time is $idletime_ms ms\n" if $debug;
+        return $idletime_ms / 1000;
+    } else {
+        return undef;
+    }
+}
+
 =head2 getIdleTime user
 
 Figure out how long a user has been idle.  This is accomplished by
@@ -1021,6 +1041,10 @@
 		$idletime = (time - $statparts[8]);
 	    }
 	}
+        my $xidletime = $self->getX11IdleTime($user);
+        if (defined $xidletime && $idletime > $xidletime) {
+            $idletime = $xidletime;
+        }
     }
     return $idletime;
 }