use Irssi;
use strict;
use vars qw($VERSION %IRSSI);
$VERSION = "0.1";
%IRSSI = (
authors => 'Daniel Wiberg <danne@wiberg.nu>',
name => 'daway',
contact => 'danne@wiberg.nu',
description => 'Automatically set away when no activity' .
'has been seen in ANY of the users ttys for n seconds',
license => 'BSD',
url => 'http://www.wiberg.nu/software/irssi/',
changed => "2005-03-02"
);
# Global Variables
my $daway=0;
my $activity_time=time();
my $ttypath=getOS();
# Settings
Irssi::settings_add_int('daway', 'daway_timeout', "900");
Irssi::settings_add_str('daway', 'daway_reason', "Autoaway.");
# Commands
Irssi::command_bind("daway","daway_help");
# Timers
Irssi::timeout_add(5000, "periodic", "");
# Stuff executed at loadtime
print CLIENTCRAP '%B>>%n '.$IRSSI{name}.' '.$VERSION.' loaded: /daway help for help';
sub get_idle_time
{
my $daway_timeout=Irssi::settings_get_int('daway_timeout');
my @result;
my $result;
my @fields;
my $atime;
my $now;
my $filename;
my $idletime;
my @result=`w 2>&1`;
foreach $result(@result)
{
if($result=~$ENV{USER}) {
@fields=split(/ +/,$result);
$filename=$ttypath . @fields[1];
$atime = (stat($filename))[8];
if($atime gt $activity_time) {
$activity_time = $atime;
}
}
}
$now=time();
$idletime=$now-$activity_time;
return $idletime;
}
sub set_daway
{
if(!$daway) {
my $daway_text=Irssi::settings_get_str('daway_reason');
my (@servers) = Irssi::servers();
my $server = $servers[0];
$server->command("/AWAY $daway_text");
$daway=1;
}
}
sub unset_daway
{
if($daway) {
my (@servers) = Irssi::servers();
my $server = $servers[0];
$server->command("/AWAY");
$daway=0;
}
}
sub periodic
{
my $daway_timeout=Irssi::settings_get_int('daway_timeout');
my $idletime=get_idle_time();
if($idletime > $daway_timeout && !$daway) {
set_daway();
}
elsif($idletime < $daway_timeout && $daway) {
unset_daway();
}
}
sub getOS
{
my $uname=`uname`;
if($uname =~ "BSD") {
return "/dev/tty"
}
else {
return "/dev/"
}
}
sub daway_help
{
print("/set daway_timeout n to set the autoaway timeout in seconds");
print("/set daway_reason to set the autoaway reason");
}