# \[surf 0.4\] mise au point

**URL:** <https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215>\
**Category:** Trucs et Astuces\
**Created:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215 "2016-02-20T22:38:30Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215/1 "2016-02-20T22:38:30Z")

</div>

Bonsoir!  
Il a quelque fois été question de [surf](http://surf.suckless.org) sur le forum. Je propose ici une mise au point régulière, pour adapter les différents scripts, selon les évolutions du programme.  
Tout d’abord, sachez qu’il se compile simplement avec make, et s’install dans /usr/local/bin avec make install.  
Voici le config.h (c’est lui que l’on édite pour configurer) Que je vous propose :

[code]/\* modifier 0 means no modifier \*/  
static char \*useragent = “Surf/“VERSION” (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari)”;  
static char \*progress = “#FF0000”;  
static char \*progress\_trust = “#00FF00”;  
static char \*stylefile = “.surf/style.css”;  
static char \*scriptfile = “.surf/script.js”;  
static char \*cookiefile = “.surf/cookies.txt”;  
static time\_t sessiontime = 3600;  
#define NOBACKGROUND 0

#define SETPROP(p, q) { .v = (char \*[]){ “/bin/sh”, “-c”,   
“prop=”`xprop -id $2 $0 | cut -d '\"' -f 2 | dmenu`" &&"   
“xprop -id $2 -f $1 8s -set $1 “$prop””,   
p, q, winid, NULL } }  
#define DOWNLOAD(d) {   
.v = (char \*[]){ “/bin/sh”, “-c”,   
“/home/xavier/.surf/scripts/dmenudl.sh $0”,   
d, NULL } }  
#define ADDBMK { .v = (char \*[]){ “/bin/sh”, “-c”,   
“/home/xavier/.surf/scripts/bookmarkurl $0”, winid, NULL } }  
#define LOADBMK(p, q) { .v = (char \*[]){ “/bin/sh”, “-c”,   
“prop=”`/home/xavier/.surf/scripts/loadbookmark`" &&"   
“xprop -id $2 -f $1 8s -set $1 “$prop””,   
p, q, winid, NULL } }  
#define PLUGIN§ { .v = (char \*[]){ “/bin/sh”, “-c”,   
“prop=”`xprop -id $2 $0 | cut -d '\"' -f 2`" &&"   
“/home/xavier/.surf/scripts/plugin.sh”, “$prop”" || exit 0",   
winid, NULL } }  
#define SEARCHENGINES(p, q) { .v = (char _[]){ “/bin/sh”, “-c”,   
“prop=”`/home/xavier/.surf/scripts/searchengines.sh`" &&"   
“xprop -id $2 -f $1 8s -set $1 “$prop””,   
p, q, winid, NULL } }  
 #define MODKEY GDK\_CONTROL\_MASK  
