HACKING 120% {Hacking, programmazione, computer & molto altro}

Fluxbox HowTo

« Older   Newer »
  Share  
vogy
view post Posted on 24/8/2014, 10:45     +1   -1




Fluxbox è un window manager per X della famiglia *box (black-box e fratellini, tutti nipotini del 'modello AfterStep'); all'oggi nel suo genere è sicuramente quello più completo se usato da solo, OpenBox trova la sua forza nell'integrazione in LXDE, Enlightenment è un quasi-DE completo.

Primo appunto che non si dice mai quindi forse qualcuno non lo sa...
Che differenza c'è tra un window-manager e un desktop-environment (...un po' più tecnico di "uno fa solo le finestre e l'altro fa tutto lui")?
Tutto quanto è un file, da un'immagine a una directory a un eseguibile, ogni file viene letto da una apposita applicazione, come un formato .jpg viene letto da un visualizzatore allo stesso modo un 'formato directory' viene letto da un file-manager.
L'interfaccia grafica principale è il display (cioè lo schermo che avete davanti); un window-manager ha il compito di visualizzare sul display le varie applicazioni in modo che siano gestibili dall'utente in maniera interattiva (spostate, allargate, chiuse ecc.).
Tra le varie applicazioni directory ne esiste una particolare (`inventata` da Apple) che è il desktop, la directory desktop nella vostra /home così come la cartella Desktop di Windows; un desktop-environment è in grado di trasporre quella directory sul display in maniera che esista una sorta di file-manager sempre aperto da cui lavorare; quando infatti cliccate con il tasto destro sul desktop e create un file (indipendentemente dal SO) state modificando quella directory senza che sia eseguita da un file-manager, allo stesso modo modificando la directory desktop da file-manager risulta modificata la rappresentazione a schermo (quindi sono necessarie apposite librerie tipo Gtk/Qt che gestiscano in maniera comune l'interoperatività).

Fluxbox è disponibile per quasi tutte le distribuzioni, nel caso di debian-based installabile con:
CODICE
# apt-get install fluxbox

al successivo login ci si ritrova catapultati in un orribile interfaccia grigia e triste (mai capito perché devono farlo così brutto) dove si possono scoprire le funzioni di base:
- tasto_dx sul desktop --> menu delle applicazioni
- tasto_dx sulla barra inferiore --> impostazioni della barra (da ora in poi 'toolbar') e dell'orologio
- tasto_dx sul bordo superiore di una qualunque finestra aperta --> impostazioni della finestra
Se avete esperienze con altri *box vi renderete subito conto che anche la modifica via GUI è decisamente più avanzata.

Per avere una base su cui discutere vi posto il mio screen...


A partire da Lenny (vado a memoria) l'installazione dovrebbe creare un directory ~/.fluxbox che sarà quella letta al login. Ogni modifica manuale di configurazione viene fatta in quella directory.
Le tre directory /backgrounds, /pixmaps e /styles servono a gestire i temi grafici e le vedremo in seguito, molto più importanti i file di configurazione veri e propri:

> apps

questo file imposta le proprietà delle finestre delle singole applicazioni. In linea di principio non è necessario modificarlo a manina perché andando nelle impostazioni della finestra e selezionando 'Ricorda...' > dimensioni/posizione/trasparenza/ecc. + 'Salva alla chisura' il file viene aggiornato automaticamente.
Giusto per la cronaca vi mostro l'impostazione di Synaptic avviato a tutto schermo e di Geany in finestra piccola:
CODICE
[app] (name=synaptic) (class=Synaptic)
 [Dimensions]        {100% 100%}
 [Position]        (UPPERLEFT)        {0% 0%}
 [Close]        {yes}
[end]
[app] (name=geany) (class=Geany)
 [Dimensions]        {43% 53%}
 [Position]        (UPPERLEFT)        {18% 13%}
 [Close]        {yes}
[end]

non credo occorra dare spiegazioni se non per quel '[Close] {yes}' che riguarda l'impostazione del 'Livello' della finestra (diciamo da sopra tutte a sotto tutte), opzioni non molto usate ma che invece consiglio vivamente di scoprire.

> init

questo file imposta la struttura della visulizzazione generale di sistema, tutte le opzioni le potete trovare nella sezione RESOURCES di 'man fluxbox'.
Come abbiamo visto il tasto_dx sulla toolbar ci permette di impostare anche per via grafica parecchie proprietà (posizione, visualizzazione, dimensione, tarsparenza ecc.); una nota particolare va ad esempio alla possibilità di rendere visibile oppure no la toolbar che sembra assurda... la possibilità di una toolbar non visibile vi permette di abbinare a Fluxbox altri pannelli (ie. fbpanel, perlpanel ecc.) e avere un'interfaccia simile ad altri wm/de 'classici' con barra e menu programmi.
Rinviando alle man-pages alcune opzioni sono però da segnalare:
CODICE
session.screen0.toolbar.tools: prevworkspace, workspacename, nextworkspace, iconbar, systemtray, clock

questa che ho scritto è la struttura tipica di una toolbar che vedrete più o meno in ogni screen, compreso il mio, ed è diversa da quella di default; la struttura indica l'ordine di visualizzazione degli elementi della toolbar, nel caso: freccia per il desktop precedente, nome del desktop attuale, freccia per il desktop successivo, barra delle finestre aperte, systray delle apps, orologio.

Altra cosa importante è la definizione nel numero dei desktop (potete modificarli enche con tasto_centrale sul desktop), nel mio caso 6 con nome da 'one' a 'six':
CODICE
session.screen0.workspaces: 6
session.screen0.workspaceNames: one,two,three,four,five,six,

Ultima cosa, sicuramente la meno utile, è la gestione delle trasparenze di sistema (la trasparenza può essere modificata anche per ogni singola finestra, poi salvata al chiusura) con valori da 0 a 255; sono possibili diverse combinazioni tra menu, toolbar, finestre ecc. nel mio caso ho impostato tutto uguale a 187.
Nell'ultima riga trovate l'impostazione della trasparenza forzata, è una cosa che mi porto dietro negli anni a copia/incolla ma è utile solo in macchine oggi superate.
CODICE
session.screen0.menu.alpha:        187
session.screen0.toolbar.alpha:        187
session.screen0.window.focus.alpha:        187
session.screen0.window.unfocus.alpha:        187
session.screen0.slit.alpha:        187
session.forcePseudoTransparency:        true

Altre modifiche di solito non sono necessarie, per tutto il resto rimando al man.

> keys

questo file è uno dei più importanti di Fluxbox, va necessariamente configurato a mano, è quello che garantisce la maggior personalizzazione d'uso.
Il file imposta una combinazione di hotkey per fare le azioni più svariate, nelle prime righe di default trovate infatti le impostazioni di combianzione mouse_su_desktop dette fino ad ora:
CODICE
# click on the desktop to get menus
OnDesktop Mouse1 :HideMenus
OnDesktop Mouse2 :WorkspaceMenu
OnDesktop Mouse3 :RootMenu

I tasti hanno i nomi tipici di X, non li scrivo tutti per brevità, più o meno quelli che servono sono:
CODICE
Mouse1 --> tasto sinistro
Mouse2 --> tasto centrale (o tutti e due sui laptop)
Mouse3 --> tasto destro
Mod1   --> alt
Mod4   --> ctrl

per la totalità dele opzioni si rinvia al solito manuale, due cose però sono importanti:

- il tabbing:
CODICE
# middle click a window's titlebar and drag to attach windows
OnTitlebar Mouse2 :StartTabbing
OnTitlebar Double Mouse2 :ActivateTab

il tabbing è la possibilità di inserire una finestra come tab dentro altre finestre, nel mio desktop di esempio infatti potete vedere che nella stessa finestra ci sono Calc (visualizzato), VLC e PcmanFM. Di default il tabbing è attivato con il tasto centrale sulla barra superiore della finestra, il doppio click sul tab attiva la sub-window

- la proprietà :Exec

questa funzione ci permette di assegnare un qualunque comando alla combinazione di tasti, nel mio caso
CODICE
Mod1 F1 :Exec x-terminal-emulator
Mod1 F2 :RootMenu
Mod1 F3 :Exec /usr/bin/urxvt -geometry 20x24 -rv -tr +sb -sh 30 -fn "xft:Liberation Mono:pixelsize=9" -T "Mixer" -e /usr/bin/alsamixer -D hw:1

con alt+F2 apro il menu, importantissimo per avere il menu anche quando il desktop è coperto da altre applicazioni; alt+F3 (la finestra di alsamixer dello screen) mi permette il controllo del volume senza caricare applet.

> menu

è il file del menu di Fluxbox che alla prima installazione assume questa forma:
CODICE
[begin] (fluxbox)
[include] (/etc/X11/fluxbox/fluxbox-menu)
[end]

di prassi si usa copiare il file da /etc (salvato come 'menu') per eventuali modifiche, da tenere conto che il file di sistema si aggiorna in caso di aggiunta/rimozione programmi mentre quello in ~/.fluxbox va modificato manualmente.
La struttura di un menu è la seguente:
CODICE
[begin] (Fluxbox)
       [submenu] (Submenu 1) {}                
               [submenu] (Submenu 2) {}
                       [exec] (Applicazione (occhio a eventuali parentesi --> \)) {comando -b -l abla} <icona.img>
               [end]
       [end]
[end]

giusto come esempio riporto il mio submenu 'Grafica' visualizzato nello screen:
CODICE
[submenu] (Grafica) {}
       [exec] (LibreOffice Draw) {/usr/bin/libreoffice --draw} </usr/share/icons/hicolor/32x32/apps/libreoffice-draw.xpm>
       [exec] (The GIMP) {/usr/bin/gimp} </usr/share/pixmaps/gimp.xpm>
       [exec] (X Window Snapshot) {xwd | xwud} <>
[end]

non credo occorra altro...

> startup

il menu di avvio di Fluxbox perfettamente analogo a qualunque .xinitrc, nel mio caso:
CODICE
#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.

# Change your keymap:
xmodmap "/home/dante/.Xmodmap"

fbsetbg -l
....
/usr/bin/nm-applet --sm-disable &
/usr/bin/xscreensaver -nosplash &
/usr/bin/conky &
/usr/bin/x-terminal-emulator -T "Screen" -e /usr/bin/screen &

# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.

exec fluxbox

qui è da notare la gestione dello sfondo: fluxbox usa un proprio script 'fbsetbg' per modificare lo sfondo del desktop, quindi inserendo all'avvio fbsetbg decidete la vostra immagine.
Per facilitarvi la vita vi passo uno scriptino che usa l'opzione '-l' (carica l'ultima immagine salvata in ~/.fluxbox/lastwallpaper) e richiede Zenity:
CODICE
#!/bin/bash

