#~# # Définition de fonction pour pouvoir afficher dans le prompt
#~# # des infos quand on est dans un dépôt versionné
#~#
+#~# find_up () {
+#~# path="$1"
+#~# shift 1
+#~# while [[ "`readlink -f -- \"$path\"`" != "/" ]];
+#~# do
+#~# find "$path" -maxdepth 1 -mindepth 1 "$@"
+#~# path=${path}/..
+#~# done
+#~# }
+#~#
#~# get_vcs_info () {
#~# # Donne les infos sur le dépôt VCS courant.
#~# # priorité à git, puis darcs
-#~# local BRANCH TYPE violet orange vert
+#~# local LBRANCH LTYPE BRANCH TYPE DIR violet orange vert
#~# violet="\[\e[35m\]"
#~# orange="\[\e[33m\]"
#~# vert="\[\e[32m\]"
#~# nocolor="\[\e[0m\]"
-#~# BRANCH=$(git branch 2>/dev/null | sed -r "s/^[^*].*$//" | paste -s -d '' | sed -r "s/^[*] //")
-#~# if [ -n "$BRANCH" ];
-#~# then
-#~# TYPE="git"
-#~# else
-#~# BRANCH=$(darcs show repo 2>/dev/null| egrep '^ *Cache' | sed 's@.*/\([^/]*\),.*@\1@')
-#~# if [ -n "$BRANCH" ];
-#~# then
-#~# TYPE="darcs"
+#~# declare -a DIR
+#~# declare -A TYPE
+#~# declare -A BRANCH
+#~# DIR[0]=".git"
+#~# DIR[1]=".hg"
+#~# DIR[2]="_darcs"
+#~# DIR[3]=".svn"
+#~# TYPE[.git]="git"
+#~# TYPE[.hg]="mercurial"
+#~# TYPE[_darcs]="darcs"
+#~# TYPE[.svn]="svn"
+#~# BRANCH[.git]='git branch 2>/dev/null | sed -r "s/^[^*].*$//" | paste -s -d "" | sed -r "s/^[*] //"'
+#~# BRANCH[.hg]='hg branch 2>/dev/null'
+#~# BRANCH[_darcs]="darcs show repo 2>/dev/null| egrep '^ *Cache' | sed 's@.*/\([^/]*\),.*@\1@'"
+#~# BRANCH[.svn]="svn info 2>/dev/null | head -n 6 | tail -n 1"
+#~#
+#~# DIR=$(eval "find_up \"$PWD\" -name \"\"$(printf -- ' -o -name "%s"' "${DIR[@]}") | head -n 1")
+#~# if [ -n "$DIR" ]; then
+#~# DIR=$(basename "$DIR")
+#~# LBRANCH=$(eval "${BRANCH[$DIR]}")
+#~# LTYPE="${TYPE[$DIR]}"
+#~# if [ "$color_prompt" = yes ]; then
+#~# VCS_info="${nocolor}${violet}(${nocolor}$LTYPE${violet})-${violet}[${vert}$LBRANCH${violet}]${nocolor}"
+#~# else
+#~# VCS_info="($LTYPE)-[$LBRANCH]"
#~# fi
-#~# fi
-#~# if [ -n "$TYPE" ];
-#~# then
-#~# VCS_info="${nocolor}${violet}(${nocolor}$TYPE${violet})-${violet}[${vert}$BRANCH${violet}]${nocolor}"
-#~# VCS_size=$((${#TYPE}+${#BRANCH}+5))
+#~# VCS_size=$((${#LTYPE}+${#LBRANCH}+5))
#~# else
#~# VCS_info=""
#~# VCS_size=0
#~# fi
#~# }
+
# Pour avoir le bon umask en fonction du dossier où on se trouve
# L'umask définit avec quel droits un fichier est créé.
# Quand on écrit dans un dossier et qu'on veut que, par défaut,
# Rien de spécial n'arrivera si vous n'avez pas le fichier .umaskrc
function cd {
builtin cd "$@"
- [ -f ~/.umaskrc ] && umask $(/usr/bin/awk 'BEGIN {pwd=ENVIRON["PWD"]; a=length(pwd); cmax=0} {if($1==pwd) {MASK=$2;exit}; c=length($1); if(c>a) {next}; if(substr(pwd,0,c)==$1 && c > cmax) {cmax=c; MASK=$2}} END {print MASK}' ~/.umaskrc) >/dev/null
+ if [ -f ~/.umaskrc ]; then
+ umask $(/usr/bin/awk 'BEGIN {pwd=ENVIRON["PWD"]; a=length(pwd); cmax=0} {if($1==pwd) {MASK=$2;exit}; c=length($1); if(c>a) {next}; if(substr(pwd,0,c)==$1 && c > cmax) {cmax=c; MASK=$2}} END {print MASK}' ~/.umaskrc) >/dev/null
+ else
+ return 0
+ fi
}
### Attention à ce que vous éditez dans cette section ###
DIR=$pwd
POST_DIR='${MINUS_LINE:'${#pwd}+${VCS_size}+1'+${#?}}'
fi
- DIR="< ${jaune}"$DIR"${cyan} >"
- ERR='[ \[\e[1;$((31+($?==0)*6))m\]$?'${cyan}' ]'$MINUS_CHAR
- DATE="( ${violet}\D{%H:%M:%S}${cyan} )"
- PROMPT="${rouge}\u${vert}@${bleu}\h ${vert}\$ ${nocolor}"
- PS1=$TITLE${cyan}$MINUS_CHAR$DATE$MINUS_CHAR$DIR$MINUS_CHAR$VCS_info${cyan}$POST_DIR$ERR'\n'$PROMPT
+ if [ "$color_prompt" = yes ]; then
+ DIR="< ${jaune}"$DIR"${cyan} >"
+ ERR='[ \[\e[1;$((31+($?==0)*6))m\]$?'${cyan}' ]'$MINUS_CHAR
+ DATE="( ${violet}\D{%H:%M:%S}${cyan} )"
+ PROMPT="${rouge}\u${vert}@${bleu}\h ${vert}\$ ${nocolor}"
+ PS1=$TITLE${cyan}$MINUS_CHAR$DATE$MINUS_CHAR$DIR$MINUS_CHAR$VCS_info${cyan}$POST_DIR$ERR'\n'$PROMPT
+ else
+ DIR="< "$DIR" >"
+ ERR='[ $? ]'$MINUS_CHAR
+ DATE="( \D{%H:%M:%S} )"
+ PROMPT="\u@\h \$ "
+ PS1=$TITLE$MINUS_CHAR$DATE$MINUS_CHAR$DIR$MINUS_CHAR$VCS_info$POST_DIR$ERR'\n'$PROMPT
+ fi
}
+if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+ # support de la couleur
+ color_prompt=yes
+else
+ # pas de support de la couleur
+ color_prompt=no
+fi
+
# On change le titre de la fenêtre dynamiquement si on est sous X
if [[ $TERM = "xterm" ]]; then
TITLE='\[\e];\u@\h:\w\a\]'
date=$(/bin/date +"%R, %A %d %B %Y")
redate=${date//é/e}
redate=${redate//û/u}
- echo -e "\e[1;36m┬─${redate//?/─}──┬${MINUS_LINE:${#date}-18}\n\
+ if [ "$color_prompt" = yes ]; then
+ echo -e "\e[1;36m┬─${redate//?/─}──┬${MINUS_LINE:${#date}-18}\n\
│ \e[1;37m$date\e[1;31m \e[1;36m │\n\
└─${redate//?/─}──┘\e[0m\n"
+ else
+ echo -e "┬─${redate//?/─}──┬${MINUS_LINE:${#date}-18}\n\
+│ $date │\n\
+└─${redate//?/─}──┘\n"
+ fi
unset date
else
MINUS_CHAR=-
--- /dev/null
+# .irssi/config générique mis à votre disposition
+# par les gentils membres actifs du Cr@ns
+# Vous pouvez l'utiliser, le redistribuer, le modifier à votre convenance.
+# Des questions, des suggestions : {nounou,ca}@lists.crans.org
+# Licence : WTFPL
+
+# Les sections commentées par #~# sont des features qui ne sont pas activées
+# par défaut. Sentez-vous libre de les décommenter pour les utiliser.
+
+# Pour utiliser correctement cette configuration, modifiez les valeurs
+# "Pseudo", "Prénom Nom" et "loginCr@ns"
+
+#-----------------------------------------------------------------------------
+
+# Les serveurs pré-enregistrés
+# Il est toujours possible de se connecter à un serveur qui n'est pas
+# dans cette liste.
+# irssi se connectera automatiquement aux 2 premiers cars ils ont
+# autoconnect = "yes"
+servers = (
+ {
+ address = "irc.crans.org";
+ chatnet = "Crans";
+ autoconnect = "yes";
+ term_type = "utf-8";
+ },
+ {
+ address = "irc.rezosup.org";
+ chatnet = "rezosup";
+ autoconnect = "yes";
+ term_type = "utf-8";
+ },
+ { address = "irc.stealth.net"; chatnet = "IRCnet"; port = "6668"; },
+ { address = "irc.efnet.org"; chatnet = "EFNet"; port = "6667"; },
+ {
+ address = "irc.undernet.org";
+ chatnet = "Undernet";
+ port = "6667";
+ },
+ { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; },
+ {
+ address = "irc.quakenet.org";
+ chatnet = "QuakeNet";
+ port = "6667";
+ },
+ { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }
+);
+
+chatnets = {
+ IRCnet = {
+ type = "IRC";
+ max_kicks = "4";
+ max_msgs = "5";
+ max_whois = "4";
+ max_query_chans = "5";
+ };
+ EFNet = {
+ type = "IRC";
+ max_kicks = "4";
+ max_msgs = "3";
+ max_whois = "1";
+ };
+ Undernet = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ DALnet = {
+ type = "IRC";
+ max_kicks = "4";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ QuakeNet = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ SILC = { type = "SILC"; };
+ Crans = { type = "IRC"; };
+ Acoeur = { type = "IRC"; };
+ rezosup = { type = "IRC"; };
+ ulminfo = { type = "IRC"; };
+};
+
+# Les channels à rejoindre automatiquement
+channels = (
+ # { name = "#irssi"; chatnet = "ircnet"; autojoin = "No"; },
+ # { name = "silc"; chatnet = "silc"; autojoin = "No"; },
+ { name = "#crans"; chatnet = "Crans"; autojoin = "Yes"; },
+ { name = "#general"; chatnet = "Crans"; autojoin = "Yes"; },
+ { name = "#flood"; chatnet = "Crans"; autojoin = "Yes"; },
+ { name = "#federez"; chatnet = "rezosup"; autojoin = "Yes"; },
+);
+
+# Des commandes pratiques
+aliases = {
+ J = "join";
+ WJOIN = "join -window";
+ WQUERY = "query -window";
+ LEAVE = "part";
+ BYE = "quit";
+ EXIT = "quit";
+ SIGNOFF = "quit";
+ DESCRIBE = "action";
+ DATE = "time";
+ HOST = "userhost";
+ LAST = "lastlog";
+ SAY = "msg *";
+ WI = "whois";
+ WII = "whois $0 $0";
+ WW = "whowas";
+ W = "win";
+ N = "names";
+ M = "msg";
+ T = "topic";
+ C = "clear";
+ CL = "clear";
+ K = "kick";
+ KB = "kickban";
+ KN = "knockout";
+ BANS = "ban";
+ B = "ban";
+ MUB = "unban *";
+ UB = "unban";
+ IG = "ignore";
+ UNIG = "unignore";
+ SB = "scrollback";
+ UMODE = "mode $N";
+ WC = "window close";
+ WN = "window new hide";
+ SV = "say Irssi $J ($V) - http://irssi.org/";
+ GOTO = "sb goto";
+ CHAT = "dcc chat";
+ RUN = "SCRIPT LOAD";
+ CALC = "exec - if which bc &>/dev/null\\; then echo '$*' | bc | awk '{print \"$*=\"$$1}'\\; else echo bc was not found\\; fi";
+ SBAR = "STATUSBAR";
+ INVITELIST = "mode $C +I";
+ Q = "QUERY";
+ "MANUAL-WINDOWS" = "set use_status_window off;set autocreate_windows off;set autocreate_query_level none;set autoclose_windows off;set reuse_unused_windows on;save";
+ EXEMPTLIST = "mode $C +e";
+ ATAG = "WINDOW SERVER";
+ slap = "me slaps $0-around a bit with a large salmon";
+ fp = "/me facepalms";
+ facepalm = "/me facepalms";
+ utf8 = "say echo \"export LANG=fr_FR.UTF-8\" >> .zshrc; say /set term_charset=UTF-8; say Terminal > Définir l'encodage des caractères > Unicode (UTF-8)";
+ howtoutf8 = "utf8";
+ irclippy = "say ╭─╮ $0-; say ಠ_ಠ /; say │▕│; say ╰─╯";
+ basile = "msg Basile";
+ deconnaisseur = "msg deconnaisseur";
+ autoslap = "me slaps himself";
+ replay = "deconnaisseur noplay $0; deconnaisseur play $0; say deconnaisseur: encore";
+ hung = "msg Hung";
+ "shadobot-hacker" = "msg Shadobot-hacker";
+ headdeask = "me headdesk";
+ hd = "headdeask";
+ historien = "msg historien";
+ salesman = "msg Salesman";
+ orly = "say ___; say {o,o}; say |)__); say -\"-\"-; say O RLY ?";
+ yarly = "say ___; say {-.-}; say |) (|; say -\"-\"-; say YA RLY";
+ nowai = "say ___; say {0,0}; say (__(|; say -\"-\"-; say NO WAI!";
+ slaps = "slap";
+ xwing = "say oo__ _ _ __oo; say \\\"\\\"\\\"--,,,_(_)_--_(_)_,,,--\\\"\\\"\\\"; say _>_[____]_<_; say ___--\\\"\\\"\\\" (_)\\\\__/(_) \\\"\\\"\\\"--___; say oo\\\"\\\" \"\"oo;";
+ roissy = "say ___ ; say /L|0\\\\ ; say / | \\\\ ; say / \\\\ ; say / | \\\\ ; say / \\\\ ; say / __ | __ \\\\ ; say / __/ \\\\__ \\\\ ; say / /__ | __\\\\ \\\\ ; say /___________________\\\\ ; say / | \\\\ ; say / _|_ \\\\ ; say / ____/___\\\\____ \\\\ ; say ___________[o0o]___________ ; say O O O ; say ROISSY !";
+ contentlessping = "say $0: You sent me a contentless ping. This is a contentless pong. Please provide a bit of information about what you want and I will respond when I am around.";
+};
+
+statusbar = {
+ # formats:
+ # when using {templates}, the template is shown only if it's argument isn't
+ # empty unless no argument is given. for example {sb} is printed always,
+ # but {sb $T} is printed only if $T isn't empty.
+
+ items = {
+ # start/end text in statusbars
+ barstart = "{sbstart}";
+ barend = "{sbend}";
+
+ topicbarstart = "{topicsbstart}";
+ topicbarend = "{topicsbend}";
+
+ # treated "normally", you could change the time/user name to whatever
+ time = "{sb $Z}";
+ user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}";
+
+ # treated specially .. window is printed with non-empty windows,
+ # window_empty is printed with empty windows
+ window = "{sb $winref:$tag/$itemname{sbmode $M}}";
+ window_empty = "{sb $winref{sbservertag $tag}}";
+ prompt = "{prompt $[.15]itemname}";
+ prompt_empty = "{prompt $winname}";
+ topic = " $topic";
+ topic_empty = " Irssi v$J - http://www.irssi.org";
+
+ # all of these treated specially, they're only displayed when needed
+ lag = "{sb Lag: $0-}";
+ act = "{sb Act: $0-}";
+ more = "-- more --";
+ };
+
+ # there's two type of statusbars. root statusbars are either at the top
+ # of the screen or at the bottom of the screen. window statusbars are at
+ # the top/bottom of each split window in screen.
+ default = {
+ # the "default statusbar" to be displayed at the bottom of the window.
+ # contains all the normal items.
+ window = {
+ disabled = "no";
+
+ # window, root
+ type = "window";
+ # top, bottom
+ placement = "bottom";
+ # number
+ position = "1";
+ # active, inactive, always
+ visible = "active";
+
+ # list of items in statusbar in the display order
+ items = {
+ barstart = { priority = "100"; };
+ time = { };
+ user = { };
+ window = { };
+ window_empty = { };
+ lag = { priority = "-1"; };
+ act = { priority = "10"; };
+ more = { priority = "-1"; alignment = "right"; };
+ barend = { priority = "100"; alignment = "right"; };
+ };
+ };
+
+ # statusbar to use in inactive split windows
+ window_inact = {
+ type = "window";
+ placement = "bottom";
+ position = "1";
+ visible = "inactive";
+ items = {
+ barstart = { priority = "100"; };
+ window = { };
+ window_empty = { };
+ more = { priority = "-1"; alignment = "right"; };
+ barend = { priority = "100"; alignment = "right"; };
+ };
+ };
+
+ # we treat input line as yet another statusbar :) It's possible to
+ # add other items before or after the input line item.
+ prompt = {
+ type = "root";
+ placement = "bottom";
+ # we want to be at the bottom always
+ position = "100";
+ visible = "always";
+ items = {
+ prompt = { priority = "-1"; };
+ prompt_empty = { priority = "-1"; };
+ # treated specially, this is the real input line.
+ input = { priority = "10"; };
+ };
+ };
+
+ # topicbar
+ topic = {
+ type = "root";
+ placement = "top";
+ position = "1";
+ visible = "always";
+ items = {
+ topicbarstart = { priority = "100"; };
+ topic = { };
+ topic_empty = { };
+ topicbarend = { priority = "100"; alignment = "right"; };
+ };
+ };
+ };
+};
+
+
+# Configuration personnelle
+settings = {
+ core = {
+ # À remplacer par vos vrais prénom et nom
+ # Permet à un utilisateur qui utilise /whois de savoir qui vous êtes
+ real_name = "Prénom Nom";
+ user_name = "logincCr@ns";
+ # Le pseudo avec lequel vous apparaissez sur les channels
+ nick = "Pseudo";
+ # Affichage de la date avec les secondes dans les logs
+ log_timestamp = "%H:%M:%S";
+ # Affichage de la date avec les secondes sur l'interface d'irssi
+ timestamp_format = "%H:%M:%S";
+ # Le message que vous enverrez sur tous les channels en quittant irssi
+ quit_message = "Bye ! ;-)";
+ log_close_string = "--- Log closed %Y-%m-%d %H:%M:%S";
+ log_open_string = "--- Log opened %Y-%m-%d %H:%M:%S";
+ log_day_changed = "--- Day changed %Y-%m-%d";
+ awaylog_level = "msgs never";
+ };
+ "fe-text" = { actlist_sort = "refnum"; };
+ "fe-common/core" = {
+ autolog_level = "ALL";
+ autolog_path = "~/.irssi/logs/$tag/%Y/%m/$0.log";
+ autolog = "yes";
+ };
+ "irc/core" = { join_auto_chans_on_invite = "yes"; };
+};
+logs = { };
+#~# Pour changer le binding de certaines touches
+#~# keyboard = (
+#~# { key = "meta-q"; id = "active_window"; data = ""; },
+#~# { key = "meta-a"; id = "change_window"; data = "11"; },
+#~# { key = "meta-z"; id = "change_window"; data = "12"; },
+#~# { key = "meta-p"; id = "change_window"; data = "20"; }
+#~# );
+ignores = ( );