Storicamente Linux nasce come un sistema operativo fatto da programmatori per programmatori, con una forte connotazione di strumento per esperti che proprio per la sua natura aperta possono modificare e adattare il sistema alle proprie necessità.
In tempi brevi, da strumento di studio e sperimentazione, Linux è diventato un ottimo sistema per applicazioni server, potendo compilare software opensource e sfruttarlo al meglio grazie alle buone prestazioni del kernel.
La necessità di usare Linux anche sul desktop, utilizzandone quindi anche l'ambiente grafico e andando oltre la sua interfaccia basata su una shell testuale, è stata una ulteriore fase successiva, paradossalmente più complicata e difficoltosa.
Sul desktop Linux deve affrontare la concorrenza e il paragone di sistemi come Windows e MacOS che hanno una maggiore esperienza e maturità nei campi che servono: multimedialità, supporto di hardware eterogeneo, facilità d'uso, uniformità dell'interfaccia grafica.
In questi aspetti Linux ha fatto molto strada e molta strada ha ancora da fare: la stabilità storica del kernel Linux non è sufficiente a farlo preferire ad altri sistemi, ma diverse applicazioni e software, nel corso degli anni, hanno fatto passi avanti sostanziali e notevoli, tanto da far ipotizzare che il momento in cui Linux sarà una valida alternativa sul desktop (per tutti gli utenti, non solo per utenti smaliziati che già da anni usano con soddisfazione Linux in ogni contesto) non è lontano.
I progetti software più significativi per un desktop Linux sono:
DeskTop Manager
Gnome Ambiente Desktop OpenSource. Parte del progetto GNU.
KDE Ambiente Desktop OpenSource. Include KDE Office e innumerevoli programmi e frontend dedicati.
Hanno entrambi il vantaggio di presentare una interfaccia omogenea e coerente, sono tra loro interoperabili e hanno una larga base di software sviluppato per diverse applicazioni ed integrato.
Applicazioni Office
OpenOffice. Suite di Office Automation OpenSource. La versione 1.x è matura e ha buona compatibilità con MS Office, ha un seguito sempre maggiore ed il vantaggio di avere una versione sia per Windows che per Linux e MacOS.
Esistono alternative come KOffice strettamente integrato in KDE o programmi singoli come il word processor Abiword o lo spreadsheet Gnumeric, ma rimangono alternative meno significative.
Programmi per Internet
Firefox e Thunderbird sono la più promettente alternativa come browser e programma di posta elettronica. Esistono per diversi sistemi operativi (Linux, Windows, MacOS ma anche Solaris, BeOS, Aix...) sono evoluti, efficenti, innovativi e generalmente più sicuri delle alternative Microsfot Internet Explorer e Outlook Express.
Browser validi sono anche Konqueror (integrato in KDE), Epiphany (Gnome), Opera, Mozilla (il padre di Firefox), Netscape (il nonno...).
Ottimi Client di posta sono Kmail (KDE), Evolution (Gnome), Mozilla Mail e molti altri.
Non mancano, in abbondanza, programmi per altre applicazioni Internet: chat, instant messaging, file transfer, VoIP, videoconferenza, tale da rendere una postazione Linux assolutamente in grado di gestire, con semplicità d'uso analoghe a quelle del mondo Windows, ogni attività su Internet.
Giochi
Su ogni desktop domestico è normale trovare dei videogiochi, che spesso sono le applicazioni che più mettono alla prova le risorse hardware del sistema. Ormai da anni è imprescindibile in ogni videogioco commerciale il supporto della accellerazione 3D direttamente da parte dell'hardware della scheda grafica.
Su Linux per lungo tempo il supporto Hardware 3D è stato frammentato e lacunoso, ma ormai i produttori leader di schedere grafiche (Nvidia e ATI) forniscono driver Linux per le loro schede, con supporto dello standard OpenGL, utilizzato da molti giochi, anche su Windows, in alternativa alle specifiche DirectX di Microsoft.
Alcuni significativi videogiochi di successo (Unreal Tournament, Quake, Doom in loro varie versioni e derivazioni) sono disponibili anche su Linux, lo stato di evoluzione del gaming su Linux situazione quindi, ben lungi dall'essere ottimale, è comunque significativo.
Rdesktop è un RDP client per Unix: in pratica l'anello mancante per accedere a sistemi Windows remoti dal proprio Linux tramite la funzionalità di accesso remoto e condivisione desktop chiamata Terminal Services su Windows 2000 Server e Remote Desktop su WindowsXP.
Di fatto con una comoda riga di comando rdesktop permette di aprire una sessione su un Windows 2000 Server remoto o un WindowsXP e visualizzarne il contenuto in una finestra all'interno del proprio ambiente X Window.
Terminal Services funziona molto meglio di VNC (ha protocollo più ottimizzato che supporta meglio limiti di banda) e il client per Unix / Linux permette quello che promette: la gestione e l'uso di server Windows remoti dalla propria postazione Linux.
La sintassi è semplice e si rimanda alla documentazione ufficiale per maggiori informazioni.
Per esempio:
rdesktop -P 98% -k it -u al 10.0.0.100 &
apre una sessione sul server Windows 10.0.0.100, con nome utente al, con dimensioni della finestra al 98% del proprio schermo e usando il layout di tastiera italiana.
Dalla versione 1.3, minima raccomandata, è migliorata la compatibilità con tastiere internazionali (tra cui l'italiana) e la possibilità di fare un copia e incolla dalla macchina locale Linxu alla finestra del Windows remoto.
Download e installazione sono semplicissimi:
make
Nella directory scompattata, per compilare (senza particolari configurazioni).
./rdesktop nomeserver
Per collegarsi al server remoto.
./rdesktop ?
Per un elenco delle opzioni disponibili.
L'interfaccia grafica su Linux può basarsi su diversi ambienti desktop (Desktop Environment o Desktop Manager), che mirano alla definizione di un interfaccia a finestre omogenea, coerente, semplice da usare ed integrata: Gnome e KDE sono i più conosciuti e generalmente usati nelle distribuzioni Linux, ma esistono alternative come XFCE e il vecchio CDE.
Gnome e KDE hanno le caratteristiche tipiche di un ambiente desktop evoluto: un file manager integrato e coerente, un layer di librerie tramite il quale è possible realizzare programmi con un look&feel comune, degli ambienti di sviluppo IDE che semplificano lo sviluppo di applicazioni native, canali omogenei di comunicazione fra programmi ecc.
Kde (K Desktop Environment)
Comprende, oltre ad un Windows Manager autonomo, un'intero ambiente desktop molto user friendly. Fornisce vari sistemi integrati per la gestione e configurazione del sistema oltre a vari programmi come una suite office completa (KOffice) e un IDE - Ambiente di sviluppo integrato (Kdevelop).
Si basa sulle librerie Qt ed utilizza un proprio metodo di comunicazione fra processi: DCOP.
Gnome (GNU Network Object Model Environment)
E' scritto e sviluppato dal Gnome Developer's project e fa parte del progetto GNU. A differenza di KDE Gnome è solo l'ambiente desktop per cui ha bisogno di un windows manager come FVWM (Fantastic Virtual Windows Manager). Anche Gnome offre dei propri sistemi integrati per la gestione della macchina. La sua architettura è completamente basata su CORBA.
Si basa sulle librerie GTK ed utilizza Corba per la comunicazione fra processi con l'implementazione OBRit.
Molte distribuzioni Linux prevedono la possibilità di installare ed utilizzare sia Gnome che KDE, è poi possibile modificarli e aggiornarli secondo le proprie necessità.
E' possibile lanciare programmi per KDE sotto Gnome e viceversa (sono tutti client X), l'interoperabilità reciproca migliora ma resta l'onere di caricare in memoria le librerie di base di entrambi e quindi appesantire sistemi non ben dimensionati.
XFCE
E' un ambiente desktop che sta crescendo molto perchè mantiene la caratteristica di essere leggero, e quindi permettere un agevole uso anche su hardware non potente.
E' possibile operare su un sistema Linux in due modi: tramite una shell, con interfaccia testuale a caratteri, particolarmente comoda su server, o tramite un più accessibile ambiente grafico, con un mondo di finestre e icone gestite via mouse.
Il sistema grafico di Linux viene comunemente chiamato X (X Window System) che nel tempo è diventato lo standard GUI (graphic user interface) di Unix e Linux.
A differenza di Microsoft Windows in cui l'interfaccia a finestre è parte integrante del kernel, in Unix è un normale processo e viene trattato come tale, con i vantaggi (maggiore stabilità del sistema nel momento in cui si dovesse bloccare) e gli svantaggi (prestazioni penalizzate) del caso.
L'ambiente grafico X è composto essenzialmente da questi componenti:
Server X
E' il processo che si occupa di gestire il display, ovvero si occupa di far interagire l'utente con la GUI. Esistono molteplici server X, ma su Linux sono diffusi Xorg e XFree86.
Alternative commerciali sono Accelerated-X e Metro-X.
Windows manager
Sono i software che si occupano di gestire le finestre e l'interazione con l'utente, ne esistono numerosi e possono essere alla base di sistemi desktop più complessi e completi. Fra i nomi più noti KDE (è un sistema Dekstop con un proprio Window Manager), Enlightenment, Sawfish, AfterStep, FVWM, Blackbox, Fluxbox, Metacity..
Desktop Manager
Insieme di programmi, che offrono una interfaccia unificata, coerente ed integrata. I Desktop Manager più conosciuti e utilizzati sono Gnome e KDE, dotati di tutto il software necessario per un ambiente desktop moderno, con XFCE terzo incomodo, sicuramente più "leggero".
Client X
Sono tutti i programmi eseguiti sotto X, con cui l'utente interagisce (ad esempio un browser, un word processor ecc.).
Il fatto di avere un'architettura client-server permette di utilizzare facilmente un server X locale (che mostra l'ambiente grafico sul nostro schermo) con un client in esecuzione su una macchina remota (potrebbe essere un server di applicazioni, particolarmente dotato in termini di hardware, dove di fatto vengono eseguiti i programmi che si usano).
Un'applicazione possimile di questa struttura prevede dei terminali con poche risorse hardware (thin client), a volte senza harddisk e giusto una scheda video e di rete, che caricano il sistema operativo via network, ospitano localmente un server X ed eseguono programmi (client X) su un server centrale.
Comunemente, quando si utilizza Linux sul proprio computer, il server e i client coesistono e vengono eseguiti sulla stessa macchina, ma prima di poter lanciare i client (i programmi, in ambiente grafico, che l'utente normalmente esegue), bisogna avere il server X funzionante.