static Key keys[] = {  
/_ modifier keyval function arg Focus \*/  
{ MODKEY|GDK\_SHIFT\_MASK,GDK\_r, reload, { .b = TRUE } },  
{ MODKEY, GDK\_r, reload, { .b = FALSE } },  
{ MODKEY|GDK\_SHIFT\_MASK,GDK\_p, print, { 0 } },  
{ MODKEY, GDK\_p, clipboard, { .b = TRUE } },  
{ MODKEY, GDK\_y, clipboard, { .b = FALSE } },  
{ MODKEY|GDK\_SHIFT\_MASK,GDK\_j, zoom, { .i = -1 } },  
{ MODKEY|GDK\_SHIFT\_MASK,GDK\_k, zoom, { .i = +1 } },  
{ MODKEY|GDK\_SHIFT\_MASK,GDK\_i, zoom, { .i = 0 } },  
{ MODKEY, GDK\_l, navigate, { .i = +1 } },  
{ MODKEY, GDK\_h, navigate, { .i = -1 } },  
{ MODKEY, GDK\_j, scroll, { .i = +1 } },  
{ MODKEY, GDK\_k, scroll, { .i = -1 } },  
{ 0, GDK\_Escape, stop, { 0 } },  
{ MODKEY, GDK\_o, source, { 0 } },  
{ MODKEY, GDK\_g, spawn, SETPROP("\_SURF\_URI", “\_SURF\_GO”) },  
{ MODKEY, GDK\_colon, spawn, SETPROP("\_SURF\_FIND", “\_SURF\_FIND”) },  
{ MODKEY, GDK\_n, find, { .b = TRUE } },  
{ MODKEY|GDK\_SHIFT\_MASK,GDK\_n, find, { .b = FALSE } },  
{ MODKEY, GDK\_s, spawn, DOWNLOAD("\_SURF\_URI") },  
{ MODKEY|GDK\_SHIFT\_MASK, GDK\_a, spawn, ADDBMK },  
{ MODKEY|GDK\_SHIFT\_MASK, GDK\_b, spawn, LOADBMK("\_SURF\_URI","\_SURF\_GO") },  
{ MODKEY, GDK\_f, spawn, SEARCHENGINES("\_SURF\_URI", “\_SURF\_GO”) },  
{ MODKEY|GDK\_SHIFT\_MASK, GDK\_x, spawn, PLUGIN("\_SURF\_URI") },

};  
[/code]  
Bon, commençons pas la fonction download, que j’ai un peu modifié, pour à la place éxécuter ce script :  
nb : je considère ici que les scripts sont placés dans ~/.surf/scripts/

[code]#!/bin/sh  
#[dmenudl.sh](http://dmenudl.sh)  
###les couleurs de dmenu  
SB="#AFAFAF"  
SF="#000000"  
NB="#0C0C0C"  
NF="#D4D4D4"  
###on se place dans le répertoire utilisateur par défaut  
#liste ce qui se trouve dans le répoertoire courant, et l’envoie dans dmenu

liste\_ () {  
LISTE=`ls -d .. */ -1 --sort=extension | dmenu -fn 'fixed' -nb $NB -nf $NF -sb $SB -sf $SF -l 17 -p "$PWD" -i`  
echo “$LISTE”  
}

action\_ () {  
case $1 in  
\*/ | … ) cd $1  
;;  
esac  
}

v\_=$IFS  
IFS=’  
’

INDEX="$(liste\_)"  
#tant que on donne de quoi manger à action, elle tourne  
while [“$INDEX” != “”]; do  
action\_ $INDEX  
INDEX="$(liste\_)"  
done  
if [-z “$INDEX”]; then  
cd $HOME  
fi  
IFS=$v\_  
url=$1  
urxvt -n “Telechargements” -e wget --load-cookies ~./surf/cookies.txt -c $url  
exit 0  
[/code]  
Afin de choisir l’emplacement de l’enregistrement.  
Les scripts utilisés par ADDBK et LOADBK sont présents sur suckless, je ne détaillerai donc pas ici. Vous noterez cependant la modification pour LOADBK, à qui on passe deux arguments. (on définit d’abord l’adresse à aller, puis on l’envoie dans surf).  
On fait la même chose pour le script SEARCHENGINES que voici :

[code]#!/bin/sh  
#search engines for surf

#dmenu colors  
SB="#AFAFAF"  
SF="#000000"  
NB="#0C0C0C"  
NF="#D4D4D4"

