mercoledì 24 ottobre 2012

AUCTeX: parsing automatico di tutti i pacchetti LaTeX presenti nel sistema

Fra le miriadi di funzioni disponibili in AUCTeX, il pacchetto per Emacs per la composizione di documenti *TeX, c'è la possibilità di effettuare il parsing automatico di tutti i pacchetti *TeX presenti nel proprio sistema. La comodità di questa funzione è che Emacs in questo modo conoscerà tutti i comandi (e relativa sintassi: numero di opzioni e argomenti) definiti da tutti i pacchetti analizzati. Quando in un sorgente LaTeX caricherete uno dei pacchetti analizzati, in Emacs sarà possibile utilizzare C-c RET o C-c C-m per inserire i comandi conosciuti (e Emacs vi proporrà anche il giusto numero di opzioni e argomenti obbligatori). Purtroppo non sono tutte rose e fiori, all'inizio ho detto un'imprecisione: non va bene per tutti i pacchetti, infatti l'analisi sintattica dà il meglio di sé con pacchetti non troppo complicati e AUCTeX attualmente non è in grado di comprendere la sintassi di LaTeX3. Quindi per questi pacchetti i risultati non saranno quelli attesi.

Si può fare questo (mezzo) prodigio utilizzando i comandi TeX-auto-generate e TeX-auto-generate-global. La prima funzione, eseguibile dentro Emacs con M-x TeX-auto-generate, richiede l'inserimento del file di stile di classe *TeX da analizzare (oppure della cartella in cui cercare ricorsivamente questi file) e della cartella in cui andare a salvare le informazioni (per default il valore della variabile TeX-auto-private che per default dovrebbe valere "~/.emacs.d/auctex/auto").

Il secondo comando, eseguibile dentro Emacs con M-x TeX-auto-generate-global, analizza tutti i file presenti nelle cartelle elencate nella variabile TeX-macro-global e salva le informazioni nella cartella indicata dalla variabile TeX-auto-global (che dovrebbe valere "/var/lib/auctex/emacsXX", con al posto di XX il numero di versione di Emacs). La variabile TeX-macro-global deve contenere il percorso delle cartelle in cui sono presenti, ricorsivamente, i pacchetti *TeX in uso. Quindi una buona idea è quella di inserire nell'elenco, per esempio, la cartella /usr/local/texlive/2012/texmf-dist/tex/ o qualunque sia la cartella contenente i file di stile e di classe. Poiché generalmente la cartella in cui Emacs scriverà le informazioni (/var/lib/auctex/emacsXX in maniera predefinita) è una cartella di sistema, non accessibile in scrittura all'utente corrente se non è amministratore, è necessario eseguire questa funzione dentro una sessione di Emacs avviato con i permessi di amministratore. In alternativa si può semplicemente eseguire da terminale il seguente comando:
sudo emacs -batch -f TeX-auto-generate-global
che esegue il comando, con i permessi di amministratore, senza aprire una nuova finestra di Emacs. Può essere utile eseguire questo comando ogni volta che si aggiorna AUCTeX o che vengono aggiornati i pacchetti della propria distribuzione *TeX. Si noti, però, che l'operazione può richiedere diversi minuti e un elevato consumo della CPU (Emacs deve leggere, interpretare e scrivere alcune migliaia di file), anche se le esecuzioni della funzione successive alla prima (se sono cambiati solo pochi pacchetti e non è stato aggiornato AUCTeX) richiederanno un tempo sensibilmente minore.

sabato 6 ottobre 2012

[Risolto] cannot connect to X server :0

A differenza di GNOME, in KDE non è possibile avviare applicazioni grafiche direttamente con sudo. Infatti, se in KDE si prova a eseguire con sudo un'applicazione grafica da utilizzare con i permessi di amministratore, si potrà ricevere un messaggio di errore di questo tipo
$ sudo kate
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
No protocol specified
kate: cannot connect to X server :0
La soluzione è semplice: basta utilizzare kdesudo (assicurarsi di aver installato il pacchetto omonimo) al posto del solo sudo:
$ kdesudo kate


