Hlavní navigace

Surf: minimalistický prohlížeč podle pravidel Suckless

Martin Kopta

Surf je webový prohlížeč postavený na WebKit a GTK+, který se snaží držet základní unixové filozofie a pravidel projektu Suckless. Umí pouze to, co je potřeba pro prohlížení webu a ostatní funkce (jako například panely či záložky) ponechává na dalších programech. Pokud vám prohlížeče smrdí, zkuste Surf.

Proč minimalistický prohlížeč?

Jak jsme si řekli v předchozích dílech seriálu, Suckless komunita se snaží vytvářet jednoduché programy zaměřené na zkušené uživatele s důrazem na unixovou filozofii, minimalismus a střídmost. Pokud se podíváme na scénu webových prohlížečů, dominují zde především prohlížeče jako Internet Explorer, Chrome, Firefox a Safari. Ani jeden zřejmě nesplňuje ani jedno z uvedených kritérií. Suckless komunita s touto situací nebyla spokojena a na světě se brzy objevil prohlížeč Surf, který se k ideálům Suckless snaží alespoň co nejvíce přiblížit.

„Still, I feel, one can't emphasize enough how insane the web has become. For example, consider the mere fact http is called http. The first /t/ in it is for text. Now it is used to embed and transfer whatnots. Worse: often, where could and should be text, the text is obfuscated in binary containers. That said, suckless web browser is an oxymoron: it sucks either at design or at the amount of content accessible. Surf is a particular trade-off of what is worth caring about and giving the user interface to.“
 –stanio, 2014–02–20, Suckless mailing list 2013

S orientací na pokročilé uživatele přichází samozřejmě důraz na ovládání klávesnicí a snadná rozšiřitelnost. Ta je také důsledkem zaměření na unixovou filozofii. Surf tak neimplementuje vlastnosti, které nejsou jeho primárním zaměřením jako webového prohlížeče a co lze, deleguje jiným programům, které si uživatel může zvolit (nebo vytvořit) dle vlastní libosti. Jasným příkladem toho je propojení s programem Tabbed, které si ukážeme za chvíli.

Surfování se Surfem

Po spuštění Surfu uživatel obdrží opravdu spartánské rozhraní. Žádná tlačítka, žádný stavový řádek, žádné menu a dokonce ani žádný adresní řádek. Vůbec nic, kromě výchozího bílého pozadí. Zde je vidět pro Suckless typická orientace na odborné uživatele, u kterého se očekává, že si přečte manuálovou stránku. Ta je stručná a jasná. Pro zadání adresy stačí stisknout CTRL₊g a zadat adresu. Při zadávání si můžete všimnout, že program, který se stará o toto zadání není Surf, ale jiný program – dmenu, který jsme potkali v článku o dwm. Zde je tedy vidět střípek unixové filozofie.

Po načtení stránky můžeme samozřejmě navigovat myší, ale Surf od vás očekává spíše povely z klávesnice. Na posunování stránkou a navigování v historii (zpět a vpřed) jsou vyhrazeny klávesové zkratky CTRL₊hjkl, které odborníkovi již dávno zarostly do svalů na prstech.


Autor: Suckless Project

K dispozici jsou pak možnosti (zkratky) vyhledávat na stránce, přiblížení a oddálení, načtení stránky z adresy ve schránce a zkopírování aktuální adresy do schránky, tisk, znovunačtení (a znovunačtení bez mezipaměti) a několik dalších.

Zajímavou schopností Surfu je možnost klávesovými zkratkami vypnout a zapnout vykreslování obrázků, vykonávání skriptů a aktivovat a deaktivovat pluginy (Flash). Pokud vás na dané stránce zajímá jen text, je možné se takto jednoduše zbavit všech rozptylujících elementů. Nebo pokud jste na mobilním připojení kdesi v horách a potřebujete rychle zjistit nějakou informaci, můžete takto ušetřit spoustu zbytečného datového přenosu.

Pokročilou schopností Surfu je možnost uložit si vlastní JavaScriptový kód do souboru ~/.surf/script.js. Ten je pak přístupný na každé stránce a uživatel si tak může jednoduše modifikovat schopnosti prohlížeče. Mezi zajímavé využití script.js patří například kód pro zvýrazňování odkazů, podobně jako to dělá například Vimperátor.

Mezi pokročilejší možnosti Surfu také patří možnost používat alternativní soubor s cookies. Surf si je ukládá jednoduše do obyčejného textového souboru ~/.surf/cookies.txt. Při startu si je možné pomocí přepínačů na příkazové řádce vybrat jiný soubor.


Autor: Suckless Project

Pro Surf existuje mnoho modifikací, které jsou k dispozici na stránce projektu. Zajímavé jsou například způsoby uchovávání záložek nebo vyhledávání v adresním řádku. Některé z těchto rozšíření používají možnost ovládat Surf pomocí XProperties nástrojem xprop(1).

Kromě uvedených možností úpravy chování Surfu lze samozřejmě celý prohlížeč konfigurovat. Konfigurace se děje úpravou hlavičkového souboru a rekompilací, stejně jako například v případě zmíněného dwm.

