Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:weechat [13/05/2011 21:06] darien |
doc:reseau:weechat [18/05/2011 18:58] darien |
||
---|---|---|---|
Ligne 169: | Ligne 169: | ||
Créer et copier avec [[commande:editeur:nano|nano]] le script dans : | Créer et copier avec [[commande:editeur:nano|nano]] le script dans : | ||
<code> $ nano /home/mon_user/.weechat/perl/autoload/buffers.pl</code> | <code> $ nano /home/mon_user/.weechat/perl/autoload/buffers.pl</code> | ||
- | <code bash># | + | * [[http://www.weechat.org/scripts/source/stable/buffers.pl/|Télécharger script: buffers.pl]] |
- | # Copyright (c) 2008-2011 by Sebastien Helleu <flashcode@flashtux.org> | + | |
- | # | + | |
- | # This program is free software; you can redistribute it and/or modify | + | |
- | # it under the terms of the GNU General Public License as published by | + | |
- | # the Free Software Foundation; either version 3 of the License, or | + | |
- | # (at your option) any later version. | + | |
- | # | + | |
- | # This program is distributed in the hope that it will be useful, | + | |
- | # but WITHOUT ANY WARRANTY; without even the implied warranty of | + | |
- | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | + | |
- | # GNU General Public License for more details. | + | |
- | # | + | |
- | # You should have received a copy of the GNU General Public License | + | |
- | # along with this program. If not, see <http://www.gnu.org/licenses/>. | + | |
- | # | + | |
- | # | + | ===== Bip sur haut-parleur sur highlight/message privé. ===== |
- | # Display sidebar with list of buffers. | + | <code> $ nano /home/mon_user/.weechat/perl/autoload/beep.pl</code> |
- | # | + | |
- | # History: | + | |
- | # 2011-03-23, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v2.2: fix color of nick prefix with WeeChat >= 0.3.5 | + | |
- | # 2011-02-13, Nils G <weechatter@arcor.de>: | + | |
- | # v2.1: add options "color_whitelist_*" | + | |
- | # 2010-10-05, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v2.0: add options "sort" and "show_number" | + | |
- | # 2010-04-12, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.9: replace call to log() by length() to align buffer numbers | + | |
- | # 2010-04-02, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.8: fix bug with background color and option indenting_number | + | |
- | # 2010-04-02, Helios <helios@efemes.de>: | + | |
- | # v1.7: add indenting_number option | + | |
- | # 2010-02-25, m4v <lambdae2@gmail.com>: | + | |
- | # v1.6: add option to hide empty prefixes | + | |
- | # 2010-02-12, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.5: add optional nick prefix for buffers like IRC channels | + | |
- | # 2009-09-30, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.4: remove spaces for indenting when bar position is top/bottom | + | |
- | # 2009-06-14, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.3: add option "hide_merged_buffers" | + | |
- | # 2009-06-14, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.2: improve display with merged buffers | + | |
- | # 2009-05-02, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.1: sync with last API changes | + | |
- | # 2009-02-21, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v1.0: remove timer used to update bar item first time (not needed any more) | + | |
- | # 2009-02-17, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.9: fix bug with indenting of private buffers | + | |
- | # 2009-01-04, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.8: update syntax for command /set (comments) | + | |
- | # 2008-10-20, Jiri Golembiovsky <golemj@gmail.com>: | + | |
- | # v0.7: add indenting option | + | |
- | # 2008-10-01, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.6: add default color for buffers, and color for current active buffer | + | |
- | # 2008-09-18, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.5: fix color for "low" level entry in hotlist | + | |
- | # 2008-09-18, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.4: rename option "show_category" to "short_names", | + | |
- | # remove option "color_slash" | + | |
- | # 2008-09-15, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.3: fix bug with priority in hotlist (var not defined) | + | |
- | # 2008-09-02, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.2: add color for buffers with activity and config options for | + | |
- | # colors, add config option to display/hide categories | + | |
- | # 2008-03-15, Sebastien Helleu <flashcode@flashtux.org>: | + | |
- | # v0.1: script creation | + | |
- | # | + | |
- | # Help about settings: | + | |
- | # display short names (remove text before first "." in buffer name): | + | |
- | # /set plugins.var.perl.buffers.short_names on | + | |
- | # use indenting for some buffers like IRC channels: | + | |
- | # /set plugins.var.perl.buffers.indenting on | + | |
- | # use indenting for numbers: | + | |
- | # /set plugins.var.perl.buffers.indenting_number on | + | |
- | # hide merged buffers: | + | |
- | # /set plugins.var.perl.buffers.hide_merged_buffers on | + | |
- | # show prefix: | + | |
- | # /set plugins.var.perl.buffers.show_prefix on | + | |
- | # /set plugins.var.perl.buffers.show_prefix_empty on | + | |
- | # change colors: | + | |
- | # /set plugins.var.perl.buffers.color_number color | + | |
- | # /set plugins.var.perl.buffers.color_default color | + | |
- | # /set plugins.var.perl.buffers.color_hotlist_low color | + | |
- | # /set plugins.var.perl.buffers.color_hotlist_message color | + | |
- | # /set plugins.var.perl.buffers.color_hotlist_private color | + | |
- | # /set plugins.var.perl.buffers.color_hotlist_highlight color | + | |
- | # /set plugins.var.perl.buffers.color_current color | + | |
- | # (replace "color" by your color, which may be "fg" or "fg,bg") | + | |
- | # | + | |
- | use strict; | + | ===== Réduire la longueur des URLs en utilisant isgd ou tinyurl. ===== |
+ | Je vous propose à présent l'installation d'un script qui réduit la longueur des URLs. | ||
- | my $version = "2.2"; | + | ==== Script: shortenurl.py ==== |
- | # -------------------------------[ config ]------------------------------------- | + | **Fermer** weechat. |
- | + | ||
- | my %default_options = ("short_names" => "on", | + | |
- | "indenting" => "on", | + | |
- | "indenting_number" => "on", | + | |
- | "hide_merged_buffers" => "off", | + | |
- | "show_number" => "on", | + | |
- | "show_prefix" => "off", | + | |
- | "show_prefix_empty" => "on", | + | |
- | "sort" => "number", # "number" or "name" | + | |
- | "color_hotlist_low" => "white", | + | |
- | "color_hotlist_message" => "yellow", | + | |
- | "color_hotlist_private" => "lightgreen", | + | |
- | "color_hotlist_highlight" => "magenta", | + | |
- | "color_current" => "lightcyan,red", | + | |
- | "color_default" => "default", | + | |
- | "color_number" => "lightgreen", | + | |
- | "color_whitelist_buffers" => "", | + | |
- | "color_whitelist_low" => "", | + | |
- | "color_whitelist_message" => "", | + | |
- | "color_whitelist_private" => "", | + | |
- | "color_whitelist_highlight" => "", | + | |
- | + | ||
- | ); | + | |
- | my %options; | + | |
- | my %hotlist_level = (0 => "low", 1 => "message", 2 => "private", 3 => "highlight"); | + | |
- | my @whitelist_buffers = ""; | + | |
- | + | ||
- | # --------------------------------[ init ]-------------------------------------- | + | |
- | + | ||
- | weechat::register("buffers", "Sebastien Helleu <flashcode\@flashtux.org>", $version, | + | |
- | "GPL3", "Sidebar with list of buffers", "", ""); | + | |
- | + | ||
- | foreach my $option (keys %default_options) | + | |
- | { | + | |
- | if (!weechat::config_is_set_plugin($option)) | + | |
- | { | + | |
- | weechat::config_set_plugin($option, $default_options{$option}); | + | |
- | } | + | |
- | } | + | |
- | buffers_read_options(); | + | |
- | + | ||
- | weechat::bar_item_new("buffers", "build_buffers", ""); | + | |
- | weechat::bar_new("buffers", "0", "0", "root", "", "left", "horizontal", | + | |
- | "vertical", "0", "0", "default", "default", "default", "1", | + | |
- | "buffers"); | + | |
- | weechat::hook_signal("buffer_*", "buffers_signal_buffer", ""); | + | |
- | weechat::hook_signal("hotlist_*", "buffers_signal_hotlist", ""); | + | |
- | weechat::hook_config("plugins.var.perl.buffers.*", "buffers_signal_config", ""); | + | |
- | weechat::bar_item_update("buffers"); | + | |
- | + | ||
- | # ------------------------------------------------------------------------------ | + | |
- | + | ||
- | sub buffers_read_options | + | |
- | { | + | |
- | foreach my $option (keys %default_options) | + | |
- | { | + | |
- | $options{$option} = weechat::config_get_plugin($option); | + | |
- | } | + | |
- | @whitelist_buffers = split(/,/, $options{color_whitelist_buffers}); | + | |
- | } | + | |
- | + | ||
- | sub build_buffers | + | |
- | { | + | |
- | my $str = ""; | + | |
- | + | ||
- | # get bar position (left/right/top/bottom) | + | |
- | my $position = "left"; | + | |
- | my $option_position = weechat::config_get("weechat.bar.buffers.position"); | + | |
- | if ($option_position ne "") | + | |
- | { | + | |
- | $position = weechat::config_string($option_position); | + | |
- | } | + | |
- | + | ||
- | # read hotlist | + | |
- | my %hotlist; | + | |
- | my $infolist = weechat::infolist_get("hotlist", "", ""); | + | |
- | while (weechat::infolist_next($infolist)) | + | |
- | { | + | |
- | $hotlist{weechat::infolist_pointer($infolist, "buffer_pointer")} = | + | |
- | weechat::infolist_integer($infolist, "priority"); | + | |
- | } | + | |
- | weechat::infolist_free($infolist); | + | |
- | + | ||
- | # read buffers list | + | |
- | my @buffers; | + | |
- | my @current1 = (); | + | |
- | my @current2 = (); | + | |
- | my $old_number = -1; | + | |
- | my $max_number = 0; | + | |
- | my $max_number_digits = 0; | + | |
- | my $active_seen = 0; | + | |
- | $infolist = weechat::infolist_get("buffer", "", ""); | + | |
- | while (weechat::infolist_next($infolist)) | + | |
- | { | + | |
- | my $buffer; | + | |
- | my $number = weechat::infolist_integer($infolist, "number"); | + | |
- | if ($number ne $old_number) | + | |
- | { | + | |
- | @buffers = (@buffers, @current2, @current1); | + | |
- | @current1 = (); | + | |
- | @current2 = (); | + | |
- | $active_seen = 0; | + | |
- | } | + | |
- | if ($number > $max_number) | + | |
- | { | + | |
- | $max_number = $number; | + | |
- | } | + | |
- | $old_number = $number; | + | |
- | my $active = weechat::infolist_integer($infolist, "active"); | + | |
- | if ($active) | + | |
- | { | + | |
- | $active_seen = 1; | + | |
- | } | + | |
- | $buffer->{"pointer"} = weechat::infolist_pointer($infolist, "pointer"); | + | |
- | $buffer->{"number"} = $number; | + | |
- | $buffer->{"active"} = $active; | + | |
- | $buffer->{"current_buffer"} = weechat::infolist_integer($infolist, "current_buffer"); | + | |
- | $buffer->{"short_name"} = weechat::infolist_string($infolist, "short_name"); | + | |
- | $buffer->{"name"} = weechat::infolist_string($infolist, "name"); | + | |
- | if ($active_seen) | + | |
- | { | + | |
- | push(@current2, $buffer); | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | push(@current1, $buffer); | + | |
- | } | + | |
- | } | + | |
- | if ($max_number >= 1) | + | |
- | { | + | |
- | $max_number_digits = length(int($max_number)); | + | |
- | } | + | |
- | @buffers = (@buffers, @current2, @current1); | + | |
- | weechat::infolist_free($infolist); | + | |
- | + | ||
- | # sort buffers by number, name or shortname | + | |
- | my %sorted_buffers; | + | |
- | if (1) | + | |
- | { | + | |
- | my $number = 0; | + | |
- | for my $buffer (@buffers) | + | |
- | { | + | |
- | my $key; | + | |
- | if ($options{"sort"} eq "name") | + | |
- | { | + | |
- | my $name = $buffer->{"name"}; | + | |
- | $name = $buffer->{"short_name"} if ($options{"short_names"} eq "on"); | + | |
- | $key = sprintf("%s%08d", lc($name), $buffer->{"number"}); | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | $key = sprintf("%08d", $number); | + | |
- | } | + | |
- | $sorted_buffers{$key} = $buffer; | + | |
- | $number++; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | # build string with buffers | + | |
- | $old_number = -1; | + | |
- | foreach my $key (sort keys %sorted_buffers) | + | |
- | { | + | |
- | my $buffer = $sorted_buffers{$key}; | + | |
- | if (($options{"hide_merged_buffers"} eq "on") && (! $buffer->{"active"})) | + | |
- | { | + | |
- | next; | + | |
- | } | + | |
- | my $color = $options{"color_default"}; | + | |
- | $color = "default" if ($color eq ""); | + | |
- | my $bg = ""; | + | |
- | + | ||
- | if (exists $hotlist{$buffer->{"pointer"}}) | + | |
- | { | + | |
- | if (grep /^$buffer->{"name"}$/, @whitelist_buffers) | + | |
- | { | + | |
- | if ($options{"color_whitelist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}} eq "") # no color in settings | + | |
- | { | + | |
- | $color = $options{"color_hotlist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}}; # use standard colors | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | $color = $options{"color_whitelist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}}; | + | |
- | } | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | $color = $options{"color_hotlist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}}; | + | |
- | } | + | |
- | } | + | |
- | if ($buffer->{"current_buffer"}) | + | |
- | { | + | |
- | $color = $options{"color_current"}; | + | |
- | $bg = $1 if ($color =~ /.*,(.*)/); | + | |
- | } | + | |
- | my $color_bg = ""; | + | |
- | $color_bg = weechat::color(",".$bg) if ($bg ne ""); | + | |
- | if ($options{"show_number"} eq "on") | + | |
- | { | + | |
- | if (($options{"indenting_number"} eq "on") | + | |
- | && (($position eq "left") || ($position eq "right"))) | + | |
- | { | + | |
- | $str .= weechat::color("default").$color_bg | + | |
- | .(" " x ($max_number_digits - length(int($buffer->{"number"})))); | + | |
- | } | + | |
- | if ($old_number ne $buffer->{"number"}) | + | |
- | { | + | |
- | $str .= weechat::color($options{"color_number"}) | + | |
- | .$color_bg | + | |
- | .$buffer->{"number"} | + | |
- | .weechat::color("default") | + | |
- | .$color_bg | + | |
- | ."."; | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | my $indent = ""; | + | |
- | $indent = ((" " x length($buffer->{"number"}))." ") if (($position eq "left") || ($position eq "right")); | + | |
- | $str .= weechat::color("default") | + | |
- | .$color_bg | + | |
- | .$indent; | + | |
- | } | + | |
- | } | + | |
- | if (($options{"indenting"} eq "on") | + | |
- | && (($position eq "left") || ($position eq "right"))) | + | |
- | { | + | |
- | my $type = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type"); | + | |
- | if (($type eq "channel") || ($type eq "private")) | + | |
- | { | + | |
- | $str .= " "; | + | |
- | } | + | |
- | } | + | |
- | if ($options{"show_prefix"} eq "on") | + | |
- | { | + | |
- | my $nickname = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_nick"); | + | |
- | if ($nickname ne "") | + | |
- | { | + | |
- | # with version >= 0.3.2, this infolist will return only nick | + | |
- | # with older versions, whole nicklist is returned for buffer, and this can be very slow | + | |
- | my $infolist_nick = weechat::infolist_get("nicklist", $buffer->{"pointer"}, "nick_".$nickname); | + | |
- | if ($infolist_nick ne "") | + | |
- | { | + | |
- | my $version = weechat::info_get("version_number", ""); | + | |
- | $version = 0 if ($version eq ""); | + | |
- | while (weechat::infolist_next($infolist_nick)) | + | |
- | { | + | |
- | if ((weechat::infolist_string($infolist_nick, "type") eq "nick") | + | |
- | && (weechat::infolist_string($infolist_nick, "name") eq $nickname)) | + | |
- | { | + | |
- | my $prefix = weechat::infolist_string($infolist_nick, "prefix"); | + | |
- | if (($prefix ne " ") or ($options{"show_prefix_empty"} eq "on")) | + | |
- | { | + | |
- | # with version >= 0.3.5, it is now a color name (for older versions: option name with color) | + | |
- | if (int($version) >= 0x00030500) | + | |
- | { | + | |
- | $str .= weechat::color(weechat::infolist_string($infolist_nick, "prefix_color")); | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | $str .= weechat::color(weechat::config_color( | + | |
- | weechat::config_get( | + | |
- | weechat::infolist_string($infolist_nick, "prefix_color")))); | + | |
- | } | + | |
- | $str .= $prefix; | + | |
- | } | + | |
- | last; | + | |
- | } | + | |
- | } | + | |
- | weechat::infolist_free($infolist_nick); | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | $str .= weechat::color($color); | + | |
- | if ($options{"short_names"} eq "on") | + | |
- | { | + | |
- | $str .= $buffer->{"short_name"}; | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | $str .= $buffer->{"name"}; | + | |
- | } | + | |
- | $str .= "\n"; | + | |
- | $old_number = $buffer->{"number"}; | + | |
- | } | + | |
- | + | ||
- | + | ||
- | return $str; | + | |
- | } | + | |
- | + | ||
- | sub buffers_signal_buffer | + | |
- | { | + | |
- | weechat::bar_item_update("buffers"); | + | |
- | return weechat::WEECHAT_RC_OK; | + | |
- | } | + | |
- | + | ||
- | sub buffers_signal_hotlist | + | |
- | { | + | |
- | weechat::bar_item_update("buffers"); | + | |
- | return weechat::WEECHAT_RC_OK; | + | |
- | } | + | |
- | + | ||
- | sub buffers_signal_config | + | |
- | { | + | |
- | buffers_read_options(); | + | |
- | weechat::bar_item_update("buffers"); | + | |
- | return weechat::WEECHAT_RC_OK; | + | |
- | } | + | |
- | </code> | + | |
- | Merci à **captnfab** :-D, voir là : | + | |
- | * http://debian-facile.org/forum/viewtopic.php?pid=31802#p31802 | + | |
- | + | ||
- | ==== TP - urlbar.py : ==== | + | |
- | + | ||
- | Je vous propose à présent l'installation d'un script à destination de pouvoir lire une <url> longue en entier (pour la recopier par exemple) dans une fenêtre particulière qui va surplomber les /window splith et splitv que vous avez créées. | + | |
- | + | ||
- | ==== Script urlbar.py ==== | + | |
- | + | ||
- | Fermer weechat. | + | |
Créer et copier le script dans : | Créer et copier le script dans : | ||
- | $ nano /home/mon_user/.weechat/python/autoload/urlbar.py | + | $ nano /home/mon_user/.weechat/python/autoload/shortenurl.py |
voir [[commande:nano|Commande NANO]] | voir [[commande:nano|Commande NANO]] | ||
- | + | * [[http://www.weechat.org/scripts/source/stable/shortenurl.py/| Télécharger script: shortenurl.py]] | |
- | <code bash># -*- coding: utf-8 -*- | + | Pour revoir ces <url> taper : |
- | # | + | <code>/urlbar toggle</code> |
- | # Copyright (c) 2009 by FlashCode <flashcode@flashtux.org> | + | |
- | # | + | |
- | # This program is free software; you can redistribute it and/or modify | + | |
- | # it under the terms of the GNU General Public License as published by | + | |
- | # the Free Software Foundation; either version 3 of the License, or | + | |
- | # (at your option) any later version. | + | |
- | # | + | |
- | # This program is distributed in the hope that it will be useful, | + | |
- | # but WITHOUT ANY WARRANTY; without even the implied warranty of | + | |
- | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | + | |
- | # GNU General Public License for more details. | + | |
- | # | + | |
- | # You should have received a copy of the GNU General Public License | + | |
- | # along with this program. If not, see <http://www.gnu.org/licenses/>. | + | |
- | # | + | |
- | + | ||
- | # | + | |
- | # Bar with URLs (easy click on long URLs) | + | |
- | # (this script requires WeeChat 0.3.0 or newer) | + | |
- | # | + | |
- | # History: | + | |
- | # 2009-07-01, xt <xt@bash.no> | + | |
- | # version 0.5: changed script command to /urlbar, comma separated ignore list | + | |
- | # 2009-05-22, xt <xt@bash.no> | + | |
- | # version 0.4: added configurable showing of buffer name, nick and time | + | |
- | # 2009-05-21, xt <xt@bash.no> | + | |
- | # version 0.3: bug fixes, add ignore feature from sleo | + | |
- | # 2009-05-19, xt <xt@bash.no>: | + | |
- | # version 0.2-dev: fixes | + | |
- | # 2009-05-04, FlashCode <flashcode@flashtux.org>: | + | |
- | # version 0.1-dev: dev snapshot | + | |
- | # | + | |
- | + | ||
- | SCRIPT_NAME = "urlbar" | + | |
- | SCRIPT_AUTHOR = "FlashCode <flashcode@flashtux.org>" | + | |
- | SCRIPT_VERSION = "0.5" | + | |
- | SCRIPT_LICENSE = "GPL3" | + | |
- | SCRIPT_DESC = "Bar with URLs. For easy clicking or selecting." | + | |
- | SCRIPT_COMMAND = "urlbar" | + | |
- | + | ||
- | settings = { | + | |
- | "visible_amount" : '5', # Amount of URLS visible in urlbar at any given time | + | |
- | "visible_seconds" : '5', # Amount of seconds URLbar is visible | + | |
- | "use_popup" : 'on', # Pop up automatically | + | |
- | "remember_amount" : '25', # Max amout of URLs to keep in RAM | + | |
- | "ignore" : 'grep', # List of buffers to ignore. (comma separated) | + | |
- | "show_timestamp" : 'on', # Show timestamp in list | + | |
- | "show_nick" : 'on', # Show nick in list | + | |
- | "show_buffername" : 'on', # Show buffer name in list | + | |
- | "time_format" : '%H:%M', # Time format | + | |
- | } | + | |
- | + | ||
- | import_ok = True | + | |
- | try: | + | |
- | import weechat | + | |
- | except ImportError: | + | |
- | print "This script must be run under WeeChat." | + | |
- | print "Get WeeChat now at: http://weechat.flashtux.org/" | + | |
- | import_ok = False | + | |
- | + | ||
- | import re | + | |
- | from time import strftime, localtime | + | |
- | octet = r'(?:2(?:[0-4]\d|5[0-5])|1\d\d|\d{1,2})' | + | |
- | ipAddr = r'%s(?:\.%s){3}' % (octet, octet) | + | |
- | # Base domain regex off RFC 1034 and 1738 | + | |
- | label = r'[0-9a-z][-0-9a-z]*[0-9a-z]?' | + | |
- | domain = r'%s(?:\.%s)*\.[a-z][-0-9a-z]*[a-z]?' % (label, label) | + | |
- | urlRe = re.compile(r'(\w+://(?:%s|%s)(?::\d+)?(?:/[^\])>\s]*)?)' % (domain, ipAddr), re.I) | + | |
- | + | ||
- | + | ||
- | # list of URL-objects | + | |
- | urls = [] | + | |
- | + | ||
- | # Display ALL, a toggle | + | |
- | DISPLAY_ALL = False | + | |
- | + | ||
- | + | ||
- | + | ||
- | def urlbar_item_cb(data, item, window): | + | |
- | ''' Callback that prints the lines in the urlbar ''' | + | |
- | global DISPLAY_ALL, urls | + | |
- | try: | + | |
- | visible_amount = int(weechat.config_get_plugin('visible_amount')) | + | |
- | except ValueError: | + | |
- | weechat.prnt('', 'Invalid value for visible_amount setting.') | + | |
- | + | ||
- | if not urls: | + | |
- | return 'Empty URL list' | + | |
- | + | ||
- | if DISPLAY_ALL: | + | |
- | DISPLAY_ALL = False | + | |
- | printlist = urls | + | |
- | else: | + | |
- | printlist = urls[-visible_amount:] | + | |
- | + | ||
- | result = '' | + | |
- | for index, url in enumerate(printlist): | + | |
- | result += '%s%2d%s %s \r' %\ | + | |
- | (weechat.color("yellow"), index+1, weechat.color("bar_fg"), url) | + | |
- | return result | + | |
- | + | ||
- | + | ||
- | def get_buffer_name(bufferp, long=False): | + | |
- | if not weechat.buffer_get_string(bufferp, "short_name") or long: | + | |
- | bufferd = weechat.buffer_get_string(bufferp, "name") | + | |
- | else: | + | |
- | bufferd = weechat.buffer_get_string(bufferp, "short_name") | + | |
- | return bufferd | + | |
- | + | ||
- | class URL(object): | + | |
- | ''' URL class that holds the urls in the URL list ''' | + | |
- | + | ||
- | def __init__(self, url, buffername, timestamp, nick): | + | |
- | self.url = url | + | |
- | self.buffername = buffername | + | |
- | self.time = strftime( | + | |
- | weechat.config_get_plugin('time_format'), | + | |
- | localtime(int(timestamp))) | + | |
- | self.time = self.time.replace(':', '%s:%s' % | + | |
- | (weechat.color(weechat.config_string( | + | |
- | weechat.config_get('weechat.color.chat_time_delimiters'))), | + | |
- | weechat.color('reset'))) | + | |
- | self.nick = irc_nick_find_color(nick) | + | |
- | + | ||
- | def __str__(self): | + | |
- | # Format options | + | |
- | time, buffername, nick = '', '', '' | + | |
- | if weechat.config_get_plugin('show_timestamp') == 'on': | + | |
- | time = self.time + ' ' | + | |
- | if weechat.config_get_plugin('show_buffername') == 'on': | + | |
- | buffername = self.buffername + ' ' | + | |
- | if weechat.config_get_plugin('show_nick') == 'on': | + | |
- | nick = self.nick + ' ' | + | |
- | + | ||
- | return '%s%s%s%s' % (time, nick, buffername, self.url) | + | |
- | + | ||
- | def __cmp__(this, other): | + | |
- | if this.url == other.url: | + | |
- | return 0 | + | |
- | return 1 | + | |
- | + | ||
- | def urlbar_print_cb(data, buffer, time, tags, displayed, highlight, prefix, message): | + | |
- | + | ||
- | + | ||
- | buffer_name = get_buffer_name(buffer, long=True) | + | |
- | # Skip ignored buffers | + | |
- | for ignored_buffer in weechat.config_get_plugin('ignore').split(','): | + | |
- | if ignored_buffer.lower() == buffer_name.lower(): | + | |
- | return weechat.WEECHAT_RC_OK | + | |
- | + | ||
- | # Clean list of URLs | + | |
- | for i in range(len(urls) - int(weechat.config_get_plugin('remember_amount'))): | + | |
- | # Delete the oldest | + | |
- | urls.pop(0) | + | |
- | + | ||
- | for url in urlRe.findall(message): | + | |
- | urlobject = URL(url, get_buffer_name(buffer), time, prefix) | + | |
- | # Do not add duplicate URLs | + | |
- | if urlobject in urls: | + | |
- | continue | + | |
- | urls.append(urlobject) | + | |
- | if weechat.config_get_plugin('use_popup') == 'on': | + | |
- | weechat.command("", "/bar show urlbar") | + | |
- | # auto hide bar after delay | + | |
- | try: | + | |
- | weechat.command('', '/wait %s /bar hide urlbar' % | + | |
- | int(weechat.config_get_plugin('visible_seconds'))) | + | |
- | except ValueError: | + | |
- | weechat.prnt('', 'Invalid visible_seconds') | + | |
- | + | ||
- | weechat.bar_item_update("urlbar_urls") | + | |
- | + | ||
- | return weechat.WEECHAT_RC_OK | + | |
- | + | ||
- | + | ||
- | def urlbar_cmd(data, buffer, args): | + | |
- | """ Callback for /url command. """ | + | |
- | global urls, DISPLAY_ALL | + | |
- | + | ||
- | if args == "list": | + | |
- | if urls: | + | |
- | DISPLAY_ALL = True | + | |
- | weechat.command("", '/bar show urlbar') | + | |
- | weechat.bar_item_update("urlbar_urls") | + | |
- | else: | + | |
- | weechat.prnt('', 'URL list empty.') | + | |
- | if args == "show": | + | |
- | weechat.command('', '/bar show urlbar') | + | |
- | elif args == 'hide': | + | |
- | weechat.command("", "/bar hide urlbar") | + | |
- | elif args == 'toggle': | + | |
- | weechat.command("", "/bar toggle urlbar") | + | |
- | elif args == 'clear': | + | |
- | urls = [] | + | |
- | else: | + | |
- | weechat.command("", "/help %s" % SCRIPT_COMMAND) | + | |
- | + | ||
- | return weechat.WEECHAT_RC_OK | + | |
- | + | ||
- | def urlbar_completion_urls_cb(data, completion_item, buffer, completion): | + | |
- | """ Complete with URLS, for command '/url'. """ | + | |
- | for url in urls: | + | |
- | weechat.hook_completion_list_add(completion, url.url, | + | |
- | 0, weechat.WEECHAT_LIST_POS_SORT) | + | |
- | return weechat.WEECHAT_RC_OK | + | |
- | + | ||
- | def irc_nick_find_color(nick): | + | |
- | + | ||
- | color = 0 | + | |
- | for char in nick: | + | |
- | color += ord(char) | + | |
- | + | ||
- | color %= weechat.config_integer(weechat.config_get("weechat.look.color_nicks_number")) | + | |
- | color = weechat.config_get('weechat.color.chat_nick_color%02d' %(color+1)) | + | |
- | color = weechat.config_string(color) | + | |
- | return '%s%s%s' %(weechat.color(color), nick, weechat.color('reset')) | + | |
- | + | ||
- | + | ||
- | if __name__ == "__main__" and import_ok: | + | |
- | if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, | + | |
- | SCRIPT_DESC, "", ""): | + | |
- | # Set default settings | + | |
- | for option, default_value in settings.iteritems(): | + | |
- | if not weechat.config_is_set_plugin(option): | + | |
- | weechat.config_set_plugin(option, default_value) | + | |
- | + | ||
- | weechat.hook_command(SCRIPT_COMMAND, | + | |
- | "URL bar control", | + | |
- | "[list | hide | show | toggle | URL]", | + | |
- | " list: list all URL and show URL bar\n" | + | |
- | " hide: hide URL bar\n" | + | |
- | " show: show URL bar\n" | + | |
- | " toggle: toggle showing of URL bar\n", | + | |
- | "list %(urlbar_urls)", | + | |
- | "urlbar_cmd", "") | + | |
- | weechat.hook_completion("urlbar_urls", "list of URLs", | + | |
- | "urlbar_completion_urls_cb", "") | + | |
- | weechat.bar_item_new("urlbar_urls", "urlbar_item_cb", ""); | + | |
- | weechat.bar_new("urlbar", "on", "1000", "root", "", "top", "horizontal", | + | |
- | "vertical", "0", "0", "default", "default", "default", "0", | + | |
- | "urlbar_urls"); | + | |
- | weechat.hook_print("", "", "://", 1, "urlbar_print_cb", "")</code> | + | |
- | + | ||
- | Ensuite, ouvrir **weechat-curses**, le plugins **urlbar.py** est chargé au démarrage : | + | |
- | + | ||
- | $ weechat-curses | + | |
- | + | ||
- | Maintenant, lorsqu'une <//url//> se présente, une fenêtre apparaît quelques secondes avec cette <//url//> indiquée. | + | |
- | + | ||
- | Pour revoir ces <//url//> taper : | + | |
- | + | ||
- | /urlbar toggle | + | |
- | + | ||
- | **Tchap** ! | + | |
=== Nota : === | === Nota : === | ||
Ligne 893: | Ligne 237: | ||
* [[http://www.weechat.org/scripts/ | Scripts disponibles]] | * [[http://www.weechat.org/scripts/ | Scripts disponibles]] | ||
- | --- //[[matt_chile@yahoo.fr|MaTTuX_]] 2009/02/10 00:16// | + | |