Aggiornamento (20/06/2013): come detto, bisogna utilizzare kdesudo per eseguire con i permessi di amministratore qualsiasi applicazione grafica, compreso il programma di installazione della distribuzione TeX Live scaricata dal sito http://www.tug.org/texlive/. Provando a eseguire lo script di installazione con sudo al posto di kdesudo si otterrebbe il seguente messaggio d'errore
$ sudo ./install-tl -gui
No protocol specified
perl/Tk unusable, cannot create main window.
Error message from creating MainWindow:
  couldn't connect to display ":0" at /usr/lib/perl5/Tk/MainWindow.pm line 53.
Tk::MainWindow->new() at ./install-tl line 339

Continuing in text mode...
Quindi il comando corretto da utilizzare è invece
$ kdesudo -- ./install-tl -gui
Il doppio trattino dopo kdesudo serve per specificare che è finito l'elenco delle opzioni di kdesudo, il resto dell'argomento deve essere trattato come comando da eseguire, altrimenti -gui verrebbe interpretata come opzione di kdesudo invece che dello script install-tl.

[Risolto] Il volume di sistema in KDE è agganciato a quello di VLC

Non sono riuscito a trovare un'espressione migliore per descrivere il problema: alzando il volume di VLC aumenta anche il volume di sistema, in KDE. Per la precisione, il volume di sistema è sempre maggiore o uguale a quello di VLC. In realtà non è un problema né di KDE (si presenta anche negli altri ambienti desktop) né di VLC (si presenta anche con gli altri programmi, per esempio l'ho riscontrato in Dragon Player), ma di una configurazione predefinita poco felice di PulseAudio. È facile imbattersi in questo problema usando KDE perché questo ambiente desktop usa in maniera predefinita PulseAudio. Nel manuale del demone di configurazione di Pulseaudio (man pulse-daemon.conf) si legge
flat-volumes=  Enable  'flat' volumes, i.e. where possible let the sink
volume equal the maximum of the volumes of the inputs connected to  it.
Takes a boolean argument, defaults to yes.
Per risolvere il problema bisogna modificare il file /etc/pulse/daemon.conf con il proprio editor di testo preferito e con i diritti di amministratore. Per esempio, volendo usare Kwrite per aprire il file si può dare il seguente comando nel terminale
kdesudo kwrite /etc/pulse/daemon.conf
Dopo di ciò si deve impostare la variabile flat-volumes al valore no, per inibire il comportamento descritto nel manuale. Nel file dovrebbe essere già presente la riga
; flat-volumes = yes
In questo caso, togliere il simbolo di commento ; e cambiare il valore della variabile da yes a no. Se la riga precedente non è presente, aggiungete semplicemente da qualche parte la riga
flat-volumes = no
Dopo aver salvato e chiuso il file, per concludere bisogna riavviare Pulseaudio da terminale con il comando
pulseaudio --kill && pulseaudio --start

Ho trovato questa soluzione qui: https://wiki.archlinux.org/index.php/PulseAudio_%28Italiano%29#Il_livello_del_volume_si_alza_ogni_volta_che_una_nuova_applicazione_viene_avviata.

sabato 29 settembre 2012

Massimizzare la finestra di GNU Emacs in KDE

Nell'ambiente desktop KDE, la finestra dell'interfaccia grafica GTK+ di Emacs non viene massimizzata correttamente, come mostrato nella figura a lato. (Per integrare per bene le applicazioni GTK+ in KDE si può consultare questa guida.) Per risolvere questo inconveniente bisogna fare clic sulla barra del titolo di Emacs e aprire AvanzateImpostazioni specifiche per applicazione.... Nella scheda Dimensioni e posizione impostare la voce Rispetta le restrizioni geometriche su Imponi e dopo di che premere Ok. In questo modo viene aggiunta semplicemente una striscia bianca per coprire la regione "scoperta", ma almeno viene eliminato il "fastidio" di vedere parte del desktop dietro una finestra che dovrebbe essere massimizzata.




L'impostazione precedente può essere creata "manualmente" andando in Impostazioni di sistemaRegole delle finestre e nella scheda Regole delle finestre creare una nuova regola facendo clic sul pulsante Nuovo... posto sulla destra. Nella finestra che si aprirà, scrivere una descrizione chiara nel campo omonimo della scheda Corrispondenza delle finestre (la descrizione che si ottiene con la procedura "automatica" descritta sopra è "Impostazioni dell'applicazione di emacs") e nel campo Classe di finestra selezionare Esattamente e aggiungere il valore emacs23 emacs (o l'eventuale numero di versione di Emacs utilizzata).

