====== Surf ======
* Objet : Surf, navigateur web simple par suckless.org.
* Niveau requis : {{tag>avisé}}
* Commentaires : // Découvrir, configurer et installer surf.//
* Suivi : {{tag>à-tester}}
* Création par [[user>sogal]] 12/03/2015
* Testé par <...> le <...>
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=11412 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== 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((http://suckless.org/20h_on_st.pdf)), 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.
{{http://debian-facile.org/images/file-Rae4d572c54edfda05420e7b4ff48a762.png?800}}
===== 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 */
==== Patch ====
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 :
* homepage : http://surf.suckless.org/patches/homepage
* bookmarking : http://surf.suckless.org/patches/bookmarking
* history : http://surf.suckless.org/patches/history
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 C-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
=== Navigateur à onglets ===
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
=== Quelques raccourcis clavier ===
Ils sont basés sur les raccourcis de types "vim" :
^ Action ^ Touche ^ Ajout ^
| Ouvrir l'URL | C-g (ouvre dmenu pour la saisie) ||
| Site précédent | C-h ||
| Site suivant | C-l ||
| Scroll bas | C-j ||
| Scroll haut | C-k ||
| Scroll à droite | C-u ||
| Scroll à gauche | C-i ||
| Ajouter un signet | C-a (si le patch est appliqué)||
| Activer ou désactiver... | C-Maj + ... | |
| | ... (les cookies) | c |
| | ... (les images) | i |
| | ... (les scripts) | s |
| | ... (les plugins) | v |
===== 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@member.fsf.org|Sogal]] 27/05/2015 21:50//