ENTREE=$(echo “” |dmenu -i -nb $NB -nf $NF -sb $SB -sf $SF)  
ENGINE=$(echo $ENTREE |cut -d ’ ’ -f 1 )  
RECHERCHE=$(echo $ENTREE |cut -d ’ ’ -f2- |sed ‘s/ /+/g’)  
if [-n $RECHERCHE]; then  
case $ENGINE in  
ix ) echo -n “[https://eu.ixquick.com/do/metasearch.pl?query=$RECHERCHE&language=francais](https://eu.ixquick.com/do/metasearch.pl?query=%24RECHERCHE&language=francais)” ;;  
g ) echo “[http://www.google.fr/search?q=$RECHERCHE](http://www.google.fr/search?q=%24RECHERCHE)” ;;  
wik ) echo -n “[http://fr.wikipedia.org/w/index.php?title=Spécial%3ARecherche&search=$RECHERCHE’&'go=Lire](http://fr.wikipedia.org/w/index.php?title=Sp%C3%A9cial%3ARecherche&search=%24RECHERCHE'&'go=Lire)” ;;  
dic ) echo -n “[http://www.le-dictionnaire.com/definition.php?mot=$RECHERCHE](http://www.le-dictionnaire.com/definition.php?mot=%24RECHERCHE)” ;;  
tor ) echo -n “[http://btjunkie.org/search?q=$RECHERCHE](http://btjunkie.org/search?q=%24RECHERCHE)” ;;  
e ) echo -n “[http://www.ethicle.com/fr/search.php?q=$RECHERCHE](http://www.ethicle.com/fr/search.php?q=%24RECHERCHE)” ;;  
syn ) echo -n “[http://www.synonymes.com/synonyme.php?mot=$RECHERCHE&x=0&y=0](http://www.synonymes.com/synonyme.php?mot=%24RECHERCHE&x=0&y=0)”;;  
debfr ) echo -n “[http://www.google.com/cse?cx=003880180303252368328%3Afw-yrta3-zw&ie=UTF-8&q=$RECHERCHE&sa=Rechercher&siteurl=www.google.com%2Fcse%2Fhome%3Fcx%3D003880180303252368328%3Afw-yrta3-zw](http://www.google.com/cse?cx=003880180303252368328%3Afw-yrta3-zw&ie=UTF-8&q=%24RECHERCHE&sa=Rechercher&siteurl=www.google.com%2Fcse%2Fhome%3Fcx%3D003880180303252368328%253Afw-yrta3-zw)”;  
esac  
fi

exit  
[/code]  
On peut sûrement se passer de tous les arguments à ces fonctions. (enfin je ne vois surtout pas l’utilité de tous les paramètres). Cependant, je n’ai pas réussi à faire fonctionner ces scripts sans.

Enfin, j’ai fait le script PLUGIN, qui sert à lancer des scripts tiers. En fait, il liste tous les scripts placés dans ~/.surf/scripts, et on peut les éxécuter à volonté. Par exemple, pour se passer du flash, on peut éxécuter ce script :

[code]#!/bin/sh  
#flashdl

# Ce script nécessite wget, cclive, et/ou le programme get\_flash\_video :

# 

# [http://code.google.com/p/get-flash-videos/downloads/list](http://code.google.com/p/get-flash-videos/downloads/list)

# [arrakispice@gmail.com](mailto:arrakispice@gmail.com)

echo " |//"  
echo " (o o)"  
echo "±-------------oOO----(\_)--------------------+"  
echo "| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |"  
echo "| ~~~~~¤ Ce Script va vous permettre ¤~~~~~ |"  
echo "| ~~¤ de télécharger des videos ¤~~~~~~~~~ |"  
echo "| ~~~~~~~~~~~¤ de type flash ¤~~~~~~~~~~~~~~ |"  
echo "--------------------oOO----------------------+"  
echo " | **|** |"  
echo " || ||“  
echo " ooO Ooo”

PLAYER=mplayer  
TERM=urxvt  
###On se déplace dans le dossier temporaire  
cd /tmp  
###Quel est l’adresse courante?  
URL=$1  
if [-n “$URL”]; then

###Maintenant, selon le site actuel, on ne va pas faire la même chose  
###Quel type de site?  
TYPE=$(echo $URL | cut -d/ -f3)

case $URL in  
[www.youtube.com](http://www.youtube.com) | [video.google.com](http://video.google.com) | [break.com](http://break.com) | [buzzhumor.com](http://buzzhumor.com) | [cctv.com](http://cctv.com) | [evisor.tv](http://evisor.tv) | [sevenload.com](http://sevenload.com) | [liveleak.com](http://liveleak.com) | [dailymotion.com](http://dailymotion.com) | [vimeo.com](http://vimeo.com) | [golem.de](http://golem.de) | [clipfish.de](http://clipfish.de) | [funnyhub.com](http://funnyhub.com) | [myubo.com](http://myubo.com) | [cctv.com](http://cctv.com) | [spiegel.de](http://spiegel.de) )  
##cclive supporte ces sites  
$TERM -e cclive $URL  
;;  
[www.allocine.fr](http://www.allocine.fr) )  
VIDEOURL=$(wget -O - “$URL” | sed -ne ‘s/^._href="(._.m4v).\*$/\1/pg’)  
$TERM -e wget -O /tmp/mavideo.m4v $VIDEOURL  
$PLAYER /tmp/mavideo.m4v  
;;  
[www.humour.com](http://www.humour.com) | [www.wat.tv](http://www.wat.tv))  
$TERM -e get\_flash\_videos -p $URL  
;;  
\* )  
#on essaie get\_flash\_videos quand même (on sait jamais)  
$TERM -e get\_flash\_videos -p $URL  
;;  
esac  
else  
echo -n "Il n’y a pas d’url saisie \n\n"  
exit 1  
fi  
exit 0  
[/code]

Bref, rien de bien méchant en soi, mais au fur et à mesure que surf va se développer, il faudra sans doute éditer tout ça pour adapter ces fonctionnalités.

---

<div class="post-metadata">

**Author:** ![M3t4linux](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/5daacb/32.png) [@M3t4linux](https://www.debian-fr.org/u/M3t4linux)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215/2 "2016-02-20T22:38:55Z")

</div>

C’est parfait pour moi!!

Un grand merci thuban, voilà de quoi remettre complètement à plat mon “surf”&Co ![:041](https://www.debian-fr.org/uploads/default/original/1X/bfe857c9119752799c3eac55ca37a50312c51282.gif "applaudit") ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut") ![:038](https://www.debian-fr.org/uploads/default/original/1X/08df484251490af77ba342c0331f3ee271065fe9.gif "bravo") ![:038](https://www.debian-fr.org/uploads/default/original/1X/08df484251490af77ba342c0331f3ee271065fe9.gif "bravo")

J’adore les projets suckless mais je dois avouer que, sans toi par exemple ou eol, je n’ai pas les connaissances requises pour me débrouiller seul… ![:12](https://www.debian-fr.org/uploads/default/original/1X/5ab5476dc281287f8b7ad337242a19cb8485624d.gif "grincheux") ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit")😊

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215/3 "2016-02-20T22:38:58Z")

</div>

Sûr, c’est déroutant au début. Mais c’est la force du libre, on trouve pleins de choses sur le net pour s’aider. 🙂  
Et ne te dévalorise pas, pour ma part, je n’en suis qu’aux tableaux dans la programation en C, autrement dit, le même niveau que la multiplication en algèbre. 😃

Pour simplifier les choses aux français, on pourrait peut-être proposer sur leur wiki des config.h adaptés à nos claviers?

---

<div class="post-metadata">

**Author:** ![eol](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/b782af/32.png) [@eol](https://www.debian-fr.org/u/eol)\
**Post date:** [Février 21, 2016, 12:33 UTC](https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215/4 "2016-02-21T00:33:55Z")

</div>

Note pour ceux qui ne voulaient pas l’essayer tant qu’il ne serait pas dans les dépôts Debian,  
c’est maintenant chose faîte.

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 12:33 UTC](https://www.debian-fr.org/t/surf-0-4-mise-au-point/27215/5 "2016-02-21T00:33:55Z")

</div>

[quote=“eol”]Note pour ceux qui ne voulaient pas l’essayer tant qu’il ne serait pas dans les dépôts Debian,  
c’est maintenant chose faîte.[/quote]  
héhé, depuis quelques temps déja d’ailleurs 🙂
