lunedì 3 novembre 2014

Tasti per aumentare e diminuire la luminosità dello schermo non funzionanti

Su un computer che mi è capitato sotto mano, un HP Pavilion DV6 6C60EL (A7Q10EA#ABZ), i tasti per aumentare e diminuire la luminosità dello schermo non hanno alcun effetto e neanche la gestione di sistema del risparmio energetico è in grado di diminuire la luminosità durante i periodi di inattività.

Ho risolto seguendo le istruzioni riportate qui e qui: aprite il file /etc/default/grub con il vostro editor di testo preferito e con i diritti di amministratore, per esempio se usate Gedit potete eseguire il comando da terminale
sudo gedit /etc/default/grub
All'interno del file che avete aperto cercate la riga
GRUB_CMDLINE_LINUX_DEFAULT="..."
(al posto dei puntini di sospensione ci saranno altre opzioni) e aggiungete alla fine delle opzioni fra virgolette acpi_backlight=vendor, quindi avrete
GRUB_CMDLINE_LINUX_DEFAULT="... acpi_backlight=vendor"
Per concretezza, se prima c'era (questo dovrebbe essere il valore predefinito)
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
ora scrivete
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"

A questo punto salvate il file e nel terminale aggiornate le configurazioni di GRUB con il comando
sudo update-grub
Riavviate il sistema e la gestione della luminosità dovrebbe finalmente funzionare.

Nota: questa guida è stata testata solo sul computer indicato, non è detto che funzioni su altri sistemi, comunque su Ask Ubuntu sono riportati diversi altri computer sui quali questo sistema funziona

WiFi instabile con scheda wireless Realtek RTL8188CE

La scheda wireless Realtek RTL8188CE può risultare molto instabile in ambiente GNU/Linux: la connessione risulta spesso molto lenta e dopo qualche minuto completamente inutilizzabile.

In dettaglio, il comando lspci restituisce questa informazione per la scheda:
$ lspci|grep -i wifi
0d:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)

La soluzione che ho trovato è stata installare il driver aggiornato disponibile all'indirizzo https://github.com/FreedomBen/rtl8188ce-linux-driver e seguire le dettagliate istruzioni (in inglese) presenti in quella pagina (scorrete fino ad arrivare al contenuto del file README.md).

sabato 10 maggio 2014

Sistema operativo estremamente lento dopo avanzamento di versione

Promemoria per me: se dopo aver eseguito l'avanzamento di versione del sistema operativo tutto il computer risulta lento, controlla se avevi installato i driver proprietari della scheda video e se la tua scheda sia ancora supportata da quei driver.



Spiegazione del promemoria. Qualche giorno fa su un computer sul quale era installato Ubuntu 12.04 ho eseguito l'avanzamento di versione a Ubuntu 14.04. Sin dal primo avvio dopo l'aggiornamento, tutto il sistema risultava lentissimo: il mouse si muoveva a scatti, le finestre impiegavano qualche secondo per essere disegnate, ecc... Il problema era che quel computer ha una scheda video AMD per il quale era stato installato il driver proprietario fglrx, però fra il rilascio di Ubuntu 12.04 e Ubuntu 14.04 quella scheda video è stata dichiarata non più supportata. Pertanto al riavvio del sistema dopo l'aggiornamento alla versione 14.04 il sistema ha provato a usare il driver proprietario che però non era più adatto alla scheda video, causando tutti i problemi descritti più sopra. La soluzione è stata verificare che la scheda video fosse supportata dal driver open-source radeon (qui c'è l'elenco delle schede supportate), disinstallare i driver proprietari fglrx seguendo queste istruzioni e riavviare il sistema. Dopo queste operazioni il computer è tornato a funzionare normalmente senza alcun rallentamento visibile.

lunedì 23 settembre 2013

Rimappare tasti della tastiera e scambiare numeri con simboli