FLUX_DIR="$HOME/.fluxbox"

IMG_CHOSEN=$(zenity --title="Change FB Background" --file-selection) || exit 0
fbsetbg -f $IMG_CHOSEN
echo -e "\$full \$full|$IMG_CHOSEN||:0.0" > "$FLUX_DIR/lastwallpaper"

exit 0

Conclusa qui la parte sui file di configurazione ci resta il discorso legato ai temi per Fluxbox.
Su questo argomento le mie pessime competenze da grafico sinceramente non mi permettono di fare una grande analisi :O

Innanzitutto per i pezzenti come me c'è la fortuna di trovare temi un po' ovunque; per chi volesse specializzarsi linko la guida di ArchLinux: https://wiki.archlinux.org/index.php/Fluxb..._%28Italiano%29

I temi sono installati in in due modalità:
- si può inserire una directory 'miotema' dentro ~/.fluxbox/styles, in questa directory si inserisce un file miotema.cfg e una directory 'pixmaps' con le icone; nella sezione 'styles' del menu di Fluxbox apparirà il tema 'miotema'
- si può inserire direttamente 'miotema.cfg' nella directory 'styles' con eventuali icone dentro ~/.fluxbox/pixmaps

Una cosa non così immediata da capire è la gestione dei colori; prendiamo ad esempio una forma del genere:
CODICE
toolbar:                                Sunken Gradient Vertical Bevel1
toolbar.color:                          #242424
toolbar.colorTo:                        #fbeeb1