Příklad rekonfigurace Surfu do kiosk módu (ve kterém nebude Surf reagovat na klávesové zkratky):

$ cd ~/dev/
$ git clone http://git.suckless.org/surf
Cloning into 'surf'...
remote: Counting objects: 1117, done.
remote: Compressing objects: 100% (734/734), done.
remote: Total 1117 (delta 650), reused 770 (delta 382)
Receiving objects: 100% (1117/1117), 486.29 KiB | 734.00 KiB/s, done.
Resolving deltas: 100% (650/650), done.
Checking connectivity... done.
$ cd surf
$ cp config.def.h config.h
$ ed config.h
4656
/kiosk
static Bool kioskmode       = FALSE; /* Ignore shortcuts */
s/FALSE/TRUE/
wq
4655
$ make
surf build options:
CFLAGS   = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/X11R6/include -pthread -I/usr/include/webkitgtk-1.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/webkitgtk-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -DVERSION="0.6" -DBSDSOURCE
LDFLAGS  = -g -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -lwebkitgtk-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lpangoft2-1.0 -lpango-1.0 -lfontconfig -lfreetype -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -ljavascriptcoregtk-1.0 -lglib-2.0  -lgthread-2.0
CC       = cc
CC surf.c
surf.c:1173:1: warning: ‘eval’ defined but not used [-Wunused-function]
 eval(Client *c, const Arg *arg) {
 ^
CC -o surf
$ ./surf

Použití Surfu v kombinaci s Tabbed

Po chvíli používání Surfu jistě většinu začne pálit chybějící možnost použití více panelů. Vývojáři tuto schopnost schválně nezabudovali a místo toho nechali na uživateli, jak se k tomuto problému postaví. Pokud používáte správce oken dwm, můžete použít třeba monocle mód (zobrazení na celou obrazovku) a mít prostě více instancí Surfu pod sebou. Pokud ale vyloženě trváte na něčem jako klasické panely (taby), můžete sáhnout po dalším Suckless projektu – tabbed. Jde o jednoduchý malý program, jehož úlohou je pouze pojímat grafické aplikace a poskytovat rozhraní panelů. Neslouží tedy pouze jako obal pro instance Surfu, ale třeba i pro instance xtermu, suckless terminálu st či prohlížeče PDF souborů.


Autor: Suckless Project

Tabbed je velmi jednoduchý a opět stejně jako v případě Surfu, stačí si projít manuálovou stránku. Pro použití se Surfem stačí spustit tabbed surf -e (přepínač -e řekne Surfu, aby využil funkci XEmbed. Pro otevření další instance Surfu lze použít buď CTRL+t nebo CTRL+SHIFT+Enter, pro zavření tabu pak CTRL+q. A opět, pro pohyb mezi panely slouží CTRL₊SHIFT+h a CTRL+SHIFT+l, pro jejich přesouvání pak CTRL+SHIFT+j a CTRL+SHIFT+k.

Shrnutí

Surf je sice již dost stabilní, ale ne ukončený projekt. Ještě jej čeká několik změn, jako například případná integrace s Adblock Plus nebo náhrada WebKitu za něco více suckless.

„We should be really concerned about the fact that it requires hundreds of developers and millions of dollars to develop and maintain a piece of software (i.e. webkit) to just barely keep up with the most recent changes in standards.“
 –Laslo Hunhold, 2014–02–17, Suckless mailing list 2013

Nicméně, Suckless se podařilo vytvořit prakticky použitelný minimalistický webový prohlížeč, který se drží unixové filozofie a je velmi přátelský pro pokročilé uživatele. Když nic jiného, dá se jistě alespoň měřit s alternativními minimalistickými prohlížeči jako například uzbl, w3m, dillo, glinks a netsurf.

Našli jste v článku chybu?

18. 6. 2014 9:19

Tomáš Marný (neregistrovaný)

No jo, jenže člověk, který si po večerech programuje pro radost, bude těžko dělat ergonomii a design jako velké korporace. To se netrefí nikdy, pokud bude chtít výsledky jako ty velké korporace pokud jde o UI. Na to, aby to od těch velkých korporací obšlehávali, ani tak nikdy nebude dost zdrojů. Výsledky takových pokusů budou vždycky působit upoceně a pořád to bude jen nedotažená napodobenina komerčních produktů. Minimum vývojářů a minimum prostředků si vynucuje minimalizující postupy, pokud výs…

18. 6. 2014 8:32

Inkvizitor (neregistrovaný)

slock nabídl černou obrazovku a nic jiného, na první pohled to vypadá, že se systém kousnul. Očekával bych aspoň prompt se jménem uživatele (jsou lidi, kteří počítače používají s vícero účty nebo je sdílejí). Zadávání hesla bez viditelného kontextu, to už je snad přece jenom poněkud příliš strohé.

DigiZone.cz: Je tu první sportovní přenos přes mobily

Je tu první sportovní přenos přes mobily

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: V restauraci bez cigaret? Sněmovna kývla

V restauraci bez cigaret? Sněmovna kývla

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Nejlepší obranou při nachlazení je útok

Nejlepší obranou při nachlazení je útok

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?