Ho trovato questo workaround qui: http://forum.kde.org/viewtopic.php?f=111&t=94122.

Attivare il blocco numeri all'avvio di KDE

All'avvio dell'ambiente desktop potrebbe succedere che il tasto blocco numeri (anche noto come blocco numerico o num lock) del tastierino numerico sia disattivato. Per accenderlo automaticamente andare in Impostazioni di sistemaDispositivi di immissione, scheda Tastiera e poi nella scheda Hardware selezionare Acceso nel campo Bloc Num all'avvio di KDE.

venerdì 28 settembre 2012

Gestire il touchpad in KDE

Per l'ambiente desktop KDE 4 esiste un programma per la gestione del touchpad dei computer portatili chiamato synaptiks. Tuttavia questo potrebbe non essere installato in maniera predefinita dalle varie distribuzioni, per esempio non mi sembra che Debian lo installi automaticamente. Per ottenerlo dai repository ufficiali di Debian e Ubuntu bisogna installare il pacchetto kde-config-touchpad. Da terminale si può dare il comando
sudo apt-get install kde-config-touchpad
Una volta installato sarà possibile gestire le impostazioni del touchpad da Impostazioni di sistemaDispositivi di immissione, scheda Touchpad, oppure nella sezione Accessori sotto la voce Touchpad management / synaptiks di un menu di avvio di applicazioni come Kickoff o Lancelot.





mercoledì 21 dicembre 2011

Integrare le applicazioni GTK+ in KDE