flat, raised, sunken --> un aspetto piatto, in rilievo, affondato dell'elemento
solid, gradient --> un colore unico oppure una sfumatura (ie 'flat solid' indica un colore semplice unico)
horizontal, vertical, diagonal, crossdiagonal, pipecross, elliptic, rectangle, pyramid --> se è impostato gradient, la direzione che deve prendere la sfumatura tra i due colori
bevel1, bevel2 --> l'ombreggiatura 'in giù' o 'in su'... non so nemmeno come spiegarlo, se vi va provate :O
 
Top
RootkitNeo
view post Posted on 30/8/2014, 00:32     +1   -1




Bravo ottimo lavoro.
Mi piaceva molto Fluxbox.

Potresti scrivere qualcosa anche su conky magari, altro "strumento" carino ed interessante (che usavo, ovviamente).
 
Top
view post Posted on 30/8/2014, 01:11     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Su conky posso scrivere qualcosa io se ho tempo, ho usato parecchie configurazioni figherrime :D

Ho provato pure fluxbox, ma non fa per me. Forza kde!
 
Web  Top
vogy
view post Posted on 30/8/2014, 03:46     +1   -1




Uhhhh...su conky si può scrivere un sacco, tra l'altro evolve in una maniera rapidissima quindi da una versione all'altra cambia totalmente.
Se posso fare un appunto: Conky si è molto buttato su LUA (una sorta di bash avanzato); per tutta quella parte volendo conviene a quel punto usare Awesome come WM, lavori su LUA comunque ma tratti direttamente il sistema.
Però qualcosa di fiqo si può pensare :)

@Wet; da KDE a fluxbox è un altro mondo (usavo KDE fino alla versione 3, poi mi è diventato eccessivo). Se vuoi un qualcosa di leggero ma fiqoso prova Enlightenmant ('e17' a meno che non siano arrivati a un 'e18' da repositiry).
 
Top
view post Posted on 30/8/2014, 18:08     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


I computer migliorano e i dm pure, sembra congruo.

Avevo già sentito parlare di E, si può usare anche con kde sopra :D
 
Web  Top
4 replies since 24/8/2014, 10:45   72 views
  Share