Notes concernant ma dernière réinstallation de Linux (Novembre-Décembre 1999, Mandrake 6.0) Vincent ZOONEKYND (zoonek@math.jussieu.fr) [Il est possible que je traduise ce fichier en SGML.] ---------------------------------------------------------------------- INSTALLATION Clavier : fr-latin1 Langue: English (sinon, les messages sont tantot en anglais, tantot en français, or je n'aime pas le mélange en linguistique) Partitions : Je conseille vivement TROIS partitions swap /home Pour les fichiers personnels, qui resteront meme si on change complètement le système. Il est parfois nécessaire de changer complètement le système. Par exemple, avec Red Hat, quand la base de données des paquetages RPM installés est corrompue (alors que j'y avais à peine touché) ou quand la commande rpm ne fonctionne plus (si on veut installer un nouveau paquetage, utilisant une nouvelle version du format RPM, nécessitant donc une nouvelle version de l'exécutable rpm, qui est lui-meme dans un paquetage utilisant cette nouvelle version du format RPM, etc. --- c'est comme cela que j'ai fini par corrompre la base de donnée des modules RPM installés) / Le système /mnt/dos OuinDaube X11 : je demande que l'environement grahique ne soit pas lancé automatiquement. Je constate ici que les nouveaux environement graphiques du genre gnome ou kde sont TRÈS gourmants en mémoire : avant, avec fvwm2 et quelques fenetres xterm, il me restait 25 à 30 Mo de mémoire vive au lancement de X11, sous gnome ou kde, il ne reste plus que 1 ou 2 Mo (sans les fenetres xterm). Remarque : en fait, j'ai eu un peu plus de problèmes, car ma carte graphique n'est pas reconnue par la version d'XFree86 sur le CD (3.3.3). J'ai donc installé d'abord le serveur VGA16, puis réinstallé (par très proprement, ie, sans rpm) XFree86 3.3.4. Remarque supplémentaire : en fait, j'ai eu encore plus de problèmes. Les bibliothèques installées avec cette nouvelle version de X11 ne semblent pas compatibles avec tous les exécutables précédemment installés, en particulier kterm. Comme de surcroît il n'y a pas les sources... Choses à installer : - la première fois, essayer un peu tous les environement graphiques (gnome, kde, autres gestionnaires de fenêtres). Par la suite, je suggère de ne pas tout installer. - J'ai choisi xemacs et non plus emacs (J'ai un assez mauvais souvenir de la version multilingue 20.4 d'Emacs...). Mais il n'y a pas la version multilingue d'xemacs... Démons à lancer lors du boot : il y en a beaucou trop. Ne prendre que ceux que l'on comprend. J'ai enlevé xfs, car il faisait planter (sic) la machine. ---------------------------------------------------------------------- CONFIGURATION APRES INSTALLATION Pour la carte son sndconfig Pour la souris : j'ai une souris Microsoft (c'est juste le nom du protocole, pas celui du constructeur) 3 boutons et X ne reconnait pas le bouton du milieu. Il est possible, par des manipulations un peu bizarres (quelques points de soudure bien placés) de la transformer en une souris normale trois boutons. Mais on peut obtenir presque le meme résultat de manière logicielle. Dans /etc/rc.d/rc.local, rajouter (à la fin) echo Starting gpm -R -t ms gpm -R -t ms Dans le fichier XF86Config (Attention : il y en a deux, un dans /etx/X11, l'autre dans /usr/X11R6/lib/X11/XF86Config ; il ne devrait y en avoir qu'un : je suggère de remplacer l'un des deux (celui dans /usr...) par un lien vers l'autre) Section "Pointer" Protocol "MouseSystems" Device "/dev/gpmdata" Emulate3Buttons EndSection ---------------------------------------------------------------------- DANS LE REPERTOIRE /etc Faisons une petite pause et regardons le contenu de ce répertoire. /etc/DIR_COLORS Fichier de configuration de ls (en couleurs). Il faut mettre explicitement eval `dircolors /etc/DIR_COLORS` dans le fichier de configuration de son shell, sinon, la commande ls va prendre les valeurs par défaut précisées lors de la compilation du programme. Ces valeurs conviennent pour un terminal avec un fond clair. Sur un fond noir, je change juste la ligne DIR 01;33 # directory /etc/X11 Fichiers de configuration de X11, du gestonnaire de fenetres, etc. (Si les choses sont bien installées : les programmes ont tendance à aller chercher leurs fichiers de configuration par défaut ailleurs, par exemple dans /usr/X11R6/lib/X11/ : il faut corriger cela à l'aide de liens symboliques.) /etc/aliases Les alias pour le mail. Fichier humainement lisible. Ne pas oublier de lancer newaliases pour mettre à jour le fichier /etc/aliases.db, utilisé par sendmail. /etc/aliases.db Alias pour le mail, fichier utilisé par sendmail. Ce fichier est créé par la commande newaliases. En fait, on peut lire ou écrire de tels fichiers très simplement en Perl. Voici un exemple, qui utilise gdbm (et pas berkeley db). #! perl -w use strict; use vars qw($filename %hash); $filename = "essai.db"; use GDBM_File ; tie %hash, 'GDBM_File', $filename, &GDBM_WRCREAT, 0640; sub ecrire { $hash{toto} = 1; $hash{tutu} = 3.14; $hash{a} = "Coucou !"; } sub lire { foreach (keys %hash){ print "$_ -> $hash{$_}\n"; } } lire(); untie %hash ; Avec Berkeley DB à la place, on aurait des choses du genre #! perl -w use strict; use DB_File; use vars qw($filename $flags $mode %hash); $filename = "essai.db"; $flags = O_RDWR|O_CREAT; $mode = 0644; tie %hash, 'DB_File', $filename, $flags, $mode, $DB_HASH; sub ecrire { $hash{toto} = 1; $hash{tutu} = 3.14; $hash{a} = "Coucou !"; } sub lire { foreach (keys %hash){ print "$_ -> $hash{$_}\n"; } } #ecrire (); lire(); untie %hash ; Je constate que cela ne marche pas sur /etc/aliases.db : pourquoi ??? /etc/anacrontab Equivalent de la crontab pour les machines qui ne restent pas toujours allumées. Ce fichier de configuration dit simplement de regarder dans la crontab (la vraie). Je crois (c'est lancé par la crontab à 4 heures du matin, mais l'ordinateur est peut-etre éteint à ce moment-là :) qu'il faut lancer explicitement anacrontab Je suggère meme de lancer anacrontab -d pour qu'il ne forke pas pour se mettre en tache de fond, afin de voir quand cela se termine. /etc/at.allow /etc/at.deny Il est possible que tout le monde n'ait pas le droit d'utiliser la commande at (si on met « all » dans /etc/at.deny et « root » dans /etc/at.allow). Mais par défaut, tout le monde peut. /etc/bashrc Fichier de configuration par défaut de bash /etc/crontab Fichier de configuration de la crontab. Son contenu est le suivant 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly Chacun de ces morceaux de la crontab correspond à un répertoire. Les fichiers de ces répertoires sont des exécutables (scripts en shell). /etc/cron.d ??? /etc/cron.daily anacron, logrotate, updatedb (slocate), nettoyage des répertoires temporaires (/tmp, pages de manuel formattées, fontes LaTeX) à l'aide de tmpwatch. /etc/cron.hourly anacron /etc/cron.monthly anacron /etc/cron.weekly anacron, makewhatis (pour chercher dans les pages de manuel, quand on ne sait pas quelle page regarder) /etc/csh.cshrc Fichier de configuration de csh (quelle utilité ?) /etc/exports NFS /etc/fdprm Fichier de configuration pour setfdprm, qui permet de reconfigurer le lecteur de disquettes, afin de lire les disquettes dans des formats étranges. (Regarder comment la disquette tomsrtbt est créée) /etc/fnrc Fichier de configuration de fnlib (bibliothèque de fontes utilisée par Enlightenment). /etc/fstab Liste des répertoires qui doivent etre montés automatiquement lorsque la machine boote (ou quand on tape mount -a) /dev/hda5 / ext2 defaults 1 1 /dev/hda6 /home ext2 defaults 1 2 /dev/hda1 /mnt/dos vfat defaults 0 0 /dev/hda2 swap swap defaults 0 0 et des répertoires qui peuvent etre montés par la suite. /dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev,unhide 0 0 /dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0 Il y a aussi des « faux » systèmes de fichiers. none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0 /etc/gmp-root.conf Fichier de configuration de gpm-root, utilitaire que l'on peut lancer après gpm (qui permet d'utiliser la souris sur la console, ie, en dehors de tout environement graphique) permettant d'afficher des menus. /etc/group Liste des groupes des utilisateurs (un peu comme /etc/passwd) /etc/gtk/gtkrc Fichier de configuration par défaut de gtk (on peut mettre un ~/.gtkrc) /etc/im_palette.pal /etc/imrc Fichier de configuration de imlib /etc/imwheelrc Fichier de configuration pour les souris à roulettes /etc/info-dir Je ne sais pas du tout ce que cela fait ici. C'est le genre de fichier que l'on trouve dans les répertoires info d'Emacs et qui donne la liste des fichiers. /etc/inittab C'est un fichier important. Il décrit les différents niveaux de fonctionnement du système (mono-utilisateur, multi-utilisateur sans réseau, multiutilisateur avec réseau, démarage sous X). /etc/issue Le message affiché avant que l'on se loggue. (voir aussi /etc/motd) /etc/issue.net Le message affiché quand on se loggue par telnet/rlogin /etc/ld.so.cache Fichier utilisé par ld.so qui s'occuppe de trouver l'emplacement des bibliothèques partagées nécessaires à un exécutable. La commande ldd donne la liste de ces bibliothèques. /etc/ld.so.conf Liste des répertoires contenant des bibliothèques partagées, en plus de /usr/lib et /lib. Il faut lancer la commande ldconfig si on a rajouté des choses. L'utilisateur lambda peut quant à lui utiliser la variable d'environement LD_LIBRARY_PATH qui contient la liste des répertoires dans lesquels chercher des bibliothèques partagées, séparés par le caractère : (deux-point). /etc/lilo.conf Le fichier de configuration de lilo : c'est le logiciel qui lance le système d'exploitation quand on allume / reboote la machine et qui permet de choisir entre linux et OuineDoze, entre différents noyaux ou de lancer le noyau avec d'autres paramètres (man bootparam). /etc/localtime Je constate que c'est un lien symbolique vers un fichier binaire qui dont contenir des informations sur le fuseau horaire dans lequel nous nous trouvons (GMT+1, Heure d'hiver / été). /etc/login.defs Fichier de configuration pour la commande adduser (ou useradd). JE NE SAIS PAS DU TOUT COMMENT LES COMPTES « EXPIRENT » Je ne sais pas non plus où est stockée cette information. Je n'ai pas fini. Je n'ai pas regardé (ou pas compris) ce qu'étaient les fichiers suivants. /etc/CORBA/ /etc/HOSTNAME /etc/adjtime /etc/charsets/ /etc/conf.linuxconf /etc/conf.modules /etc/defaults/ /etc/defaults/useradd /etc/dosemu.conf /etc/dosemu.users /etc/gettydefs /etc/inputrc /etc/ioctl.save /etc/isappn.conf /etc/isappn.gone ---------------------------------------------------------------------- PARANOÏA : comment rendre un système le plus sûr possible. (Je reconnais mon incompétence dans ce domaine, il y a probablement des manques ou des erreurs dans ce qui suit. Comme mon ordinateur n'est relié à rien d'autre quà une prise de courrant, ce n'est pas trop grave.) RÉSEAU Enlever tous les services qui ne sont pas nécessaires. Ce doit être le fichier inetd.conf (je n'en ai pas : j'ai dû installer linux sans le support réseau...) Il y en a aussi dans /etc/rc.d/init.d/ Remplacer rsh et co. (enlevé à l'étape précédente) par ssh. Dans le fichier /etc/passwd : s'il n'y a pas de shell spécifié, c'est /bin/sh. Il faut que les comptes sans shell n'aient vraiment aucun shell... Dans certaines documentations, il disent d'installer les dernières versions de sendmail (nécessaire si on veut recevoir du courrier) et de bind (?) ou de désactiver ces logiciels si on n'en a pas besoin. tcp_wrappers LOCAL Quelques fichiers de configuration : /etc/at.deny /etc/at.allow Fichiers avec un bit s : le moins possible. find / -perm +6000 -print Des logiciels pour cracker les mots de passe (Crack). Des logiciels pour vérifier l'intégrité des fichiers (cops ? tripwire ?) Des logiciels pour vérifier la sécurité, pour chercher des failles connues (satan). J'en oublie probablement... ---------------------------------------------------------------------- TeX (tetex) Il y a un utilitaire pour configurer TeX : texconfig. Si on veut ajouter les motifs de césure pour une langue, si on veut configurer le mode par défaut pour mf/dvips, c'est très bien. Mais pour ce qui nous intéresse, nous ferons tout à la main. (1) Dans la liste des formats, il manque -mltex un peu partout (sauf pour omega)... perl -p -i.bak -e 's/(([\w*-]+)\.ini)/-mltex $1/; s/-mltex // if m/omega/;' /usr/share/texmf/web2c/fmtutil.cnf Il faut ensuite lui demander de recompiler les formats, à l'aide de la commande fmtutil --all mais nous le ferons un peu plus tard. (2) Pour la césure, c'est correct : américain, français et allemand (3) Pour la liste des chemins, il faut le faire à la main. Commencer par trouver le fichier texmf.cnf. locate texmf.cnf On peut soit modifier ce fichier, soit modifier une copie, si on met dans la variable TEXMFCNF le nom du répertoire qui contient cette copie. Une ligne indique l'arborescence principale, du genre TEXMFMAIN = $SELFAUTODIR/share/texmf On va en rajouter d'autres TEXMFLOCAL = /usr/share/texmf.local HOMETEXMF = /home/zoonek/.texmf Il faut ensuite signaler le changement TEXMF = {$HOMETEXMF,!!$TEXMFLOCAL,!!$TEXMFMAIN} Personnellement, mon répertoire ~/.texmf ne contient que des liens symboliques vers le répertoire ~/tex/inputs, qui contient de tout, dans le plus grand desordre... mkdir ~/.texmf cd ~/.texmf mkdir bibtex ( cd bibtex ln -s ../../tex/inputs/ bst ln -s ../../tex/inputs/ bib ) mkdir fonts ( cd fonts ln -s ../../tex/inputs/ source ln -s ../../tex/inputs/ tfm ln -s ../../tex/inputs/ type1 ln -s ../../tex/inputs/ vf ln -s ../../tex/inputs/ afm ln -s ../../tex/inputs/ truetype ) ln -s ../tex/inputs/ metafont ln -s ../tex/inputs/ metapost mkdir tex ( cd tex ln -s ../../tex/inputs/ generic ) Il faut ensuite remettre à jour la base de données utilisée par TeX. texhash (4) On peut enfin augmenter « un peu » la taille de la mémoire utilisée par TeX. Toujours dans le fichier texmf.cnf main_memory = 4000000 hash_extra = 15000 pool_size = 500000 Ce sont les seules valeurs auxquelles j'ai touché, mais de manière générale, on peut prendre les valeurs de context et en faire les valeurs par défaut. On remarquera que, pour la mémoire, je suis un peu plus exigeant que context. string_vacancies = 45000 max_strings = 55000 pool_free = 47500 Il ne reste plus qu'à recompiler les formats. fmtutil --all (5) Comme la commande « fmtutil --all » oublie de recompiler le format de métapost, nous allons le faire à la main. cd /usr/share/texmf/web2c mpost -ini mpost.ini BUG : Je n'ai pas regardé ce qui se passait si le fichier texmf.cnf et les formats étaient dans le répertoire d'un utilisateur. Il y a peut-être une ligne supplémentaire à modifier dans texmf.cnf pour indiquer où sont les format ou des arguments supplémentaires à fmtutil. Peut-être pas. (6) Il reste encore à installer CJK et des fontes japonaises... ---------------------------------------------------------------------- La commande updatedb ne marche pas correctement. Elle refuse le répertoire /mnt/dos/ je ne sais pas pourquoi. Une solution (peu satisfaisante, mais...) consiste à ne pas aller dedans : modifier /etc/updatedb.conf en conséquence. ---------------------------------------------------------------------- Divers logiciels manquants Povray tar zxvf /mnt/cdrom/Pov-3.1e/povlinux.tgz mv povray31 /usr/local/lib cd /usr/local/bin ln -s ../lib/povray31/x-povray povray Blender (?) ---------------------------------------------------------------------- PERL : - Tk - SGMLSpm-1.03ii.tar.bz2 ---------------------------------------------------------------------- Le reste ne relève plus de la configuration du système mais de celle de l'environement des utilisateurs. ---------------------------------------------------------------------- X11, gestionnaire de fenètres, xmodmap, etc. Si on lance X11 à l'aide de startx (peut-etre aussi avec gnome ou kde, je ne sais pas -- je ne sais pas où est la documentation), les programmes à lancer sont dans le fichier ~/.xinitrc. Il s'agit d'un script en shell. Quand ce script se termine, on quitte X11 : on lance donc généralement toutes les applications en tache de fond, sauf la dernière (souvent, le gestionnaire de fenetres). Quitter cette dernière application revient donc à quitter X11. Voici un exemple de tel fichier. #!/bin/zsh rm -f /tmp/Xrootenv.0 rm -f /tmp/fvwmrc* rm -f $HOME/1.tgz #xsetroot -solid rgb:10/0/0 ( sleep 5 ; xv -root -quit /usr/share/pixmaps/backgrounds/Propaganda/Vol6/6b.jpg ) & if [ -f $HOME/.xmodmaprc ] then xmodmap $HOME/.xmodmaprc else xmodmap /etc/skel/.xmodmaprc fi xset b off xterm -geometry +0+0 & xterm -geometry -0+0 & # rxvt -backgroundPixmap /usr/share/apps/kreversi/pics/background/Granite.xpm -reverseVideo & fvwm2 || fvwm L'utilitaire xmodmap permet de redéfinir le clavier sous X11. On peut ainsi utiliser les touches pour OuineDoze pour obtenir les caractères { } et \ (et intervertir , et ;). Il faut pour cela connaitre le « keycode » de la touche (grace à la commande xev) et le nom des caractères que l'on veut obtenir (keysym, voir encore xev). J'ai créé un fichier ~/.xmodmaprc contenant les lignes suivantes. keycode 115 = braceleft keycode 116 = braceright keycode 117 = backslash keycode 59 = period semicolon keycode 49 = grave Il est chargé par le ~/.xinitrc if [ -f $HOME/.xmodmaprc ] then xmodmap $HOME/.xmodmaprc else xmodmap /etc/skel/.xmodmaprc fi Il reste encore le plus dur : le fichier ~/.Xdefaults, qui contient les valeurs par défauts des divers paramètres des diverses applications qui tournent sous X. Il peut s'agir d'à peu près tout. Ce fichier est lu (je crois) lors du lancement de X11. Si on le modifie après, on peut demander à X11 de le charger à l'aide de la commande xrdb -merge ~/.Xdefaults (attention : cela fusionne la base de donnée contenue dans le fichier ~/.Xdefaults et celle courremment utilisée par X11 ; si on enlève une ligne dans le fichier ~/.Xdefaults, X11 n'en tiendra donc pas compte) Voici un exemple d'un tel fichier. Emacs*Background: Black Emacs*Foreground: WhiteSmoke Emacs.font: -*-Courier-Medium-R-*-*-*-180-*-*-*-*-iso8859-1 Emacs.geometry: 80x35 xterm*background: Black xterm*foreground: Wheat xterm*cursorColor: Orchid xterm*reverseVideo: false xterm*scrollBar: true xterm*reverseWrap: true xterm*font: fixed xterm*fullCursor: true xterm*scrollTtyOutput: off xterm*scrollKey: on xterm*VT100.Translations: #override\n\ Prior : scroll-back(1,page)\n\ Next : scroll-forw(1,page) xterm*titleBar: false KDrill*background: Black KDrill*foreground: WhiteSmoke KDrill.edictfile: /usr/local/lib/Nihon/edict.gz KDrill.kdictfile: /usr/local/lib/Nihon/kanjidic.gz Fig*background: black Fig*foreground: grey95 On peut aussi utiliser la syntaxe de cpp #if WIDTH<800 #define SMALL_SCREEN #endif #ifdef SMALL_SCREEN ... #endif Pour la configuration du gestionnaire de fenetres, cela dépend du logiciel. Voir aussi wmconfig. ---------------------------------------------------------------------- NETSCAPE C'est écrit beaucoup trop petit... Edit->Preferences->Appearance->Fonts-> Japanese0208-1983 : Fixed (jis) 23pt Western : Times 24pt Courrier 18pt J'avais un petit script en Perl pour modifier l'exécutable de netscale (afin qu'il ne m'impose pas ses couleurs), mais j'ai dû l'effacer. Maintenant, ça a l'air d'être configurable. Edit->Preferences->Appereance->Colors Blanc sur fond noir orange pour les nouveaux liens rouge pour les vieux toujours prendre mes couleurs ---------------------------------------------------------------------- CONFIGURER ZSH Installer zsh rpm -i zsh....rpm Changer le shell chsh -s /bin/zsh Dans le fichier ~/.zshrc Le prompt A gauche, un % (ou un #, si on est root), en gras PS1='%B%#%b ' A droite, le nom du répertoire courrant RPS1=' %B%~%b' Le prompt dans une fenetre xterm On peut mettre des couleurs dans une fenetre xterm (dans la ligne suivante, remplacer ESC par la touche ESC ; poue la taper sous zsh ou vi, la précéder de C-v, sous emacs, la précéder de C-q) echo 'ESC[35m' toto On peut aussi écrire dans la barre de titre de la fenetre (remplacer ^G par C-G). echo 'ESC]2; Coucou ! ^G' Voici donc une modification possible du prompt PS1='%B%#%b ' PS1='^[]2; %l %~ (%?)^G'$PS1 On constate que zsh n'arrive pas à trouver la largeur correcte du prompt. PS1='%B%#%b ' if [ "$TERM" = "xterm" ] then PS1='%{^[]2; %l %~ (%?)^G%}%B%#%b ' fi Quelques options Lors de la complétion, s'il y a plusieurs choix, il les présente un à un setopt auto_menu pas de beeps setopt nobeep Quand on dit *, cela comprend aussi les fichiers cachés setopt glob_dots Historique setopt nobanghist setopt hist_ignore_dups C-s et C-q n'ont plus de comportement déroutant setopt no_flow_control Quand on quitte le shell, on laisse les commandes lancées en tache de fond setopt no_hup Divers setopt brace_ccl setopt cdable_vars setopt complete_in_word setopt extended_glob setopt hash_cmds setopt hash_dirs setopt long_list_jobs setopt numeric_glob_sort setopt pushd_ignore_dups setopt multios Les paramètres fignore=(.o .elc \~ %) cdpath=(. ~) FCEDIT='vim' unset HISTFILE HISTSIZE=1000 LOGCHECK=60 watch=(all) WATCHFMT="%n@%M %a %l at %T, %W" Divers limit coredumpsize 0 umask 22 Complétion (Il manque des explications) hosts=(dptmaths achille.rip gaston.rip laureline.rip adele.rip valerian.rip carm en.rip asterix.rip natacha.rip pif.rip aaricia.rip spirou.rip corto.rip difool.r ip aria.rip colombe.rip nemo.rip yoko.rip) compctl -g '*(-/)' cd pushd compctl -g '*(-/)' mkdir popd pushd compctl -g '*' rm compctl -g '*(/)' rmdir compctl -g '*(*)' strip gprof compctl -g '*.*ps' + -g '*(-/)' gs ghostview compctl -g '*.tex*' + -g '*(-/)' texi2dvi compctl -g '*.(tex|dtx)*' + -g '*(-/)' latex2e latex compctl -g '*.(tex|ins)*' + -g '*(-/)' tex compctl -g '*.dvi' + -g '*(-/)' xdvi dvips compctl -l '' nohup exec compctl -j -P % -x 's[-] p[1]' -k signals -- kill compctl -j -P "%" bg fg compctl -c man nohup compctl -k hosts -x 's[-]' -k '(l 8 e)' - 'c[-1,-l]' -u -- rlogin compctl -c -x 'p[1]' -k hosts - 'p[2]W[1,-[idn]+]' -k hosts -- on compctl -c -x 'p[3]c[-2,-l],p[1],p[2]c[-1,-n],p[3]c[-1,-n]' -k hosts - 'p[2,3]c[ -1,-l]' -u -- rsh compctl -k hosts telnet ping compctl -k talks -u -S '' -x 'N[0,@]' -k hosts -- talk ytalk compctl -u -S '' -x 'N[0,@]' -k hosts -- finger compctl -k hosts -S: + -f -x 'N[0,:]' -f - 'N[0,@]' -k hosts -S: -- rcp compctl -k hosts -x 'N[0,+-]' -k hosts -- xhost compctl -k "(cputime filesize datasize stacksize coredumpsize resident descript ors)" limit compctl -f -x 'R[-*d,^*]' -g '*.gz *.z *.Z' + -g '*(-/)' -- gzip compctl -g '*.gz *.z *.Z' + -g '*(-/)' gunzip compctl -g '*.Z' + -g '*(-/)' uncompress compctl -D -f # + -U -K multicomp compctl -g '*.(c|a|o)' + -g '*(-/)' gcc cc compctl -g '*.(cc|C|a|o)' + -g '*(-/)' g++ c++ compctl -g '*.(eps|ps|PS)' + -g '*(-/)' lpr psnup gs ghostview lp1 lp2 compctl -g '*.(tar*|tgz)' + -g '*(-/)' tar gtar compctl -g '*.(Z|z)' + -g '*(-/)' znew uncompress compctl -g '*.(gz|Z|z)' + -g '*(-/)' gzcat gunzip Dans le fichier ~/.zshenv Les variables globales sont entourrées de set -a ... set +a qui équivalent à setopt all_export et setopt no_all_export. set -a PAGER=less GREP='egrep' GZIP=-9r LESS='-j4 -sdQwi -P?e--Fin--?x\(%x\).:--Less--?f?n?m\(%f\):\(%lt-%lb/%L\).:\(%lt-%lb/%L\).:\(%lt-%lb\).' LESSCHARSET=latin1 if [ "$TERM" = "kterm" ] then unset LESSCHARSET LESSCHARDEF="8bcccbcc18.95.33b." else fi set +a Je mets aussi les alias alias ll='ls --color -lg' alias lll='\ls -lg | less' alias la='ls --color -lga' alias lla='ls -lga | less' alias e='emacs -nw' alias which-command='whence -a' alias grep='egrep' alias xdvi='xdvi -S 15 +c -rv -gamma 3' alias xterm='xterm -sl 2048' alias kterm='kterm -sl 2048' alias xfig='xfig -specialtext -Portrait -exportLanguage pstex_t' alias m2ps='m2ps -fp /usr/public/lib/fonts' alias kdrill='kdrill -englishfont "-adobe-new century schoolbook-medium-r-normal--25-180-100-100-p-136-iso8859-1" -kanjifont "-*-*-*-*-*-*-60-*-*-*-*-*-jisx0208.1983-*" -noBell' alias remplace='perl -p -i -e' tue() { kill -9 `ps | awk '/'$1'/ { print $1 }'` } alias which='whence' # Sinon, c'est whence -c, ie format csh... alias catm='groff -man -Tlatin1' Dans le fichier ~/.zprofile ---------------------------------------------------------------------- Je me suis acheté un modem... J'ai choisi un fournisseur d'accès internet gratuit : Free. Je l'ai déjà utilisé sous OuineDaube : se connecter une première fois et demander l'ouverture d'un compte ; attendre la réception, par retour du courrier, du mot de passe ; vérifier que l'on peut se connecter sous OuineDauze. Revenons sous Linux. J'ai mis ce qu'ils disaient dans /etc/resolv.conf, /etc/ppp/ et /etc/chatscripts, sans trop comprendre. J'ai pris soin de mettre mon login et mon mot de passe (fournis par Free) là où ils le disaient. J'ai rebooté (sait-on jamais...). (Inutile) Mais je ne sais pas comment ouvrir la connection. Essayons kppp. Ça ne marche pas. Je ne sais pas quoi mettre comme « script ». Je ne sais pas dans quel langage c'est écrit. Je crois que j'ai trouvé : ce doit être pppd, tout simplement. Après lecture de la page de manuel, j'ai envie de lancer : pppd debug call free Le fichier /etc/ppp/peers/free contient les options de pppd. Il lancera aussi /etc/chatscripts/free. L'option debug écrit plein de choses dans /var/log/messages. Pour terminer la connection, éteindre et débrancher le modem (il doit y avoir un moyen plus simple, mais...). La durée totale de la connection est indiquée dans /var/log/messages. Pour avoir le cout : 0.74 + (t-3)*0.14 (si t>3). perl -n -e 'if( m/Connect time ([0-9.]*)/ ){ print 0.74 + ($1-3)*0.14 ; print "\n"; }' /var/log/messages Pour lire le courrier électronique : il faut le récupérer sur le serveur POP, par exemple avec fetchmail -a que l'on lancera explicitement après s'être connecté. (Il doit y avoir un moyen de faire cela automatiquement, mais je ne sais pas.) Dans le fichier de configuration ~/.fetchmailrc, j'ai mis : poll pop.free.fr protocol pop3 username zoonek password ******** (remplacer les étoiles par le mot de passe) Pour envoyer du courrier électronique : utiliser pine. Il faudrait pouvoir le faire « offline » : écrire avant d'être connecté puis envoyer, automatiquement, lors de la connection. Pour lire les Niouzes ? On peut le faire directement, mais il sera plus économique de télécharger les articles pour les lire ensuite. Avec un utilitaire du genre linleech ou suck. Pour écrire dans les Niouzes ? ---------------------------------------------------------------------- CONFIGURER EMACS ~/.emacs DOCUMENTATION : ??? AUSSI : regarder les menus d'XEmacs. Par exemple Options -> Size -> 18 Options -> Save Options Et après, on constate que cela ne marche pas... Par exemple Options -> Customize -> Face Modifier toutes les couleurs désirées (par exemple, remplacer le bleu illisible (sur un fond noir) par deepskyblue) [Pour avoir le nom des couleurs, on peut lancer gcolorsel ou directement regarder dans /usr/X11R6/lib/X11/rgb.txt] Sauvegarder AUSSI : ressources X, dans ~/.Xdefaults Emacs*Background: Black Emacs*Foreground: WhiteSmoke Emacs.font: -*-Courier-Medium-R-*-*-*-180-*-*-*-*-iso8859-1 Emacs.geometry: 80x35 Lors des essais, il est nécessaire de recharger explicitement ce fichier à l'aide de xrbd -merge ~/.Xdefaults 0. Utilisation d'Emacs C-g arréter l'opération en cours C-h t Tutoriel C-x C-f Ouvre / Crée un fichier C-x C-s Sauvegarde un fichier C-x C-c Quitte Emacs C-f Cherche une chaine de caractères C-r Cherche une chaine de caractères à reculons M-x toto Lance la commande LISP toto Quand on tape M-x quelque-chose, on peut utilise la touche de tabulation pour la complétion. C-h ? C-h k C-h a C-h a C-h i INFO C-x 5 2 Nouvelle fenetre (meme processus) C-k kill line C-y yank M-y yank next in kill ring C-_ Undo C-x b C-x 1 C-x 2 C-x 3 C-u 70 - C-x C-e Évaluer une expression LISP 1. Redéfinir certaines touches Pour que les touches C-a C-b lancent la fonction lisp toto (global-set-key "\C-a\C-a" 'toto) Pour que la touche F1 lance la commande toto (global-set-key [f1] 'toto) Meme avec la souris (global-set-key [S-mouse-2] 'netscape-fetch-url-at-mouse) Pour définir des combinaisons de touches comme étant synonymes d'autres combinaisons de touches. (global-set-key [home] "\C-a") (global-set-key [end] "\C-e") (global-set-key [f5] (key-binding "\C-x5") ) ; touche f5 (global-set-key [f8] (key-binding "\C-x8") ) ; touche f8 Pour cela, il faut connaitre le nom des fonctions Lisp dont on a besoin. Le problème, c'est qu'il y en a un nombre incroyable... (global-set-key "\M-g" 'goto-line) (global-set-key [f6] 'help-command) (global-set-key [f7] 'find-file) (global-set-key [f9] 'undo) Les deux lignes suivantes sont équivalentes (global-set-key "\C-xl" 'make-symbolic-link) (define-key global-map "\C-xl" 'make-symbolic-link) ??? (define-key global-map [M-S-down-mouse-3] 'imenu) (define-key global-map [(control x) return] nil) (define-key emacs-lisp-mode-map '(control C) 'compile-defun) (define-key emacs-lisp-mode-map '(control E) 'eval-defun) (global-unset-key "\C-x\C-v") Remarque tirée de la FAQ Emacs has a legacy of keyboards that produced characters with modifier bits, and therefore map a variety of input systems into this scheme even today. XEmacs is instead optimized for X events. This causes an incompatibility in the way key sequences are specified, but both Emacs and XEmacs will accept a key sequence as a vector of lists of modifiers that ends with a key, e.g., to bind `M-C-a', you would say `[(meta control a)]' in both Emacsen. XEmacs has an abbreviated form for a single key, just (meta control a). Emacs has an abbreviated form for the Control and the Meta modifiers to string-characters (the ASCII characters), as in `\M-\C-a'. XEmacs users need to be aware that the abbreviated form works only for one-character key sequences, while Emacs users need to be aware that the string-character is rather limited. Specifically, the string-character can accommodate only 256 different values, 128 of which have the Meta modifier and 128 of which have not. In each of these blocks, only 32 characters have the Control modifier. Whereas `[(meta control A)]' differs from `[(meta control a)]' because the case differs, `\M-\C-a' and `\M-\C-A' do not. Programmers are advised to use the full common form, both because it is more readable and less error-prone, and because it is supported by both Emacsen. Another (even safer) way to be sure of the key-sequences is to use the `read-kbd-macro' function, which takes a string like `C-c ', and converts it to the internal key representation of the Emacs you use. The function is available both on XEmacs and GNU Emacs. Encore des exemples (noter la présence de « interactive ») (global-set-key [f18] (lambda () (interactive) (x-insert-selection t nil))) 1bis. Redéfinir la barre de menus (add-menu-button nil ["Top" beginning-of-buffer t]) (add-menu-button nil ["<<<" scroll-down t]) (add-menu-button nil [" . " recenter t]) (add-menu-button nil [">>>" scroll-up t]) (add-menu-button nil ["Bot" end-of-buffer t])) Redéfinir la barre de menus (load "big-menubar") Voir aussi le contenu de big-menubar.el 2. Chargement de fichiers Extensions *.el Fichiers lisp *.elc Fichiers lisp compilés Comment faire pour compiler ces fichiers ??? Lire le contenu d'un fichier (load "/usr/local/share/emacs/site-lisp/tex-site.el") ;auc-tex ??? ('require 'zorro) Et dans zorro.el : (provide 'zorro) ??? (load-library "completer") Charger un fichier (ici, skk.el) qui contient la définition de la fonction skk, mais uniquement quand on aura besoin de cette fonction. L'argument nil est une chaine de caractères expliquant le role de la fonction. (autoload 'skk-mode "skk" nil t) Chemins (normalement, ils sont bien configutés par défaut) (setq load-path (append (list "/usr/local/share/emacs/site-lisp/" "/usr/local/share/emacs/site-lisp/auctex" "/usr/share/emacs/site-lisp" "." ) load-path)) On peut par contre rajouter des choses sur son compte ??? (getenv "HOME") 3. Rudiments de programmation en LISP Les lignes commençant par un point-virgule sont des commentaires. Définir une variable (nombre, chaine de caractères, etc). (setq ma-variable 0) C'est probablement tout ce dont vous aurez besoin. La vraie commande s'appelle en fait set. (set 'ma-variable 0) Exécuter une commande (commande) Exécuter une commande avec des arguments (commande 1 2 3 4 5) (+ 1 1) (message "Coucou !") Chaines de caractères (setq toto "abc") (setq toto (concat toto "def")) string-to-int substring Listes ;;; Add things at the beginning of the load-path, do not add ;;; duplicate directories: (pushnew "bar" load-path :test 'equal) Listes ;;; Add things at the end, unconditionally (setq load-path (nconc load-path '("foo" "bar"))) Noms de répertoires (push (expand-file-name "~keithh/.emacsdir") load-path) Définir une fonction (defun toto () (...) (...) (...) ) Définir une fonction avec des arguments (defun toto (a b) (+ a b)) Une fonction qui ne porte pas de nom (lambda () (...)) (lambda (a b) (+ a b)) On peut utilise le mot-clef lambda pour définir une fonction (setq toto (lambda (a b) (+ a b))) Une macro est une fonction dont les arguments ne sont pas évalués. (defmacro GNUEmacs (&rest x) (list 'if (string-match "GNU Emacs 20" (version)) (cons 'progn x))) (defmacro XEmacs (&rest x) (list 'if (string-match "XEmacs 20" (version)) (cons 'progn x))) (defmacro Xlaunch (&rest x) (list 'if (eq window-system 'x)(cons 'progn x))) Insérer du texte dans le buffer courrant (insert "Coucou!") Conditionnelles (if (< 0 1) ("ok") ("ko")) (if (equal 'toto "abc") ... ) On a bien évidemment or and not ( and (< 0 1) (< 2 1) ) ( or (< 0 1) (< 1 2) ) ( not (< 0 1) ) Les valeurs vrai et faux sont t et nil (setq vrai t) (setq faux nil) Conditionnelles : les deux exemples suivants sont équivalents (if (< 0 1) (progn (...) (...) ... )) (cond (< 0 1) (...) (...) ... ) Fonctions (ou variables) dont le résultat est booléen (if (boundp 'MULE) (if (featurep 'xpm) string-match Variables locales (let ((a 0) (b 1) (c 2) (d -1)) (...) (...) ... ) Table de hachage (aka alist) Utilisation d'une table de hachage Ajouter à une table de hachage (setq foo-alist (append '( ("toto" . tutu) ("titi" . aaa) ) foo-alist)) Expressions régulières 4. Hooks (add-hook 'text-mode-hook 'turn-on-auto-fill) (add-hook 'LaTeX-mode-hook '(lambda () (...) (...) (...) )) La table de hachage contenant la correspondance entre les expressions régulières de noms de fichiers et le mode à charger lors du chargement de ces fichiers. (setq auto-mode-alist (cons '("\\.ml[iylp]?" . caml-mode) auto-mode-alist)) Autre exemple (setq auto-mode-alist (append '(Encore des exemples (noter la présence de « interactive ») (global-set-key [f18] (lambda () (interactive) (x-insert-selection t nil))) 1bis. Redéfinir la barre de menus (add-menu-button nil ["Top" beginning-of-buffer t]) (add-menu-button nil ["<<<" scroll-down t]) (add-menu-button nil [" . " recenter t]) (add-menu-button nil [">>>" scroll-up t]) (add-menu-button nil ["Bot" end-of-buffer t])) Redéfinir la barre de menus (load "big-menubar") Voir aussi le contenu de big-menubar.el 2. Chargement de fichiers Extensions *.el Fichiers lisp *.elc Fichiers lisp compilés Comment faire pour compiler ces fichiers ??? Lire le contenu d'un fichier (load "/usr/local/share/emacs/site-lisp/tex-site.el") ;auc-tex ??? ('require 'zorro) Et dans zorro.el : (provide 'zorro) ??? (load-library "completer") Charger un fichier (ici, skk.el) qui contient la définition de la fonction skk, mais uniquement quand on aura besoin de cette fonction. L'argument nil est une chaine de caractères expliquant le role de la fonction. (autoload 'skk-mode "skk" nil t) Chemins (normalement, ils sont bien configutés par défaut) (setq load-path (append (list "/usr/local/share/emacs/site-lisp/" "/usr/local/share/emacs/site-lisp/auctex" "/usr/share/emacs/site-lisp" "." ) load-path)) On peut par contre rajouter des choses sur son compte ??? (getenv "HOME") 3. Rudiments de programmation en LISP Les lignes commençant par un point-virgule sont des commentaires. Définir une variable (nombre, chaine de caractères, etc). (setq ma-variable 0) C'est probablement tout ce dont vous aurez besoin. La vraie commande s'appelle en fait set. (set 'ma-variable 0) Exécuter une commande (commande) Exécuter une commande avec des arguments (commande 1 2 3 4 5) (+ 1 1) (message "Coucou !") Chaines de caractères (setq toto "abc") (setq toto (concat toto "def")) string-to-int substring Listes ;;; Add things at the beginning of the load-path, do not add ;;; duplicate directories: (pushnew "bar" load-path :test 'equal) Listes ;;; Add things at the end, unconditionally (setq load-path (nconc load-path '("foo" "bar"))) Noms de répertoires (push (expand-file-name "~keithh/.emacsdir") load-path) Définir une fonction (defun toto () (...) (...) (...) ) Définir une fonction avec des arguments (defun toto (a b) (+ a b)) Une fonction qui ne porte pas de nom (lambda () (...)) (lambda (a b) (+ a b)) On peut utilise le mot-clef lambda pour définir une fonction (setq toto (lambda (a b) (+ a b))) Une macro est une fonction dont les arguments ne sont pas évalués. (defmacro GNUEmacs (&rest x) (list 'if (string-match "GNU Emacs 20" (version)) (cons 'progn x))) (defmacro XEmacs (&rest x) (list 'if (string-match "XEmacs 20" (version)) (cons 'progn x))) (defmacro Xlaunch (&rest x) (list 'if (eq window-system 'x)(cons 'progn x))) Insérer du texte dans le buffer courrant (insert "Coucou!") Conditionnelles (if (< 0 1) ("ok") ("ko")) (if (equal 'toto "abc") ... ) On a bien évidemment or and not ( and (< 0 1) (< 2 1) ) ( or (< 0 1) (< 1 2) ) ( not (< 0 1) ) Les valeurs vrai et faux sont t et nil (setq vrai t) (setq faux nil) Conditionnelles : les deux exemples suivants sont équivalents (if (< 0 1) (progn (...) (...) ... )) (cond (< 0 1) (...) (...) ... ) Fonctions (ou variables) dont le résultat est booléen (if (boundp 'MULE) (if (featurep 'xpm) string-match Variables locales (let ((a 0) (b 1) (c 2) (d -1)) (...) (...) ... ) Variables locales auxquelles on ne donne pas de valeur au début (ie, nil) (let (a b c d) ... ) Boucles while (let ((l (hairy-function-that-returns-list))) (while l ... do something with (car l) ... (setq l (cdr l)))) Table de hachage (aka alist) Utilisation d'une table de hachage Ajouter à une table de hachage (setq foo-alist (append '( ("toto" . tutu) ("titi" . aaa) ) foo-alist)) Expressions régulières 4. Hooks (add-hook 'text-mode-hook 'turn-on-auto-fill) (add-hook 'LaTeX-mode-hook '(lambda () (...) (...) (...) )) La table de hachage contenant la correspondance entre les expressions régulières de noms de fichiers et le mode à charger lors du chargement de ces fichiers. (setq auto-mode-alist (cons '("\\.ml[iylp]?" . caml-mode) auto-mode-alist)) Autre exemple (setq auto-mode-alist (append '(("\\.[CH]$" . c++-mode) ("\\.cc$" . c++-mode) ("\\.hh$" . c++-mode) ("\\.c$" . c-mode) ("\\.h$" . c-mode) ("\\.[pP][lLm]$" . perl-mode) ("\\.m$" . matlab-mode) ("\\.html$" . html-helper-mode) ("\\.gp$" . gnu-plot-mode) ("\\.map$" . maple2-mode) ("\\.py$" . python-mode) ("\\.scm$" . scheme-mode) ) auto-mode-alist)) 5. Choses intéressantes Mode par défaut (quand on ouvre un fichier quelconque) (setq default-major-mode 'text-mode) (setq text-mode-hook '(lambda () (auto-fill-mode 1))) (setq text-mode-hook 'turn-on-auto-fill) Mode dans le *scratch* buffer (setq initial-major-mode (lambda () (text-mode) (turn-on-auto-fill) (font-lock-mode) )) Pour taper les accents sur un clavier qwerty : F8 accent lettre (load "iso-insert") (global-set-key [f8] (key-binding "\C-x8") ) Idem, sans la touche F8 (autoload 'latin1-mode "latin1-mode" "Enable floating accents" t) AUCTeX (load "/usr/local/share/emacs/site-lisp/tex-site.el") Touches PageUp et PageDown (defun toy-scroll-up (&optional n) (interactive "p") ( next-line (* (or n 1) (- (window-height) next-screen-context-lines )))) (defun toy-scroll-down (&optional n) (interactive "p") ( previous-line (* (or n 1) (- (window-height) next-screen-context-lines )))) (fset 'scroll-down 'toy-scroll-down) (fset 'scroll-up 'toy-scroll-up) Ne pas rajouter de lignes blanches à la fin d'un fichier (setq next-line-add-newlines nil) Affiche les numéros de ligne (setq line-number-mode t) Afficher quelque chose lors du chargement (?) (add-hook 'term-setup-hook '(lambda nil (message (concat "Zorro version " Zorro-version "...")))) Pour savoir si on est dans un environement graphique (defmacro Xlaunch (&rest x) (list 'if (eq window-system 'x)(cons 'progn x))) Pour savoir s'il s'agit de Mule (if (boundp 'MULE) (...) ) Un exemple de fonction tirée de la FAQ (defun double-word (count) "Insert a copy of the current word underneath the cursor" (interactive "*p") (let (here there string) (save-excursion (forward-word -1) (setq here (point)) (forward-word 1) (setq there (point)) (setq string (buffer-substring here there))) (while (>= count 1) (insert string) (decf count)))) Scroll one line at a time (defun scroll-one-line-up (&optional arg) "Scroll the selected window up (forward in the text) one line (or N lines)." (interactive "p") (scroll-up (or arg 1))) (defun scroll-one-line-down (&optional arg) "Scroll the selected window down (backward in the text) one line (or N)." (interactive "p") (scroll-down (or arg 1))) (global-set-key [up] 'scroll-one-line-up) (global-set-key [down] 'scroll-one-line-down) Scroll one line at a time (setq scroll-step 1) Syntactic sugar cl.el Enlever le son (setq bell-volume 0) (setq sound-alist nil) 5 bis. Exemple de ~/.emacs ;; Mode par défaut (setq default-major-mode 'text-mode) (setq text-mode-hook 'turn-on-auto-fill) ;; Couleurs (setq font-lock-mode-maximum-decoration t) (require 'font-lock) (if (fboundp 'global-font-lock-mode) (global-font-lock-mode t) ) ;; Son (setq bell-volume 0) (setq sound-alist nil) ;; Options diverses (setq mouse-yank-at-point t) (setq next-line-add-newlines nil) (setq line-number-mode t) ;; Accents (standard-display-european t) ; Afficher les caractères accentués (au lieu de \0111) (set-input-mode nil nil t) ; Ne pas enlever le huitième bit (require 'iso-syntax) ; (load "iso-insert") (global-set-key [f8] (key-binding "\C-x8") ) ; Je constate avec effroi que la touche morte « ^ » ne marche pas. ; Mais solution n'est peut-être pas très propre, mais bon... (global-set-key [dead-circumflex] (key-binding "\C-x8^") ) ;; Touches (global-set-key [f5] (key-binding "\C-x5") ) ;; La touche Backspace dans une fenetre Xterm ;; (On ne peut donc plus utiliser C-h ; de toute manière, ;; dans une fenetre Xterm, on ne pouvait pas voir la différence.) ;; C-h était utilisé pour le système d'aide, on peut prendre F1 à la place. (if (eq window-system nil) (global-set-key "\C-h" 'delete-backward-char) ) ;; Couleurs même dans une fenêtre xterm (if (eq 'tty (device-type)) (set-device-class nil 'color)) ;; Touches PageUp et PageDown (defun toy-scroll-up (&optional n) (interactive "p") ( next-line (* (or n 1) (- (window-height) next-screen-context-lines )))) (defun toy-scroll-down (&optional n) (interactive "p") ( previous-line (* (or n 1) (- (window-height) next-screen-context-lines )))) (fset 'scroll-down 'toy-scroll-down) (fset 'scroll-up 'toy-scroll-up) ;; Copier-coller avec la souris (setq mouse-yank-at-point t) ;; AUCTeX (load "tex-site.el") (add-hook 'LaTeX-mode-hook '(lambda () (LaTeX-math-mode) (setq LaTeX-default-environment "defi") (setq LaTeX-default-style "article") (setq LaTeX-default-options '("a4paper,12pt")) (LaTeX-add-environments '("theoenum" LaTeX-env-item) '("axiomenum" LaTeX-env-item) '("exercices" LaTeX-env-item)) (add-hook 'LaTeX-document-style-hook '(lambda nil (save-excursion (search-backward "\\documentclass") (search-forward "\n") (insert "\ \\usepackage[latin1]{inputenc}\n\ \\usepackage[T1]{fontenc}\n\ \\usepackage{amsmath,amssymb}\n\ \\usepackage{french}\n\ %\\usepackage[all]{xy}\n")))) )) ;; Interface (C'est Emacs qui m'a dit de mettre set-specifier et pas setq) (set-specifier default-toolbar-visible-p nil) ;; Ce qui reste à faire ;; ispell ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Ce qui suit a été rajouté par Emacs lui-meme... (custom-set-variables '(user-mail-address "zoonek@math.jussieu.fr" t) '(query-user-mail-address nil)) (custom-set-faces '(secondary-selection ((t (:foreground "black" :background "paleturquoise"))) t) '(font-lock-preprocessor-face ((t (:foreground "deepskyblue"))) t) '(font-lock-variable-name-face ((t (:foreground "deepskyblue"))) t) '(blue ((t (:foreground "deepskyblue"))) t) '(message-separator-face ((((class color) (background dark)) (:foreground "deepskyblue")))) '(font-lock-function-name-face ((t (:foreground "deepskyblue"))) t) '(message-header-xheader-face ((((class color) (background dark)) (:foreground "deepskyblue")))) '(isearch ((t (:foreground "black" :background "paleturquoise"))) t) '(highlight ((t (:foreground "black" :background "darkseagreen2"))) t)) ;; Options Menu Settings ;; ===================== (cond ((and (string-match "XEmacs" emacs-version) (boundp 'emacs-major-version) (or (and (= emacs-major-version 19) (>= emacs-minor-version 14)) (= emacs-major-version 20)) (fboundp 'load-options-file)) (load-options-file "/home/zoonek/.xemacs-options"))) ;; ============================ ;; End of Options Menu Settings 6. CHOSES QUE J'AI LUES DANS LA FAQ MAIS PAS ENCORE COMPRISES Here is a solution that will insert the glyph annotation at the beginning of buffer: (make-annotation (make-glyph '([FORMAT :file FILE] [string :data "fallback-text"])) (point-min) 'text (current-buffer)) Replace `FORMAT' with an unquoted symbol representing the format of the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.) Instead of `FILE', use the image file name (e.g. `/usr/local/lib/xemacs-20.2/etc/recycle.xpm'). You can turn this to a function (that optionally prompts you for a file name), and inserts the glyph at `(point)' instead of `(point-min)'. Can I have the end of the buffer delimited in some way? ======================================================= Say, with: `[END]'? Try this: (let ((ext (make-extent (point-min) (point-max)))) (set-extent-property ext 'start-closed t) (set-extent-property ext 'end-closed t) (set-extent-property ext 'detachable nil) (set-extent-end-glyph ext (make-glyph [string :data "[END]"]))) Since this is XEmacs, you can specify an icon to be shown on window-system devices. To do so, change the `make-glyph' call to something like this: (make-glyph '([xpm :file "~/something.xpm"] [string :data "[END]"])) You can inline the XPM definition yourself by specifying `:data' instead of `:file'. Here is such a full-featured version that works on both X and TTY devices: (let ((ext (make-extent (point-min) (point-max)))) (set-extent-property ext 'start-closed t) (set-extent-property ext 'end-closed t) (set-extent-property ext 'detachable nil) (set-extent-end-glyph ext (make-glyph '([xpm :data "\ /* XPM */ static char* eye = { \"20 11 7 2\", \"__ c None\" \"_` c #7f7f7f\", \"_a c #fefefe\", \"_b c #7f0000\", \"_c c #fefe00\", \"_d c #fe0000\", \"_e c #bfbfbf\", \"___________`_`_`___b_b_b_b_________`____\", \"_________`_`_`___b_c_c_c_b_b____________\", \"_____`_`_`_e___b_b_c_c_c___b___b_______`\", \"___`_`_e_a___b_b_d___b___b___b___b______\", \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\", \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\", \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\", \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\", \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\", \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\", \"___`_____`_`_`_`___b_b_b_b_b_b__________\", } ;"] [string :data "[END]"])))) Note that you might want to make this a function, and put it to a hook. We leave that as an exercise for the reader. (insert (current-time-string)) (setq Info-directory-list (cons (expand-file-name "~/info") Info-default-directory-list)) ---------------------------------------------------------------------- GNUS http://www.gnus.org/manual.html 1. Scoring I a s p Augmente le score de l'auteur I s s p Augmente le score du sujet (on nous propose de modifier ce sujet) 2. Hierarchical display of groups (aka Group topics) La ligne suivante est déjà présenta dans le ~/.emacs (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) on peut préfiser toutes ces commandes d'un argument numérique : elles agiront sur les $n$ groupes suivants (y compris le groupe courrant). T n Créer un nouveau noeud se placer dans le noeud parent le nouveau noeud sera le dernier noeud-fils de ce noeud-parent Si le groupe n'a pas le bon niveau, on peut utiliser TAB M-TAB gnus-topic-delete Pour effacer un noeud T m Déplace un groupe T c Copie un groupe à un autre endroit T D Enlève un groupe d'un noeud (en le laissant dans les autres, s'il était présent en double) T M Déplacer des groupes vérifiant une certaine expression régulière 3. Charsets Ca marche tout seul avec une version plus récente de Gnus... Je pense qu'il faudrait une version plus récente de gnus. Ce n'est pas le bon gnus qui est chargé... Si. C'est la version 5.6.45 C'est loin d'être la dernière... La dernière est 5.8.3. Essayons de l'installer. ./configure --prefix=$HOME/gnu/`uname` && make EMACS=xemacs make EMACS=xemacs install ----------------- Fontes sous XEmacs. D'une part dans ~/.Xdefaults Emacs.default.attributeFont: -b&h-lucidatypewriter-medium-r-normal-sans-24-240-75-75-m-140-iso8859-1 Emacs.italic.attributeFont: -b&h-lucidabright-demibold-i-normal--24-240-75-75-p-143-iso8859-1 (La deuxième ligne n'est nécessaire que parce que la fonte choisie par défaut n'a pas d'italique.) D'autre part dans le ~/.emacs (set-face-font 'default "-b&h-lucidatypewriter-bold-r-normal-sans-24-240-75-75-m-140-iso8859-1") (set-face-font 'modeline "-adobe-courier-bold-r-normal--25-*") Ce qui est défini dans le ~/.emacs prned le pas sur ce qui est dans le ~/.Xdefault --------------------- --------------------- Couleurs sous XEmacs ;; J'inverse les couleurs... (if (string-match "XEmacs" emacs-version) (progn ;;; Couleurs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; A FAIRE (set-face-background 'default "wheat") ; fond du cadre (set-face-foreground 'default "black") ; texte normal (set-face-background 'zmacs-region "red") ; Quand on selectionne (souris) (set-face-foreground 'zmacs-region "yellow") (set-face-font 'default "-adobe-courier-bold-r-normal--25-*") ;(set-face-font 'default "-b&h-lucidatypewriter-bold-r-normal-sans-24-240-75-75-m-140-iso8859-1") (set-face-background 'highlight "blue") ; Quand on selectionne des tampons (set-face-foreground 'highlight "yellow") (set-face-background 'modeline "wheat") ; Ligne en bas du tampon (set-face-foreground 'modeline "red") (set-face-font 'modeline "-adobe-courier-bold-r-normal--25-*") (set-face-background 'isearch "red") ; Mise en evidence (recherche) (set-face-foreground 'isearch "yellow") (setq x-pointer-foreground-color "black") ; S'ajoute a la couleur du fond ; reste donc noir (setq x-pointer-background-color "bisque") ; Ceci est la couleur que vous ; voulez vraiment pour ptr/crsr )) ---------------------------------------------------------------------- REGARDER CE QUI A ETE INSTALLE rpm --query --queryformat '%20{NAME} %{SUMMARY}\n' --all | less CONTENU DE L'UN DES PAQUETAGES rpm --query -i gnome-media rpm --query --list gnome-media rpm --query --scripts gnome-media Pour ceux qui aiment les cliquodromes... gnorpm REGARDER CE QU'IL Y AVAIT SUR LE CD ---------------------------------------------------------------------- RECOMPILER LE NOYAU, MODULES ---------------------------------------------------------------------- Choses rajoutées rpm -i /mnt/cdrom/Mandrake/RPMS/zsh-3.0.5-12mdk.i586.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/sgml-tools-1.0.9-3mdk.i586.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/cdparanoia-IIIa5-mdk2.i386.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/freetype-1.2-7mdk.i586.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/ispell-francais-IREQ-1.4-2mdk.noarch.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/ttfonts-1.3-3mdk.i586.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/xemacs-el-20.4-6mdk.i586.rpm rpm -i /mnt/cdrom/Mandrake/RPMS/xemacs-info-20.4-6mdk.i586.rpm ---------------------------------------------------------------------- LISTE DE LOGICIELS MUSIQUE x11amp (maintenant xmms) : joueur de fichiers mp3, *.wav, etc. cdparanoia : CD audio --> fichiers *.wav bladeenc : convertisseur wav --> mp3 cdp, cdplay : lecteur de CD audio en mode texte xplaycd : lecteur de CD audio, interface graphique GRAPHISME xv, gqview, ee, display : visualiseurs d'images gimp : retouche d'image xwd : capture d'écran povray : ray tracing (pas installé !)