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 [03/02/2010 12:08] smolski |
doc:reseau:weechat [23/04/2011 10:04] arien |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Weechat ====== | ||
+ | |||
+ | ===== Introduction ===== | ||
+ | Weechat est un client IRC qui n'a pas de mode graphique.\\ | ||
+ | Il s'utilise directement en console.\\ | ||
+ | Il supporte les scripts écrit en ruby, perl, python et lua grâce à un système de plugins. | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | En console, il suffit de taper : | ||
+ | <code bash># aptitude install weechat && weechat-core && weechat-plugins && weechat-dev && weechat-curses</code> | ||
+ | |||
+ | Si vous avez installez Squeeze par la méthode **traditionnelle** tous ces paquets sont installés automatiquement : \\ | ||
+ | |||
+ | **weechat**\\ | ||
+ | **weechat-core**\\ | ||
+ | **weechat-plugins**\\ | ||
+ | **weechat-dev**\\ | ||
+ | **weechat-curses**\\ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== A continuer par un pro (si besoin est) - 23/04/2011 - arien ==== | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | Depuis la version 3.0, la configuration se fait dans plusieurs fichiers. Aussi, pour simplifier la configuration de ce logiciel, je vous propose de le faire directement dans la fenêtre weechat. | ||
+ | |||
+ | ==== Démarrer weechat ==== | ||
+ | |||
+ | Dans un terminal sous user, saisissez : | ||
+ | $ weechat-curses | ||
+ | |||
+ | Ensuite on va ajouter un serveur auquel on voudra se connecter : | ||
+ | /server add freenode irc.freenode.net/6667 | ||
+ | |||
+ | On définit ensuite les pseudos que l'on utilisera : | ||
+ | /set irc.server.freenode.nicks "pseudo1,pseudo2,pseudo3,pseudo4,pseudo5" | ||
+ | |||
+ | Pour modifier le nom d’utilisateur et le nom réel : | ||
+ | /set irc.server.freenode.username "Mon nom d'utilisateur" | ||
+ | /set irc.server.freenode.realname "Mon nom réel" | ||
+ | |||
+ | Pour activer la connection automatique à ce serveur : | ||
+ | /set irc.server.freenode.autoconnect on | ||
+ | |||
+ | Pour activer l'autorejoin automatique à ce serveur : | ||
+ | /set irc.server.freenode.autorejoin on | ||
+ | |||
+ | Pour l'identification, on va tricher : on lance une commande après la connexion au serveur : | ||
+ | /set irc.server.freenode.command "/msg nickserv identify xxxxxx" | ||
+ | |||
+ | Pour configurer les canaux à rejoindre : | ||
+ | /set irc.server.freenode.autojoin "#debian-facile,#canal2" | ||
+ | |||
+ | Si vous avec installer un serveur oftc :\\ | ||
+ | Pour supprimer la valeur d’une option du serveur et utiliser sa valeur par défaut à la place, par exemple pour utiliser les pseudos par défaut (irc.server_default.nicks) : | ||
+ | /set irc.server.oftc.nicks null | ||
+ | |||
+ | Voilà, on a fait l'essentiel. N'oubliez pas de taper : | ||
+ | /save | ||
+ | |||
+ | afin de ne pas perdre ce que vous venez de faire ! | ||
+ | |||
+ | S'il vous vient le désir de modifier cette configuration, il suffit de reprendre la commande où ce situe ces changements à faire et de les exécuter ! | ||
+ | |||
+ | ==== Commandes utiles : ==== | ||
+ | |||
+ | Pour joindre un canal : | ||
+ | /join #channel | ||
+ | |||
+ | Pour quitter un chan en laissant un message : | ||
+ | /part [message de fin] | ||
+ | |||
+ | Pour quitter le chan et fermer le tampon en laissant un message de fin : | ||
+ | /close [message de fin] | ||
+ | |||
+ | ===== Split des fenêtres ===== | ||
+ | |||
+ | Une fonctionnalité très intéressante de weechat est le split des fenêtres. Kézako le split des fenêtres ? C'est ça : | ||
+ | |||
+ | |||
+ | |||
+ | Cela vous permettra de suivre plusieurs discutions en même temps :p | ||
+ | |||
+ | Alors : | ||
+ | |||
+ | Pour séparer l'écran horizontalement en deux parties égales : | ||
+ | /window splith | ||
+ | |||
+ | Pour séparer l'écran verticalement en deux parties égales : | ||
+ | /window splitv | ||
+ | |||
+ | Pour découper verticalement l'écran en une petite fenêtre (1/3 de la largeur) et une large (2/3), utilisez la commande : | ||
+ | /window splitv 33 | ||
+ | |||
+ | C'est bien beau tout ça, mais comment on navigue entre les fenêtres ?\\ | ||
+ | Deux solutions : | ||
+ | - En utilisant les **raccourcis claviers** (cf plus bas) | ||
+ | - En utilisant les commandes ci-dessous : | ||
+ | |||
+ | /window right | ||
+ | /window left | ||
+ | /window up | ||
+ | /window down | ||
+ | /window list | ||
+ | |||
+ | Et si je veux dégager un des splits ?\\ | ||
+ | Tout simplement : | ||
+ | |||
+ | /window merge | ||
+ | |||
+ | ===== Raccourcis clavier ===== | ||
+ | |||
+ | - alt + flèches gauche/droite (ou F5/F6): aller au chan(tampon) précédent/suivant | ||
+ | - F7/F8: aller à la fenêtre précédente/suivante (quand l'écran est divisé) | ||
+ | - F9/F10: faire défiler la barre de titre | ||
+ | - F11/F12: faire défiler la liste des pseudos | ||
+ | - tab: compléter le texte de la barre d’entrée, comme avec votre shell | ||
+ | - page préc/suiv: faire défiler le texte dans le tampon courant | ||
+ | - alt + A: sauter au tampon avec de l’activité (dans la "hotlist") | ||
+ | |||
+ | Vous pouvez créer vous-même vos raccourcis : | ||
+ | /key bind meta-y /buffer close | ||
+ | |||
+ | Pour désactiver le raccourci : | ||
+ | /key unbind meta-y | ||
+ | |||
+ | ===== WEECHAT 0.3.0 - Scripts ===== | ||
+ | |||
+ | Vous pouvez récupérer des scripts pour weechat (regardez bien les versions weechat indiquées) ici : | ||
+ | * [[http://www.weechat.org/scripts/ | Scripts disponibles]] | ||
+ | |||
+ | Il vous suffira de les copier dans leurs repertoires respectifs, //python// avec //python//, //ruby// avec //ruby//... dans les répertoires **autoload** \\ | ||
+ | Voir l'installation du script **urlbar.py** à la suite. | ||
+ | |||
+ | ==== TP - urlbar.py : ==== | ||
+ | |||
+ | Je vous propose par exemple 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 : | ||
+ | |||
+ | $ nano /home/mon_user/.weechat/python/autoload/urlbar.py | ||
+ | |||
+ | voir [[commande:nano|Commande NANO]] | ||
+ | |||
+ | <code bash># -*- coding: utf-8 -*- | ||
+ | # | ||
+ | # 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 : === | ||
+ | |||
+ | Si vous opérez l'installation de l'application weechat-plugins, weechat activé, il vous faudra utiliser dans weechat même la commande de relance pour la mise à jour : | ||
+ | |||
+ | /upgrade | ||
+ | |||
+ | Pour l'installation d'un nouveau script seulement, toujours weechat activé, vous pouvez le lancer par : | ||
+ | |||
+ | /python load urlbar.py | ||
+ | |||
+ | ===== Configuration manuelle ===== | ||
+ | |||
+ | //On peut modifier cela encore !// :-) | ||
+ | |||
+ | ==== Script - Modification ==== | ||
+ | |||
+ | Weechat activé, nous allons d'abord modifier les comportements par defaut de **urlbar.py** en rédigeant dans weechat les commandes suivantes. | ||
+ | |||
+ | La barre garde 10 url au lieu de 5 ainsi : | ||
+ | |||
+ | /set plugins.var.python.urlbar.visible_amount 10 | ||
+ | |||
+ | La barre reste apparente pendant une minute ainsi : | ||
+ | |||
+ | /set plugins.var.python.urlbar.visible_seconds 60 | ||
+ | |||
+ | Nous pouvons aussi désactiver tous ces comportements par défaut pour configurer les nôtres. \\ | ||
+ | Taper : | ||
+ | |||
+ | /set plugins.var.python.urlbar.use_popup "off" | ||
+ | |||
+ | Ensuite créer un raccourcis clavier, par exemple le raccourcis ''Alt + l'' ainsi : | ||
+ | |||
+ | /key bind meta-l /urlbar toggle | ||
+ | |||
+ | Maintenant, pour faire apparaître et disparaître à volonté les <//url//> des différents chans dans la fenêtre **urlbar**, utiliser le raccourcis créé : | ||
+ | |||
+ | Alt + l | ||
+ | |||
+ | //Merci à engil et captnfab sans qui la rédaction des tutos ne serait que désert et perdition !// | ||
+ | |||
+ | ===== Les liens ===== | ||
+ | |||
+ | * [[http://www.weechat.org/files/doc/stable/weechat_quickstart.fr.html|Demarrage Rapide]] | ||
+ | * [[http://www.weechat.org/ | Site Weechat officiel]] | ||
+ | * [[http://www.weechat.org/scripts/ | Scripts disponibles]] | ||
+ | |||
+ | --- //[[matt_chile@yahoo.fr|MaTTuX_]] 2009/02/10 00:16// | ||
+ |