logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Ceci est une ancienne révision du document !


Surf, navigateur web simple par suckless.org

Introduction

Description officielle:

Surf est un navigateur web simple basé sur webkit/gtk+. Il est capable d'afficher des sites web et de suivre des liens.

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écisent [1], les dévelopeurs veulent faire de surf une simple interface avec le web.
Ici, pas de chichis, pas de blablas, 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, d'appliquer les patchs désirés le cas échéant, de le configurer aux petits oignons puis de le compiler.
[1] http://suckless.org/20h_on_st.pdf

Installation

Je vous propose de récupérer le code de la toute dernière version sur la page git du projet à http://git.suckless.org/surf ou directement en ligne de commande:

  • pour le zip de la version en cours à la date de rédaction de ce tuto:
wget http://git.suckless.org/surf/snapshot/surf-0.6.zip
  • pour cloner directement:
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 des favoris, de l'historique, des moteurs de recherches ou encore l'affectation d'une page de démarrage.
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 “-”.

Le patch History

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

Utilisation

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.

Quelques raccourcis clavier

Ils sont basés sur les raccourcis de types “vim” :

Action Touche
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
Activer ou désactiver… Ctrl + Maj + …
… les cookies c
… les images i
… les scripts s
… les plugins v
Ajouter un signet Ctrl + a (si le patch est appliqué)

Conclusion

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

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/reseau/surf.1432781858.txt.gz · Dernière modification: 28/05/2015 04:57 par smolski

Pied de page des forums

Propulsé par FluxBB