Trovo la configurazione della tastiera italiana su GNU/Linux (guardate l'ultima figura qui) abbastanza comoda, però tutto si può sempre migliorare. In questo post spiegherò come si cambiano le funzioni dei tasti.

Gli strumenti che servono sono due: xev (per scoprire il codice del tasto e il nome della funzione da eseguire) e xmodmap (per modificare le funzioni associate ai tasti). Entrambi questi programmi, che si usano da linea di comando, fanno parte del server grafico X.org e sono preinstallati nella maggior parte delle distribuzioni. I pacchetti che forniscono questi programmi su Debian e Ubuntu sono x11-utils e x11-xserver-utils.

Per prima cosa bisogna scoprire qual è il codice associato a un tasto. Per fare ciò bisogna eseguire in un terminale il comando
xev
Si aprirà una finestra grafica, mentre sul terminale scorreranno dei messaggi. I messaggi che appaiono appena si avvia il programma non sono importanti. A questo punto bisogna premere il tasto di cui si vuole conoscere il codice. Per esempio, premendo il tasto m apparirà nel terminale il messaggio
KeyRelease event, serial 40, synthetic NO, window 0x4600001,
    root 0x251, subw 0x0, time 7126899, (-210,874), root:(330,897),
    state 0x10, keycode 58 (keysym 0x6d, m), same_screen YES,
    XLookupString gives 1 bytes: (6d) "m"
    XFilterEvent returns: False
Le righe che dobbiamo guardare sono la terza e la quarta: nella terza è riportato il keycode, il codice del tasto (nell'esempio il codice è 58) e il nome della funzione fra parentesi, dopo keysym e un numero esadedecimale (nell'esempio la funzione è m). Invece nella quarta riga possiamo vedere qual è il simbolo effettivamente inserito (m nell'esempio). Il codice del tasto è indipendente dagli eventuali tasti modificatori premuti, come SHIFT e ALT GR, il codice è sempre lo stesso, quello che cambieranno saranno le funzioni associate e i caratteri inseriti.

Facciamo un'altra prova: premiamo il tasto n in una sessione di xev, il corrispondente output sarà
KeyRelease event, serial 40, synthetic NO, window 0x4600001,
    root 0x251, subw 0x0, time 8118563, (523,450), root:(1063,473),
    state 0x10, keycode 57 (keysym 0x6e, n), same_screen YES,
    XLookupString gives 1 bytes: (6e) "n"
    XFilterEvent returns: False

Il comando xmodmap permette di rimappare le funzioni dei tasti. La sintassi del comando da usare è
xmodmap -e "keycode CODICE = FUNZIONE"
sostituendo a CODICE il codice del tasto e a FUNZIONE la funzione da eseguire. Per esempio, per inserire una n premendo il tasto m si deve usare il comando
xmodmap -e "keycode 58 = n"
Dopo l'uguale si possono inserire fino a otto funzioni differenti, separate da uno spazio: la prima è la funzione eseguita premendo il tasto da solo, la seconda è quella corrispondente all'azione SHIFT + tasto, la terza è quella eseguita premendo ALT GR + tasto, la quarta è quella corrispondente a SHIFT + ALT GR + tasto. Le ultime quattro funzioni non sono generalmente utilizzate. Quindi per inserire una n premendo il tasto m e una N premendo SHIFT + m bisogna cambiare il comando precedente in
xmodmap -e "keycode 58 = n N"

Il comando
xmodmap -pke
mostra sullo schermo tutte le funzioni associate a tutti i tasti della propria tastiera. L'output sarà qualcosa del tipo:
...
keycode  22 = BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace
keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab
keycode  24 = q Q q Q at Greek_OMEGA at
keycode  25 = w W w W lstroke Lstroke lstroke Lstroke
keycode  26 = e E e E EuroSign cent EuroSign
keycode  27 = r R r R paragraph registered paragraph
keycode  28 = t T t T tslash Tslash tslash Tslash
keycode  29 = y Y y Y leftarrow yen leftarrow
keycode  30 = u U u U downarrow uparrow downarrow
keycode  31 = i I i I rightarrow idotless rightarrow
keycode  32 = o O o O oslash Oslash oslash Oslash
keycode  33 = p P p P thorn THORN thorn THORN
keycode  34 = egrave eacute egrave eacute bracketleft braceleft bracketleft
keycode  35 = plus asterisk plus asterisk bracketright braceright bracketright
keycode  36 = Return NoSymbol Return NoSymbol Return
keycode  37 = Control_L NoSymbol Control_L NoSymbol Control_L
keycode  38 = a A a A ae AE ae AE
keycode  39 = s S s S ssharp section ssharp
keycode  40 = d D d D eth ETH eth ETH
...
Possiamo sfruttare queste informazioni per scambiare completamente due tasti senza cercare manualmente una a una tutte le funzioni associate a un tasto, insieme ai possibili modificatori. Per esempio, per scambiare i tasti q (codice 24) e p (codice 33) si possono usare i comandi:
xmodmap -e "keycode  33 = q Q q Q at Greek_OMEGA at"
xmodmap -e "keycode  24 = p P p P thorn THORN thorn THORN"

Il comando xmodmap modifica le associazioni dei tasti solo per la sessione corrente del server X.org. Per rendere permanenti le modifiche bisogna salvare le espressioni keycode CODICE = FUNZIONI in un file e fare in modo che xmodmap carichi quel file ogni volta che si avvia il server grafico X.org. Generalmente il file in cui si salvano queste impostazioni si chiama ~/.xmodmaprc (il nome in realtà è lasciato alla libera scelta dell'utente, il nome suggerito deriva solo da una convenzione diffusa), mentre nel file ~/.xinitrc si aggiungerà (se il file non esiste bisogna crearlo) il comando
xmodmap .xmodmaprc

Nelle tastiere dotate di tastierino numerico sono presenti due tasti per inserire ciascuna cifra. Per eliminare questa ridondanza si possono scambiare, nei tasti numerici sopra le lettere, i simboli con i numeri. Per essere più chiari, si può fare in modo che premendo il tasto 1 sia inserito il simbolo !, premendo il tasto 2 sarà inserito il simbolo ", premendo 3 si inserirà £ ecc... mentre per inserire i corrispondenti numeri bisognerà premere SHIFT + tasto. Nelle tastiere con layout italiano l'output del comando xmodmap -pke corrispondente a questi dieci tasti numerici è
keycode  10 = 1 exclam 1 exclam onesuperior exclamdown onesuperior
keycode  11 = 2 quotedbl 2 quotedbl twosuperior dead_doubleacute twosuperior
keycode  12 = 3 sterling 3 sterling threesuperior dead_tilde threesuperior
keycode  13 = 4 dollar 4 dollar onequarter oneeighth onequarter
keycode  14 = 5 percent 5 percent onehalf threeeighths onehalf
keycode  15 = 6 ampersand 6 ampersand notsign fiveeighths notsign
keycode  16 = 7 slash 7 slash braceleft seveneighths braceleft
keycode  17 = 8 parenleft 8 parenleft bracketleft trademark bracketleft
keycode  18 = 9 parenright 9 parenright bracketright plusminus bracketright
keycode  19 = 0 equal 0 equal braceright dead_ogonek braceright
Per realizzare quanto suggerito basta inserire nel file ~/.xmodmaprc le espressioni precedenti invertendo le funzioni numeriche con i simboli (per esempio bisogna invertire exclam con 1 nella riga corrispondente al tasto con codice 10). Per concretezza riporto qui il codice da inserire nel file:
keycode  10 = exclam 1 exclam 1 onesuperior exclamdown onesuperior
keycode  11 = quotedbl 2 quotedbl 2 twosuperior dead_doubleacute twosuperior
keycode  12 = sterling 3 sterling 3 threesuperior dead_tilde threesuperior
keycode  13 = dollar 4 dollar 4 onequarter oneeighth onequarter
keycode  14 = percent 5 percent 5 onehalf threeeighths onehalf
keycode  15 = ampersand 6 ampersand 6 notsign fiveeighths notsign
keycode  16 = slash 7 slash 7 braceleft seveneighths braceleft
keycode  17 = parenleft 8 parenleft 8 bracketleft trademark bracketleft
keycode  18 = parenright 9 parenright 9 bracketright plusminus bracketright
keycode  19 = equal 0 equal 0 braceright dead_ogonek braceright
Bisogna farci l'abitudine, ma questa nuova configurazione può risultare molto conveniente.

martedì 7 maggio 2013

Alcune applicazioni KDE utili ma non installate in maniera predefinita

Ultimamente sto usando l'ambiente desktop KDE sul sistema operativo Debian. Trovo che sia abbastanza completo, però anche installando il metapacchetto kde-full alcune applicazioni utili per specifici compiti non sono installate. Di seguito riporto un elenco di applicazioni per l'ambiente desktop KDE non installate in maniera predefinita in Debian. Questo elenco, che potrebbe essere ampliato in futuro, serve soprattutto a me come promemoria, però spero che possa risultare utile anche a qualcun altro.
  • Gestione Bluetooth: bluedevil;
  • fare foto con la webcam: kamerka;
  • client BitTorrent: ktorrent;
  • gestione del touchpad: Synaptiks, il pacchetto Debian si chiama kde-config-touchpad (ne avevo parlato anche qui);
  • integrazione delle applicazioni GTK 2 e GTK 3 con il tema Oxygen: gtk2-engines-oxygen e gtk3-engines-oxygen (per maggiori dettagli vedi qui);
  • registrazione audio dal microfono: audacity (in realtà audacity non è un programma specifico per KDE e fa anche molto altro rispetto alla semplice registrazione, ma non sono a conoscenza di alternative per questo ambiente desktop) kwave (specifico per KDE e molto più semplice di Audacity, ringrazio Ale che l'ha suggerito);
  • acquizione immagini da scanner: skanlite, comunque dovrebbe essere già installato il più potente e completo xsane.
Se avete consigli per altri programmi, lasciate un commento.

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.