/usr/share/irssi/scripts/chansort.pl is in irssi-scripts 20170711.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #! /usr/bin/perl
#
# $Id: chansort.pl,v 1.4 2004/11/02 22:52:33 peder Exp $
#
# Copyright (C) 2004 by Peder Stray <peder@gzip.ninja.no>
#
use strict;
use Irssi;
use Irssi::Irc;
# ======[ Script Header ]===============================================
use vars qw{$VERSION %IRSSI};
($VERSION) = '$Revision: 1.4 $' =~ / (\d+\.\d+) /;
%IRSSI = (
name => 'chansort',
authors => 'Peder Stray',
contact => 'peder@ninja.no',
url => 'http://ninja.no/irssi/chansort.pl',
license => 'GPL',
description => 'Sort all channel and query windows',
);
# ======[ Hooks ]=======================================================
# --------[ sig_sort_trigger ]------------------------------------------
sub sig_sort_trigger {
return unless Irssi::settings_get_bool('chansort_autosort');
cmd_chansort();
}
# ======[ Commands ]====================================================
# --------[ CHANSORT ]--------------------------------------------------
# Usage: /CHANSORT
sub cmd_chansort {
my(@windows);
my($minwin);
for my $win (Irssi::windows()) {
my $act = $win->{active};
my $key;
if ($act->{type} eq 'CHANNEL') {
$key = "C".$act->{server}{tag}.' '.substr($act->{visible_name}, 1);
}
elsif ($act->{type} eq 'QUERY') {
$key = "Q".$act->{server}{tag}.' '.$act->{visible_name};
}
else {
next;
}
if (!defined($minwin) || $minwin > $win->{refnum}) {
$minwin = $win->{refnum};
}
push @windows, [ lc $key, $win ];
}
for (sort {$a->[0] cmp $b->[0]} @windows) {
my($key,$win) = @$_;
my($act) = $win->{active};
# printf("win[%d->%d]: t[%s] [%s] [%s] {%s}\n",
# $win->{refnum},
# $minwin,
# $act->{type},
# $act->{visible_name},
# $act->{server}{tag},
# $key,
# );
$win->command("window move $minwin");
$minwin++;
}
}
# ======[ Setup ]=======================================================
# --------[ Register commands ]-----------------------------------------
Irssi::command_bind('chansort', 'cmd_chansort');
# --------[ Register settings ]-----------------------------------------
Irssi::settings_add_bool('chansort', 'chansort_autosort', 0);
# --------[ Register signals ]------------------------------------------
Irssi::signal_add_last('window item name changed', 'sig_sort_trigger');
Irssi::signal_add_last('channel created', 'sig_sort_trigger');
Irssi::signal_add_last('query created', 'sig_sort_trigger');
# ======[ END ]=========================================================
# Local Variables:
# header-initial-hide: t
# mode: header-minor
# end:
|