Translate

12 aprile 2008

Un cestino per WindowMaker

Voglio un desktop moderno e semplice. Bello e intuitivo. Voglio che assomigli a NeXTStep!

Il window manager che farà da struttura portante è senza ombra di dubbio WindowMaker: siamo alla versione 0.92.0 da tre anni, ma le feature che abbiamo a disposizione sono più che sufficienti.
Adesso dobbiamo scegliere cosa usare come gambe della scrivania: un ambiente GNUStep (che ci offre applicazioni dal look e dal comportamento molto simile a NeXT/OPENStep) o utilizzare gli ambienti prediletti dell'utenza GNU/Linux, KDE e Gnome. Ho scelto la seconda via.
Perché assomigli a NeXTStep ci devono essere essenzialmente due elementi: la Dock e un Workspace Manager (il papà del moderno Finder). La scelta, per motivi di tempo e praticità, è ricaduta su Konqueror.
Avviato la prima volta, ho aggiunto l'appicon alla Dock e impostato per farlo partire ad ogni avvio di WMaker, come da figura.

L'aggiunta di altre dockapp e appicon è a vostra discrezione. Ve ne suggerisco giusto un paio che trovo molto utili e ben fatte: la prima, Docker, una system tray, e wmpinboard, il post-it per WM.

Manca ancora qualcosa: il cestino!

L'idea.

L'idea di un'implementazione del genere mi è venuta guardando l'immagine qui a fianco. Se notate il penultimo campo, leggete la dicitura: Command for files dropped with DND (Drag 'n Drop).
Quindi, se sopra un'appicon trascino un file da un file manager, posso far eseguire uno script che ha come argomento il nome del file in questione (tipo: mv nomefile ~.Trash).

La pratica.

Cosa ci serve? In primis, WindowMaker compilato col supporto (ancora sperimentale, ndS.) al DND.
Per fare ciò, dopo il configure dei sorgenti, bisogna modificare il file ../src/wconfig.h, in questo modo:

/*
* support for XDND drop in the Dock. Experimental
*/
#define XDND

e il file ../src/misc.c, pena la mancata compilazione di WM, come segue:

/* if (!dropped_thing) {
* dropped_thing = get_dnd_selection(scr);
* }
*/
make && make install (o vi create il pacchetto di binari con i tool della vostra distribuzione). Avviate WindowMaker, ora col supporto per il Drag 'n Drop attivo.
Ora non ci serve altro che uno script adatto allo scopo.
E siamo fortunati: trash! Una serie di script in python che si integrano con le specifiche FreeDesktop, e quindi anche con il cestino di KDE e degli altri desktop manager (leggi Gnome, XFCE, eccetera).
Cosa manca? Un appicon che faccia quello che vogliamo. Createne una, magari prendendola in prestito da altre applicazioni e modificatela a vostro piacimento. Questa la mia, presa in prestito da Gimp:L'icona la scegliete voi, ricordando che rimarrà statica e non cambierà se svuotate il cestino. I comandi impostati sono abbastanza intuitivi: doppio click sinistro e apre Konqueror nella directory del cestino; click col tasto centrale e svuota il cestino utilizzando uno degli script in python di cui sopra; trascinamento di un file sull'icona e relativa cestinazione dello stesso, tramite script di cui sopra.

Bugs.

Ci sono. Personalmente ho verificato riavvii improvvisi di WindowMaker passando da console a X, e comportamenti strani del supporto DND: in particolare, prima devo avviare un file manager in GTK (Thunar), e usare il Drag 'n Drop prima che un'applicazione QT (Konqueror) sia in grado di utilizzarlo con successo. Qualche vostro feedback sarebbe utile.

[Update - 13/04/2008]
C'è anche un bug negli script in python: in particolare, il restore dei file dal cestino funziona solo da linea di comando con lo script restore-trash mentre da Konqueror non funziona.
[/Update]

[Update - 05/05/2008]

Dolphin è il file manager d'obbligo da usare con l'opzione columns, che lo rende molto simile all'originale Workspace Manager di NeXTStep. Aspettiamo il rilascio di KDE 4.1 per qualcosa di davvero stabile.
[/Update]

[Update - 11/11/2008]

I bug degli script in python sono stati corretti. Ora funzionano alla perfezione, grazie agli sviluppatori. Rimangono da risolvere due questioni: l'uso del Drag 'N Drop con le applicazioni QT (vedi sopra) e il comportamento di Dolphin che non aggiorna il contenuto della directory Trash in automatico.
[/Update]

Vi lascio con due screenshot :)

03 aprile 2008

Linux e la gestione della RAM difettosa

Avete crash improvvisi dei vostri programmi preferiti? Non riuscite a riprodurli per mandare un bug-report agli sviluppatori? Il make vi da sempre errori diversi ad ogni tentativo di compilazione?
Se avete risposto "sì" ad almeno una di queste domande, prendete in seria considerazione il fatto che la vostra RAM sia andata a donna di facili costumi.

Che fare?
  • Comprare altra RAM.
Se siete fortunati come me, e avete una motherboard che supporta solo memorie Rambus (sì, ho un sistema un po' vecchietto), diventa complicato aspettare che su Ebay compaia l'asta che fa per voi.

  • "badram" @ google.it
E anche qui le opzioni sono due. Quella usata da me, per questioni di tempo, è stato quella di passare l'opzione mem al bootloader (in LILO: append = "mem=xM" dove x è il valore in MegaByte).
Dalla man page di LILO:
mem=###[,K,M,G]
Specifies the maximum memory in the system in bytes, kilobytes,
megabytes, or gigabytes. This option is not removed from the
command line, and is always passed to the kernel.
Prendiamo come esempio pratico quello del mio sistema. Avendo notato che i problemi nascevano quando l'utilizzo della memoria raggiungeva livelli elevati (grazie WMMemLoad!) ho prima escluso l'ultimo banco di memoria (la mia configurazione è 4*256, quindi 1024-256), e successivamente il secondo. Ora mi trovo con un giga di RAM dei quali ne posso utilizzare la metà.

L'altro metodo, stilisticamente più corretto ma un poco più macchinoso, è quello di usare la patch BadRAM per il kernel Linux: in questo caso non viene limitato l'uso a un certo numero di MegaByte di memoria, ma si suggerisce al kernel quali sono i blocchi danneggiati da evitare.

Make your choice!