Bonsoir!
Il a quelque fois été question de surf 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
###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” ;;
g ) echo “http://www.google.fr/search?q=$RECHERCHE” ;;
wik ) echo -n “http://fr.wikipedia.org/w/index.php?title=Spécial%3ARecherche&search=$RECHERCHE’&'go=Lire” ;;
dic ) echo -n “http://www.le-dictionnaire.com/definition.php?mot=$RECHERCHE” ;;
tor ) echo -n “http://btjunkie.org/search?q=$RECHERCHE” ;;
e ) echo -n “http://www.ethicle.com/fr/search.php?q=$RECHERCHE” ;;
syn ) echo -n “http://www.synonymes.com/synonyme.php?mot=$RECHERCHE&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”;
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
arrakispice@gmail.com
echo " |//"
echo " (o o)"
echo "±-------------oOO----(_)--------------------+"
echo "|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|"
echo "|~~~~~¤ Ce Script va vous permettre ¤ ~~~ ¤ de télécharger des videos ¤ ~~~~~~~~~|"|"
echo "|
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 | video.google.com | break.com | buzzhumor.com | cctv.com | evisor.tv | sevenload.com | liveleak.com | dailymotion.com | vimeo.com | golem.de | clipfish.de | funnyhub.com | myubo.com | cctv.com | spiegel.de )
##cclive supporte ces sites
$TERM -e cclive $URL
;;
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 | 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.