Control: tags -1 + patch Here is a fairly untested patch to solve this issue. I lack the test bench to test it right now. It should use xprintidle as reported by the user when running from the users home directory to detect X usage, and use the resulting value in calculating which processes to kill.
diff --git a/debian/control b/debian/control index b8d4997..e644488 100644 --- a/debian/control +++ b/debian/control @@ -13,7 +13,11 @@ Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-edu/pkg-team/killer.git Package: killer Architecture: all -Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, exim4 | mail-transport-agent +Depends: ${shlibs:Depends} + , ${misc:Depends} + , ${perl:Depends} + , exim4 | mail-transport-agent + , xprintidle Description: Background job killer killer is a perl script that gets rid of background jobs. Background jobs are defined as processes that belong to users who are not currently diff --git a/killer b/killer index 1f95f2e..f915974 100755 --- a/killer +++ b/killer @@ -927,6 +927,24 @@ sub initializeTty($@) { } +=head2 getX11IdleTime + +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 ) = @_; + $idletime_ms = `su $user -c 'DISPLAY=:0 xprintidle' 2>/dev/null`; + if ($idletime_ms ~= m/\d+/) { + return $idletime_ms / 1000; + } else { + return undef; + } +} + =head2 getIdleTime user Figure out how long a user has been idle. This is accomplished by @@ -971,6 +989,10 @@ sub getIdleTime($) { $idletime = (time - $statparts[8]); } } + my $xIdleTime = $self->getX11IdleTime($user); + if (defined $xIdleTime && $idleTime > $xIdleTime) { + $idletime = $xIdleTime; + } } return $idletime; } -- Happy hacking Petter Reinholdtsen -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org