Posts Tagged ‘ Xorg

Xorg 1.6 – Ctrl + alt + backspace

Una delle feature introdotte nella versione 1.6 di Xorg è la disabilitazione di default della combinazione ctrl+alt+backspace.

Sulle mailing list è possibile leggere molto a riguardo, sul fatto che “normalmente” un riavvio del server X non dovrebbe essere necessario e su quanto, per un nuovo utente, possa essere semplice digitare accidentalmente la combinazione e ritrovarsi con il lavoro perso e una bella schermata di login senza sapere perché.

In effetti le ragioni sono plausibili, ma per alcuni il “normalmente”, significa aver necessità di riavviare X senza dover eseguire il kill del processo da un terminale: in passato mi sono capitate delle situazioni in cui X si è completamente congelato e con un ctrl+alt+backspace si è ripristinato il tutto senza dover riavviare l’intero sistema. Avendo l’opzione disabilitata, se il terminale (ctrl+alt+f1…f6) non risponde ai comandi allora non resta che il reset. Nel mio caso, ho preferito riabilitare l’opzione, aggiungendo al file xorg.conf (solitamente in /etc/X11) l’opzione “DontZap” ed impostandola a “false“. In proposito, riporto la sezione del mio file di configurazione:

Section "ServerFlags"
#   Option "AllowMouseOpenFail"  "true"
#      Option "AutoAddDevices" "False"
 Option  "DontZap" "False"
EndSection

In successivi aggiornamenti, è stata introdotta anche su HAL una disabilitazione della combinazione. Per riattivarla è sufficiente aggiungere questa entry

<merge key="input.xkb.options" type="string">
terminate:ctrl_alt_bksp
</merge>

all’interno del file /etc/hal/fdi/policy/10-keymap.fdi

In caso il file non fosse presente, copiarlo da /usr/share/hal/fdi/policy/10osvendor

cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi \
    /etc/hal/fdi/policy/

E modificarlo aggiungendo la entry di cui sopra.

Riporto di seguito il mio file keymap che funziona correttamente utilizzando entrance come login manager:

 <deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keymap">
      <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
    </match>

    <match key="info.capabilities" contains="input.keys">
      <merge key="input.xkb.rules" type="string">base</merge>

      <!-- If we're using Linux, we use evdev by default (falling back to
          keyboard otherwise). -->
      <merge key="input.xkb.model" type="string">keyboard</merge>
      </match><match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
            string="Linux">
        <merge key="input.xkb.model" type="string">evdev</merge>
      </match>

      <merge key="input.xkb.layout" type="string">it</merge>
      <merge key="input.xkb.variant" type="string" />
      <merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp</merge>
   
  </device>
</deviceinfo>

Infine, se non si sta usando l’integrazione Xorg/HAL occorrerà aggiungere una opzione nel file /etc/X11/xorg.conf all’interno della sezione keyboard

Option         "XkbOptions" "terminate:ctrl_alt_bksp"

Al solito, spero che a qualcuno sia utile ;)

Xorg 1.6 e HAL

Mi è stato chiesto perché tenessi commentata l’opzione AutoAddDevices nel file xorg.conf . Beh perché non ho avuto problemi con l’integrazione tra X e HAL (Hardware Abstraction Layer): è stato sufficiente traslare le opzioni che avevo all’interno di xorg.conf in un file XML di policy per HAL.

È più facile a farsi che a dirsi in questo caso! Vi mostro come esempio la mia configurazione del touchpad. In Xorg.conf avevo le seguenti opzioni:

Section "InputDevice"
 Driver         "synaptics"
 Identifier     "Touchpad"
 #Option        "CorePointer"
 Option         "Device"        "/dev/psaux"
 Option         "Protocol"      "auto-dev"
 #Option            "LeftEdge"      "1700"
 Option         "RightEdge"     "5300"
 #Option            "TopEdge"       "1700"
 #Option            "BottomEdge"    "4200"
 Option         "FingerLow"     "25"
 Option         "FingerHigh"    "30"
 Option         "MaxTapTime"    "180"
 Option         "MaxTapMove"    "220"
 Option         "VertScrollDelta" "100"
 Option         "MinSpeed"      "0.06"
 Option         "MaxSpeed"      "0.18"
#Option         "AccelFactor" "0.0010"
 Option     "AccelFactor"   "0.0050"   
 Option         "SHMConfig"     "on"
 Option         "Repeater"      "/dev/ps2mouse"
 Option     "HorizEdgeScroll" "false"  
 Option     "VertEdgeScroll" "true"
 #Option        "GrabEventDevice" "true"
EndSection

che sono diventate, né più né meno, il file /etc/hal/fdi/policy/11-x11-synaptics.fdi :

< ?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.touchpad">
    </match>
    <match key="info.product" contains="Synaptics TouchPad">
       <merge key="input.x11_driver" type="string">synaptics</merge>
 <!-- Arbitrary options can be passed to the driver using
     the input.x11_options property since xorg-server-1.5. -->
 <!-- EXAMPLE:
<merge key="input.x11_options.LeftEdge" type="string">120
-->
       <merge key="input.x11_options.AlwaysCore" type="string">true</merge>
       <merge key="input.x11_options.RightEdge" type="string">5300</merge>
       <merge key="input.x11_options.SHMConfig" type="string">on</merge>
       <merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>
       <merge key="input.x11_options.HorizEdgeScroll" type="string">false</merge>
       <merge key="input.x11_options.TapButton1" type="string">1</merge>
       <merge key="input.x11_options.TapButton2" type="string">2</merge>
       <merge key="input.x11_options.TapButton3" type="string">3</merge>
    </match>
    <match key="info.product" contains="AlpsPS/2 ALPS">
       <merge key="input.x11_driver" type="string">synaptics</merge>
    </match>
    <match key="info.product" contains="appletouch">
       <merge key="input.x11_driver" type="string">synaptics</merge>
    </match>
    <match key="info.product" contains="bcm5974">
       <merge key="input.x11_driver" type="string">synaptics</merge>
    </match>
  </device>
</deviceinfo>

In sostanza, a parte direttive specifiche, le opzioni che a suo tempo avevo abilitato nel file di configurazione del server X sono diventate nodi di tipo stringa del file XML. In questo modo ho, per esempio, lo scrolling orizzontale disabilitato, funzionalità che trovo scomoda alquanto. Per maggiore chiarezza, facendo riferimento proprio al caso di scrolling orizzontale, quella che era

Option      "HorizEdgeScroll" "false"

è diventata

<merge key="input.x11_options.HorizEdgeScroll" type="string">false</merge>

E di qui si può procedere con le altre personalizzazioni.

Qual è il vantaggio dell’integrazione con HAL? Qualcuno dice “Nessuno, semplicemente sono state spostate le configurazioni dei device di xorg in un file XML”…
Penso invece che sia un grande passo in avanti per la modularità e l’integrazione tra le diverse componenti, inoltre, se la periferica viene riconosciuta correttamente (e accade per buona parte delle periferiche di input) non è necessario toccare neanche un singolo file di configurazione, a meno di non aver necessità di impostazioni particolari: infatti nella mia configurazione di HAL, molte delle opzioni non sono state necessarie perché riconosciute correttamente in automatico.

Ora vi saluto e spero di non aver scritto troppe cavolate :)