[surf 0.4] mise au point

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 ¤ ~~~|"
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 | 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.

C’est parfait pour moi!!

Un grand merci thuban, voilà de quoi remettre complètement à plat mon “surf”&Co :041 :006 :038 :038

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 :017 :blush:

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. :slight_smile:
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. :smiley:

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

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=“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 :slightly_smiling: