New Qt project: qbar

Hello there! I’m still looking for an elegant window manager for developers under GNU/Linux. I think that mcwm is one of the nearest to my concept of design. No window borders, small RAM resources, XCB based.

When I downloaded mcwm project I noticed the TODO file containing an interesting feature request: snap borders. So in a couple of day I produced a patch and submitted to the author.  Unfortunately the author’s git repository doesn’t have a web interface, so, if you’re curious, you can see the patch as follows:

$ git clone git://hack.org/mcwm
$ cd mcwm
$ git diff 864bc76d d20afb19

Well, now that the patch is merged, It’s time to develop a general purpose toolbar. A toolbar to display values, a toolbar to perform actions, a toolbar to rule them all! 🙂

And…in a couple of days I developed qbar that uses stdin streaming to fill itself with objects like: buttons, labels, menu, progress bar. And who knows about the future? You can write you “applet” in standard bash script and redirect the stdout to qbar through a pipe. As you can imagine there is a protocol for the arguments given in the stdin. The protocol is the following:

LABEL
[L][<refresh>]<text>

BUTTON
[B][<refresh>][<icon_path>][<command>]<text>

MENU
[M][<icon_path>][<text>][<icon_path][<command>]<text>*[<icon_path>][<command>]<text>...

SEPARATOR
[S][<size_mode>]<size>

PROGRESS BAR
[P][<refresh>][<size>]<text>

<refresh> can be S (static) or R (refresh)
<size_mode> can be E (expanding) or F (fixed)

qbar is developed in Qt (4.8), so you can use a simple CSS stylesheet to develop a new theme. Let me show you how:

QMainWindow {
	background: #333333;
	color: #fff;
}

QLabel {
	color: #fff;
}

QMenu {
	background: #333333;
	color: #fff;
}

QPushButton {
	border-radius: 10px;
	padding-left: 5px;
	padding-right: 5px;
	color: #fff;
}

QPushButton:hover, QMenu::item:selected{
	background: #666;
}

#ITEM_2 {
	width: 150px;
}

QProgressBar {
     border: 2px solid rgba(0,0,0,0);
     border-radius: 5px;
     text-align: center;
     background-color: #666;
     color: #fff;
 }

 QProgressBar::chunk {
     background-color: #05B8CC;
 }

As you can see from the code, you can refer to the n-th element using the CSS selector <#ITEM_> followed by the element id. And, you can use the following command line parameters:

qbar [-a <l|c|r>] [-p <t|b>] [-t] [-h <pixels>] [-stylesheet <file>]

-a alignment
   l = left
   c = center
   r = right
-p position
   t = top
   b = bottom
-t set transparent background
-h height in pixels
-stylesheet css file

qbar is published at Gitorious:

git://gitorious.org/qt-projects/qbar.git

and at Qt-apps.org. What’s missing? Ah…yes, screenshot!

qbar

If you liked it, please vote for it on qt-apps.org, and if you want please submit patches and feature requests, all the code is released under the terms of GNU/GPL.

dochroot: automate chroot environment

Esisteranno sicuramente altri modi per fare ciò che sto per descrivere, ma a me occorreva urgentemente perciò ho fatto prima a svilupparlo che a cercarlo.

La necessità di oggi era di creare qualcosa di automatico che potesse, dato un eseguibile, creare un ambiente chroot idoneo per farlo girare. Di solito faccio tutto a mano, copio eseguibile, risolvo dipendenze di librerie, monto i filesystem, ecc.

dochroot fa questo e altro in automatico.

$ dochroot

usage: dochroot options

This script setup chroot environment

OPTIONS:
   -h      		Show this message
   -c <chroot path>	Specify chroot environment path (default /tmp/chroot)
   -a <binary path>	Add executable to chroot environment (default /tmp/chroot)
   -d 			Delete chroot environment (default /tmp/chroot)
   -b			Bind filesystem (/sys, /proc, /dev) WARNING!! Only one bind per environment!

Ipotizziamo di voler avere una shell in chroot con ls e ifconfig, ecco come fare con dochroot:

$ dochroot -c /tmp/mychroot -a /bin/bash
Preparing environment...DONE
Copying files...DONE

La prima operazione di add inizializza anche la directory di chroot, quindi copia l’eseguibile di bash nel percorso opportuno.

$ dochroot -c /tmp/mychroot -a /bin/ls
Preparing environment...DONE
Copying files...DONE
$ dochroot -c /tmp/mychroot -a /sbin/ifconfig
Preparing environment...DONE
Copying files...DONE

Copia anche ls e ifconfig

$ dochroot -c /tmp/mychroot -b
Binding filesystems......DONE

L’operazione di bind richiederà permessi root (ottenuti tramite sudo).

Ora si è pronti per utilizzare l’ambiente appena creato:

$ sudo chroot /tmp/mychroot
bash-4.1# ls /dev
.....

Il progetto è reperibile su Gitorious: http://gitorious.org/dochroot/dochroot

Il semino libero #1

Apro la rubrica del semino libero, piccole chicche di utilità personale che potrebbero far gola anche ad altri…quindi le condivido.
Perché semino? Perché spero di piantare qualcosa che poi cresca…
Perché libero? Perché tratterà di Software Libero.

Rimuovere fingerprints ssh scaduti

Ogni volta che ci si connette via ssh ad un server viene verificata la copia locale del fingerprint (~/.ssh/known_hosts) con l’originale remoto. Se le due firme non coincidono viene visualizzato un messaggio simile al seguente:

$ ssh secrethost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!        @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
[...]
Offending key in /home/ccm/.ssh/known_hosts:46
[...]
Host key verification failed.

Occorre fare attenzione perché, o il fingerprint è scaduto, oppure è stato violato e manipolato (in realtà c’è un terzo caso e cioè quando si forza sshd a ricreare le chiavi di inizializzazione) . Nel caso in cui il fingerprint sia scaduto o comunque ci siamo accertati che il server non si stato compromesso possiamo utilizzare il comando

$ ssh-keygen -R secrethost

e verrà rimosso dalla copia locale il vecchio fingerprint.

Cambiare l’endianess di un file

Per cambiare l’endianness di un file (es. binario) in Unix ci sono principalmente due modalità una manuale e una automatica. La manuale è swab() che si usa così (man 3 swab):

#include <unistd.h>

void swab(const void *from, void *to, ssize_t n);

L’implementazione che permette di leggere un file e usare swab() è lasciata come esercizio al lettore. 🙂

La modalità automatica invece usa dd in questo modo:

$ dd if=flash.bin of=flashsw.bin conv=swab

Per questa puntata è tutto, alla prossima!

Buon San Valentino a tutti

I love Free Software!

In occasione del giorno di San Valentino si celebra l’amore e l’affetto intimo fra due compagni. Quest’anno perché non cogliere l’occasione per dimostrare il tuo affetto alle persone e al Software Libero che ti dimostrano amore tutto l’anno?

Ecco alcuni consigli su come rendere il quattordicesimo giorno di Febbraio un giorno veramente speciale.

Questa volta è personale

Dietro ogni iniziativa legata al Software Libero ci sono persone che lavorano duramente. Dimostragli che apprezzi il loro lavoro – potrebbe fare la differenza!

I soldi non comprano l’amore…

…ma aiutano a combattere per la tua libertà. Donare ad un’iniziativa di software libero significa esprimere la propria gratitudine. Alcune organizzazioni come FSFE dipendono dal tuo contributo per continuare il proprio lavoro. Controlla la tua organizzazione preferita e fai una donazione. Puoi star certo che il tuo amore verrà ricambiato.

Il mio messaggio

Free Software LoverColgo l’occasione dell’iniziativa della FSFE per inviare un augurio personale a tutti gli innamorati del software libero, che il 14 Febbraio possa essere veramente un giorno di affiliazione e di dimostrazione di affetto verso chi si impegna nel supporto alle tue libertà.

In che modo ho contribuito al software libero? Forse qualcuno si ricorderà di me per il mio progetto FlatNuke, per la mia partecipazione al progetto FreePops, o per altri progetti minori. Ultimamente ho contribuito alla traduzione della campagne PlayOgg e Windows7Sins e presto rilascerò un altro software libero.

Un abbraccio a tutti
Simone

Campagna Usa Ogg!

Primi passi con Ogg

Le grandi compagnie di software come Microsoft, Apple e Adobe stanno promuovendo formati audio e video che limitano la libertà d’accesso e presentano restrizioni per gli sviluppatori di software, ma c’è un’alternativa che può essere riprodotta su tutti i computer senza restrizioni — Ogg. Ogg mette a disposizione dei formati multimediali di livello professionale. Ogg è largamente usato dagli sviluppatori di software libero, da artisti e da un crescente numero di distributori audio e video.

Usa Ogg — è facile!

Iniziare ad usare file Ogg è facile… i file Ogg, audio e video, sono supportati dal 24% di browser al mondo senza aggiunta di plug-in! Leggi di più.

Puoi utilizzare file Ogg sul tuo computer, oppure a casa o in auto, o nei dispositivi portatili, scegliendo fra più tipologie di software libero su un’ampia gamma di hardware che supporta Ogg.

Inoltre i file in formato Vorbis audio e Theora video possono essere modificati usando una varietà di applicazioni audio e video editing.

PlayOgg FAQ

Cos’è Ogg?
Ogg è un formato multimediale professionale. Ogg Vorbis codifica l’audio e Ogg Theora codifica il video. Quando trovi file con estensione Ogg —filemusicale.ogg— Usalo!

Come utilizzo Ogg?
Per utilizzare file Ogg Vorbis e Ogg Theora hai bisogno di lettori multimediali che supportino questi formati. Gran parte dei lettori liberi supporta Ogg. A noi piace VLC Media Player. Per scaricarlo ed istallarlo puoi seguire queste istruzioni.

Come posso contribuire?
Puoi condividere le tue idee per promuovere Ogg iscrivendoti alla mailing list dedicata alle discussioni — questa è una seconda lista separata da quella principale. Puoi, inoltre, conoscere altri sostenitori di PlayOgg sul gruppo di microblogging su identi.ca.

Perché usare Ogg?

Nessuna limitazione di brevetti!
A differenza di MP3, Ogg Vorbis non ha restrizioni dovute a brevetti. Microsoft ha dovuto pagare 1,5 miliardi di dollari a seguito di una citazione in giudizio per aver usato MP3 senza licenza. Con Ogg Vorbis, sarebbero stati al sicuro!

Queste cause giudiziarie dovute ai brevetti magari non ti riguarderanno mai direttamente, ma creano una cultura dove gli individui creativi e competenti non possono sviluppare software multimediale senza paura di essere attaccati legalmente. Usare Ogg è uno dei modi per sostenere i loro sforzi e per favorire una cultura migliore.

Scegli il Software Libero!
RealPlayer, Windows Media Player, iTunes, e altri diffusi formati richiedono agli utenti di usare software non libero: controllato dalle aziende e non dagli utenti. Le aziende che controllano il software lo progettano in modo da limitare gli utenti e spiarli. Se scegli Ogg Vorbis e Ogg Theora, puoi ascoltare audio e guardare video attraverso diversi lettori multimediali, inclusi quelli liberi che rispettano le tue libertà.

Niente da perdere!
Con Ogg Vorbis, da un punto di vista tecnico, non hai perdita di qualità. Può comprimere con più efficacia di MP3 e avere allo stesso tempo una ottima resa. Ma, meglio di tutti, è progettato per essere completamente privo di brevetti e non richiede l’uso di software proprietario.

Parti da qui: http://playogg.org/

La causa contro Microsoft e il software proprietario

windows7sinsE’ giunto il tempo di combattere, partiremo da it.windows7sins.org e dalla campagna di lotta contro il software proprietario e gli abusi delle corporation.

Ho tradotto parte del sito windows7sins.org e ho creato un volantino da stampare e diffondere. Potete scaricarlo qui.

Ecco un piccolo assaggio:

La nuova versione del sistema operativo Windows di Microsoft, Windows 7, ha lo stesso problema che Vista, XP e tutte le versioni precedenti hanno avuto: sono software proprietari. Gli utenti non hanno il permesso di condividere o modificare il software Windows, e nemmeno di esaminare come funziona all’interno. Il fatto che Windows 7 sia proprietario significa che Microsoft impone il controllo sui suoi utenti attraverso una combinazione di copyright, contratti e brevetti. La Microsoft usa questo potere per abusare degli utenti di computer. All’interno di windows7sins.org, la Free Software Foundation elenca sette esempi di abusi commessi dalla Microsoft..

UPDATE: Ho collaborato con LibrePlanetItalia alla traduzione del sito it.windows7sins.org e il volantino è diventato ora ufficiale, potete trovarlo scaricarlo qui: versione estesa, versione breve.