Description officielle :
En gros, c'est la base de ce que l'on peut attendre d'un navigateur web. Et il le fait bien, avec simplicité, élégance et rapidité.
Comme ils le précisent2), les développeurs veulent faire de surf une simple interface avec le web.
Ici, pas de chichi, pas de blabla, pas d'onglet (il peut être exécuté au sein d'une application comme tabbed pour cela), pas d'historique, de favoris.
Comme l'ensemble des outils suckless, il est extrêmement hackable et tout ceci peut donc être ajouté en patchant le code.
La meilleure façon de l'installer est donc de récupérer son code source, le cas échéant d'appliquer les patchs désirés, de le configurer aux petits oignons puis de le compiler.
Je vous propose de récupérer le code de la toute dernière version sur la page git du projet à
ou directement en ligne de commande :
wget http://git.suckless.org/surf/snapshot/surf-0.6.zip
git clone http://git.suckless.org/surf
On dézippe le cas échéant :
unzip surf-0.6.zip
On rentre ensuite dans le dossier surf :
cd surf*
Dans un premier temps, nous allons chercher à configurer le navigateur selon nos goûts.
Comme pour l'ensemble des logiciels suckless, cela se passe dans le fichier config.def.h
.
Dans ce tuto, nous nous pencherons plus particulièrement sur les options de webkit :
/* Webkit default features */ static Bool enablescrollbars = FALSE; /* activer ou non la barre de défilement */ static Bool enablespatialbrowsing = TRUE; static Bool enablediskcache = TRUE; static int diskcachebytes = 5 * 1024 * 1024; static Bool enableplugins = TRUE; /* activer ou non les plugins par défaut */ static Bool enablescripts = TRUE; /* activer ou non l'exécution des scripts par défaut */ static Bool enableinspector = TRUE; /* activer l'inspecteur de code ou non */ static Bool enablestyles = TRUE; static Bool loadimages = TRUE; /* charger automatiquement les images ou pas */ static Bool hidebackground = FALSE; static Bool allowgeolocation = FALSE; /* autoriser la géolocalisation (pour la langue entre autre) ou non */
On pourrait s'arrêter là, compiler et utiliser surf.
Mais de base celui-ci ne propose pas de gestion
Nous allons donc rajouter tout cela à l'aide des patchs disponibles sur le site.
Les patchs que je vous propose d'installer sont :
Pour appliquer les patchs, en admettant que vous ayez suivi ce tuto et cloné depuis le dépôt git, il suffit de se placer dans le répertoire de surf et de faire :
git apply /chemin/vers/pnom_du_patch.diff
En cas d'échec (ce qui peut arriver malheureusement suivant les évolutions respectives de surf et du patch en question), il faudra l'appliquer à la main, en incluant via copier/coller les lignes du patch (commençant par “+”)dans le code et en retirant celle commençant par “-”.
Autant les patchs bookmark et homepage fonctionnent très bien comme ça, autant le patch history ne me satisfait pas dans la mesure où il ajoute les urls visitées les unes à la suite des autres. Je l'ai donc modifié en ajoutant un retour chariot :
diff -up surf-0.4.1/config.def.h surf-0.4.1-history/config.def.h --- surf-0.4.1/config.def.h 2010-06-08 03:06:41.000000000 -0400 +++ surf-0.4.1-history/config.def.h 2010-12-25 20:00:08.000000000 -0500 @@ -5,6 +5,7 @@ static char *progress_trust = "#00FF00"; static char *stylefile = ".surf/style.css"; static char *scriptfile = ".surf/script.js"; static char *cookiefile = ".surf/cookies.txt"; +static char *historyfile = ".surf/history"; static time_t sessiontime = 3600; #define NOBACKGROUND 0 diff -up surf-0.4.1/surf.c surf-0.4.1-history/surf.c --- surf-0.4.1/surf.c 2010-06-08 03:06:42.000000000 -0400 +++ surf-0.4.1-history/surf.c 2010-12-25 19:50:51.000000000 -0500 @@ -140,6 +140,7 @@ cleanup(void) { while(clients) destroyclient(clients); g_free(cookiefile); + g_free(historyfile); g_free(scriptfile); g_free(stylefile); } @@ -396,6 +397,10 @@ loaduri(Client *c, const Arg *arg) { } else { webkit_web_view_load_uri(c->view, u); + FILE *f; + f = fopen(historyfile, "a+"); + fprintf(f, "\n%s" ,u); + fclose(f); c->progress = 0; c->title = copystr(&c->title, u); g_free(u); @@ -689,6 +694,7 @@ setup(void) { /* dirs and files */ cookiefile = buildpath(cookiefile); + historyfile = buildpath(historyfile); scriptfile = buildpath(scriptfile); stylefile = buildpath(stylefile);
Afin d'afficher simplement l'historique, je vous propose une modification de la fonction sETURI à rajouter dans votre config.def.h
. Elle renvoie le contenu du fichier contenant l'historique ($HOME/.surf/history) dans dmenu
:
#define SETURI { \
.v = (char *[]){ "/bin/sh", "-c", \
"prop=\"`xprop -id $0 _SURF_URI" \
" | cut -d '\"' -f 2" \
" | tac - \"${HOME}/.surf/bookmarks\" \"${HOME}/.surf/history\"" \
" | awk '!x[$0]++'" \
" | dmenu -i -l 10`\"" \
" && xprop -id $0 -f _SURF_GO 8s -set _SURF_GO \"$prop\"", \
winid, NULL \
} \
}
Le raccourci Ctrl+G affiche à présent l'ensemble de vos marque-pages ainsi que l'historique, vous permettant ainsi de choisir le site à charger.
Une fois que les fichiers surf.c
et config.def.h
sont prêts, nous allons compiler notre logiciel.
Vous aurez besoin de dépendances : libwebkitgtk-1.0-0, libwebkitgtk-dev et dmenu, je vous propose de les installer directement avec un :
apt-get build-dep surf
puis d'installer notre navigateur :
make clean install
surf est très simple d'utilisation et se pilote bien au clavier et à la souris.
Pour le lancer :
surf http://url-a-visiter.net
Dans ma configuration, j'ai désactivé par défaut les scripts, les plugins et l'affichage des images ainsi que les cookies.
Si je veux visiter un site où ces “fonctionnalités” me sont ponctuellement utiles, je lance surf avec les options adéquates :
surf -SPI -a a www.url-a-visiter.net
Pour ceux qui utilisent tabbed, un autre outil suckless, voici comment lancer surf à l'intérieur de ce dernier afin d'obtenir un navigateur à onglets comme on en a maintenant l'habitude.
tabbed -c surf -e
Ils sont basés sur les raccourcis de types “vim” :
Action | Touche | Ajout |
---|---|---|
Ouvrir l'URL | Ctrl+G (ouvre dmenu pour la saisie) | |
Site précédent | Ctrl+H | |
Site suivant | Ctrl+L | |
Scroll bas | Ctrl+J | |
Scroll haut | Ctrl+K | |
Scroll à droite | Ctrl+U | |
Scroll à gauche | Ctrl+I | |
Ajouter un signet | Ctrl+A (si le patch est appliqué) | |
Activer ou désactiver… | Ctrl+Maj + … | |
… (les cookies) | C | |
… (les images) | I | |
… (les scripts) | S | |
… (les plugins) | V |
surf est un navigateur léger et élégant qui fait la part belle à la navigation sans fioriture. Il est extensible et personnalisable facilement.
Certes la façon de le configurer et de le compiler le destine plutôt aux utilisateurs avancés mais j'espère que ce tuto permettra aux utilisateurs de tout niveau de le tester.
— Sogal 27/05/2015 21:50