Le applicazioni scritte con il toolkit GTK+ (come praticamente tutte le applicazioni dell'ambiente desktop GNOME) non sono nativamente ben integrate nell'ambiente desktop KDE (che invece si basa sul toolkit Qt).

Il toolkit GTK+ permette di impostare un tema per tutte le applicazioni che lo utilizzano, quindi per migliorare l'aspetto di queste applicazioni all'interno di KDE abbiamo bisogno di un tema che assomigli il più possibile al tema in uso su KDE. Esistono diversi temi GTK+ che ben si integrano con le applicazioni Qt, come QtCurve, però in particolare segnalo l'esistenza del tema Oxygen-gtk che è una traduzione in GTK+ del tema predefinito di KDE, cioè Oxygen. Non è scopo di questa guida spiegare come si installano in generale i temi GTK+, vedremo solo come si installa Oxygen-gtk su Debian e sistemi derivati e come fare per utilizzarlo. Sugli altri sistemi operativi (Fedora, openSUSE, Gentoo, Arch Linux, eccetera) potranno cambiare i nomi dei pacchetti da installare e il gestore pacchetti da usare, ma le operazioni da eseguire saranno grosso modo le stesse.

È possibile installare Oxygen-gtk scaricandolo da qui e seguendo le istruzioni riportate nella pagina oppure, su Debian e derivate, installando il pacchetto gtk2-engines-oxygen tramite il gestore pacchetti Synaptic o sul terminale con il comando
sudo apt-get install gtk2-engines-oxygen
Ora dobbiamo solo impostare questo tema come quello utilizzato dalle applicazioni GTK+. Esiste una procedura manuale ben descritta in questa guida (in inglese) del wiki di Arch Linux, ma esiste anche una procedura automatica basata sull'utilizzo di un'apposita interfaccia grafica. Ci sono diversi semplici programmi che permettono di selezionare il tema GTK+ fra i quali gtk-chtheme e lxappearance, ma dal momento che stiamo parlando dell'ambiente desktop KDE suggerisco di utilizzare il selettore dei temi GTK che fa parte degli strumenti di sistema di KDE. Per installarlo su Debian e derivate bisogna installare il pacchetto kde-config-gtk-style con Synaptic oppure via terminale con il comando
sudo apt-get install kde-config-gtk-style
Si può adesso selezionare il tema in Impostazioni di sistema, scegliendo Aspetto delle applicazioni e impostando nella scheda Aspetto GTK lo stile oxygen-gtk.
Manca solo un'ultima operazione prima di finire. Scegliendo lo stile con il programma Impostazioni di sistema abbiamo creato un file nascosto il cui percorso è ~/.gtkrc-2.0-kde (ricordo che la tilde ~ è un'abbreviazione del percorso della home dell'utente corrente), ma per rendere efficace questa impostazione il file deve chiamarsi ~/.gtkrc-2.0 quindi dobbiamo rinominare il file ~/.gtkrc-2.0-kde in ~/.gtkrc-2.0, oppure copiare ~/.gtkrc-2.0-kde e incollarlo con il nuovo nome ~/.gtkrc-2.0 oppure creare un link simbolico ~/.gtkrc-2.0 che punta a ~/.gtkrc-2.0-kde. Per visualizzare i file nascosti in Dolphin bisogna premere la scorciatoia da tastiera ALT + . oppure queste operazioni possono essere eseguite da terminale rispettivamente con i seguenti comandi (basta eseguirne solo uno, quello che si preferisce!):
mv ~/.gtkrc-2.0-kde ~/.gtkrc-2.0 # per rinominare il file
cp ~/.gtkrc-2.0-kde ~/.gtkrc-2.0 # per copiare il file
ln -s ~/.gtkrc-2.0-kde ~/.gtkrc-2.0 # per creare il link simbolico
Adesso tutte le applicazioni GTK che verranno aperte risulteranno finalmente ben integrate con le applicazioni Qt di KDE.

Un'ultima osservazione: l'impostazione del tema GTK viene letta solo dai programmi eseguiti dall'utente nella cui cartella home si trova il file .gtkrc-2.0, ciò permette agli utenti di uno stesso sistema di usare diversi temi. Questo vale anche per l'utente "root", pertanto se si vuole che anche le applicazioni eseguite come utente "root" utilizzino il tema scelto bisogna inserire nella home dell'utente "root" il file .gtkrc-2.0. Per fare questo possiamo copiare il file nella home di "root" oppure creare all'interno di questa un link simbolico al nostro file .gtkrc-2.0 in modo che tutte le modifiche apportate al nostro file .gtkrc-2.0 valgano automaticamente anche per l'utente "root" senza dover modificare ulteriormente suoi file. Da terminale queste due operazioni possono essere eseguite con i comandi (di nuovo, va usato solo uno di questi comandi, quello che si preferisce)
sudo cp ~/.gtkrc-2.0 ~root/.gtkrc-2.0 # per copiare il file
sudo ln -s ~/.gtkrc-2.0 ~root/.gtkrc-2.0 # per creare il link simbolico



Aggiornamento: il tema Oxygen-gtk supporta anche la versione 3 del toolkit GTK+, nei repository di Debian e Ubuntu è presente il pacchetto gtk3-engines-oxygen. Per installarlo da terminale:
sudo apt-get install gtk3-engines-oxygen
La modalità di configurazione del tema per GTK3 però è diversa rispetto a quella per GTK2. Non mi risulta che esistano strumenti per selezionare automaticamente il tema, tuttavia bisogna solo creare un file chiamato settings.ini nella cartella ~/.config/gtk-3.0 (ricordo che la tilde ~ è un'abbreviazione per il percorso della home dell'utente corrente e che i file e cartelle i cui nomi iniziano con un punto non sono normalmente visibili, premere ALT + . in Dolphin per visualizzarli), cartella da creare se non già esistente. All'interno di questo file è sufficiente scrivere
[Settings] 
gtk-theme-name=oxygen-gtk
Dopo aver salvato il file le modifiche dovrebbero avere effetto immediatamente su tutte le applicazioni grafiche basate sul toolkit GTK3. Se si vuole fare tutto da terminale si possono dare i seguenti comandi
mkdir -p ~/.config/gtk-3.0
echo -e '[Settings]\ngtk-theme-name=oxygen-gtk' > ~/.config/gtk-3.0/settings.ini~/.config/gtk-3.0/settings.ini
Il primo comando crea la cartella se non esiste già, il secondo crea il file con il contenuto sopra indicato.

Anche i temi delle applicazioni GTK3 possono essere diversi da utente a utente. Come detto anche per le applicazioni GTK, possiamo automaticamente dare all'utente root le nostre stesse impostazioni eseguendo da terminale uno dei due seguenti comandi, a scelta
sudo cp ~/.gtkrc-3.0 ~root/.gtkrc-3.0 # per copiare il file
sudo ln -s ~/.gtkrc-3.0 ~root/.gtkrc-3.0 # per creare il link simbolico