IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 102 (torneu a la resta de temes)
Fitxers: LPI106_InterficiesGrafiques.pdf (LPI106_InterficiesGrafiques.odp)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/106.1
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Contingut

Objectius del tema

106.1. Instal·lació i configuració de X11
Objective.jpg
  • Objectiu: Els candidats han de ser capaços de instal·lar i configurar un servidor X i un servidor de fonts X.
  • Pes: 2
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 106.1. Instal·lació i configuració de X11

Plantilla per prendre apunts

Maquinari

lscpi

Amb l'ordre lspci podeu consultar quin és el tipus de targeta gràfica que teniu:

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express Integrated Graphics Controller (rev 10)

Podeu obtenir informació més detallada amb:

$ sudo lshw -C video
 *-display               
      description: VGA compatible controller
      product: 82G33/G31 Express Integrated Graphics Controller
      vendor: Intel Corporation
      physical id: 2
      bus info: pci@0000:00:02.0
      version: 10
      width: 32 bits
      clock: 33MHz
      capabilities: msi pm bus_master cap_list rom
      configuration: driver=i915 latency=0
      resources: irq:27 memory:fea80000-feafffff ioport:dc00(size=8) memory:d0000000-dfffffff(prefetchable) memory:fe900000-fe9fffff

Drivers

Alguns dels controladors de targetes de vídeo de marques com ATI o Nvidia utilitzen drivers propietaris. Ubuntu té una eina gràfica per gestionar aquest tipus de controladors a:

Sistema > Administració > Gestor de controladors privatius

Cada driver té el seu propi paquet com podeu observar a:

$ dpkg -l | grep xserver
ii  x11-xserver-utils                     7.5+1ubuntu2                                    X server utilities
ii  xserver-common                        2:1.7.6-2ubuntu2                                common files used by various X servers
ii  xserver-xorg                          1:7.5+5ubuntu1                                  the X.Org X server
ii  xserver-xorg-core                     2:1.7.6-2ubuntu2                                Xorg X server - core server
ii  xserver-xorg-input-all                1:7.5+5ubuntu1                                  the X.Org X server -- input driver metapacka
ii  xserver-xorg-input-evdev              1:2.3.2-5ubuntu1                                X.Org X server -- evdev input driver
ii  xserver-xorg-input-mouse              1:1.5.0-1                                       X.Org X server -- mouse input driver
ii  xserver-xorg-input-synaptics          1.2.2-1ubuntu2                                  Synaptics TouchPad driver for X.Org server
ii  xserver-xorg-input-vmmouse            1:12.6.5-4ubuntu1                               X.Org X server -- VMMouse input driver to us
ii  xserver-xorg-input-wacom              1:0.10.5-0ubuntu2                               X.Org X server -- Wacom input driver
ii  xserver-xorg-video-all                1:7.5+5ubuntu1                                  the X.Org X server -- output driver metapack
ii  xserver-xorg-video-apm                1:1.2.2-1                                       X.Org X server -- APM display driver
ii  xserver-xorg-video-ark                1:0.7.2-1                                       X.Org X server -- ark display driver
ii  xserver-xorg-video-ati                1:6.12.192-2ubuntu2                             X.Org X server -- AMD/ATI display driver wra
ii  xserver-xorg-video-chips              1:1.2.2-1                                       X.Org X server -- Chips display driver
ii  xserver-xorg-video-cirrus             1:1.3.2-1ubuntu1                                X.Org X server -- Cirrus display driver
ii  xserver-xorg-video-fbdev              1:0.4.1-1ubuntu1                                X.Org X server -- fbdev display driver
ii  xserver-xorg-video-geode              2.11.7-1                                        X.Org X server -- Geode GX2/LX display drive
ii  xserver-xorg-video-i128               1:1.3.3-1                                       X.Org X server -- i128 display driver
ii  xserver-xorg-video-i740               1:1.3.2-1                                       X.Org X server -- i740 display driver
ii  xserver-xorg-video-intel              2:2.9.1-3ubuntu1                                X.Org X server -- Intel i8xx, i9xx display d
ii  xserver-xorg-video-mach64             6.8.2-2                                         X.Org X server -- ATI Mach64 display driver
ii  xserver-xorg-video-mga                1:1.4.11.dfsg-2ubuntu1                          X.Org X server -- MGA display driver
ii  xserver-xorg-video-neomagic           1:1.2.4-2                                       X.Org X server -- Neomagic display driver
ii  xserver-xorg-video-nouveau            1:0.0.15+git20100219+9b4118d-0ubuntu5           X.Org X server -- Nouveau display driver (ex
ii  xserver-xorg-video-nv                 1:2.1.15-1ubuntu3                               X.Org X server -- NV display driver
ii  xserver-xorg-video-openchrome         1:0.2.904+svn827-1                              X.Org X server -- VIA display driver
ii  xserver-xorg-video-r128               6.8.1-2                                         X.Org X server -- ATI r128 display driver
ii  xserver-xorg-video-radeon             1:6.12.192-2ubuntu2                             X.Org X server -- AMD/ATI Radeon display dri
ii  xserver-xorg-video-rendition          1:4.2.3-1                                       X.Org X server -- Rendition display driver
ii  xserver-xorg-video-s3                 1:0.6.3-1                                       X.Org X server -- legacy S3 display driver
ii  xserver-xorg-video-s3virge            1:1.10.4-1                                      X.Org X server -- S3 ViRGE display driver
ii  xserver-xorg-video-savage             1:2.3.1-1ubuntu1                                X.Org X server -- Savage display driver
ii  xserver-xorg-video-siliconmotion      1:1.7.3-1                                       X.Org X server -- SiliconMotion display driv
ii  xserver-xorg-video-sis                1:0.10.2-2                                      X.Org X server -- SiS display driver
ii  xserver-xorg-video-sisusb             1:0.9.3-1                                       X.Org X server -- SiS USB display driver
ii  xserver-xorg-video-tdfx               1:1.4.3-1                                       X.Org X server -- tdfx display driver
ii  xserver-xorg-video-trident            1:1.3.3-1                                       X.Org X server -- Trident display driver
ii  xserver-xorg-video-tseng              1:1.2.3-1                                       X.Org X server -- Tseng display driver
ii  xserver-xorg-video-v4l                1:0.2.0-4                                       X.Org X server -- Video 4 Linux display driv
ii  xserver-xorg-video-vesa               1:2.3.0-1ubuntu1                                X.Org X server -- VESA display driver
ii  xserver-xorg-video-vmware             1:10.16.9-1                                     X.Org X server -- VMware display driver
ii  xserver-xorg-video-voodoo             1:1.2.3-1                                       X.Org X server -- Voodoo display driver


Pantalles /Displays

Interfícies gràfiques

WIMPs i GUIs

  • Window, Icon, Menu, Pointing device WIMP: Desenvolupat per Xerox PARC al 1973. Antic terme per tal de referir-se a les GUI.
  • Grafical User Interface GUI: Sistema tecnològic que possibilita una interacció amigable entre els usuaris i els sistemes informàtics.

Utilitzen mapes de bits i altres artilugis (WIMP) per tal de representar i recollir la informació que s'intercanvia amb l'usuari final. Són una alternativa als sistemes informàtics basats en text (caràcters).

Breu història

Xerox Alto va ser el primer ordinador en disposar d'un entorn gràfic

Prehistoria

Els concepte de treball amb finestres i punters ja s'inicia als anys 60 amb projectes com w:SAGE o Intelligence amplification i programes com w:Sketchpad.

Inicis dels entorns gràfics:

Xerox PARC (Palo Alto Research Center, Inc.) crea els primers ordinadors personals no comercials als anys 70. PARC és una companyia de recerca i desenvolupament fundada el 1970 situada a Palo Alto, California. Es coneguda pel haver inventat:

El Xerox Alto va ser desenvolupat per Xerox PARC al 1973 i va ser el primer ordinador personal amb GUI i escriptori.

Però el primer ordinador que va ser venut comercialment va ser el Xerox Star al 1981 (costava $16.000) i una GUI basada en finestres. Va ser el primer sistema comercial que utilitzava carpetes, ratolí, Ethernet, servidor de fitxers i impressores i correu electrònic:

XeroxStar.png

NOTA: Steve Jobs va treballar prèviament a Xerox abans d'Apple

Apple i MAC

Al 1984 Mac treu els primers PCs comercials que popularitzen les GUIs. Els sistemes gràfics a Linux sempre s'han basat en els sistemes X que van aparèixer al 1984. La primera versió de Windows és la 1.0 (1985).

  • Macintosh (MAC): És el nom d'una sèrie d'ordinadors fabricats i comercialitzats per la companyia Apple Computer des de 1984. El sistema operatiu és MAC OS.

Els primers ordinadors d'Apple van ser:

  • Series Apple I, II i III
  • Apple Lisa:
  • Dissenyat per Apple Computer als inicis dels 80 (tot i que el projecte es va iniciar al 1978).
  • Va sortir al mercat el 1983 per $9.995.
  • LISA (Local Integrated Software Architecture). La primera filla d'Steve Jobs, va nèixer el 1978 i es va dir Lisa Jobs. També es parla d'altres acrònims com "Let's Invent Some Acronym"
  • Va ser un gran èxit tecnològic però un fracàs comercial.
  • Precursor dels MAC.
  • Macintosh: Apple treu els MAC al 1984. Van ajudar a popularitzar els sistemes WIMP.

NeXT

  • Empresa creada per Steve Jobs al 1985 després de ser expulsat d'Apple
  • Computadors: NeXTCube i NeXTStation
  • Sistema Operatiu: NEXTSTEP
  • El primer servidor web (Tim Berners Lee) s'executava en una màquina NextCube amb sistema operatiu NextStep.
  • NeXT va ser comprada per Apple al 1997 moment en que Steve Jobs torna a Apple.
Amiga
Atari

Amiga i Atari:

  • Amiga
  • Va ser llançat al 1985.
  • Van ser els últims Pcs de Commodore.
  • Sistema operatiu (AmigaOS, Amiga workbench)
  • Atari
  • També va ser llançat al 1985.
  • En el seu moment eren els ordinadors amb millors capacitats gràfiques i els preferits dels jugadors.

Windows:

  • Windows treu la versió 1.0 al 1985
  • Era un programa per al DOS, el sistema operatiu que van utilitzar els IBM Pcs fins al 1981. No van tenir gaire èxit fins que no va sortir la versió 3.1.

X Window Systems

El X Window System aka les X o X11 és el sistema estàndard de finestres en el món Unix, i per extensió GNU/Linux.

NOTA: Noteu la importància de la s final. És X Window System i no pas X Windows System

Les primeres versions daten de mitjans dels 80. El sistema W Window System (1983) (sistema operatiu Unix System V) és considera el precursor de les X. X va ser desenvolupat al MIT el 1984.

Des de els seus inicis es va crear pensant en una arquitectura client-servidor pensada per treballar en xarxa de forma remota amb entorns gràfics. Realment X Window System és un protocol de xarxa i de pantalla que proveeix d'un sistema de finestres (entorn gràfic) a dispositius de mapes de bits.

Proveeix un sèrie d'eines estàndard per crear aplicacions amb interfície gràfica d'usuari (GUI) en sistemes Unix-like. També és suportat per la majoria de sistemes operatius de forma directa (MacOS, OpenVMS) o mitjançant aplicacions extres (Windows).

Actualment (des de 2004) la implementació de referència és la de la Xorg.Foundation. Abans s'utilitzava XFree86:

  • X.Org Foundation: S'encarrega de mantenir la implementació de referència (des de 2004) del sistema de finestres X. La versió actual (--acacha 09:33, 3 maig 2010 (UTC)) és la X11R7.5. És Open Source i segueix els requerimetns de freedesktop.org.
  • Xfree86: La nova llicència de XFree (febrer 2004) va provocar la creació de Xorg. possibles incompatibilitats amb GPL. Allotjat per la ISC (Internet Systems Consortium)

Arquitectura client-servidor

  • Servidor: terminal de l'usuari (on s'executa l'entorn gràfic).
  • Clients: aplicacions (remotes).
ClientServidorX.png

IMPORTANT: El sistema client-servidor està vist des de la perspectiva de les aplicacions (en comptes de l'usuari). Les aplicacions són clients del servidor X.

La variable d'entorn DISPLAY és l'encarregada de definir a on s'enviaran les dades gràfiques (és a dir quin és el servidor). En la majoria de casos client i servidors es troben a la mateixa màquina.

La majoria d'aplicacions X tenen un paràmetre anomenat -display que permet executar l'aplicació en una pantalla remota.

El servidor X s'encarrega:

  • De la interfície amb l'usuari a través de perifèrics d'entrada i sortida:
  • Entrada: Ratolí i Teclat
  • Sortida: Pantalla (Targeta gràfica)

Històricament la configuració de les X s'ha realitzar al fitxer /etc/X11/xorg.conf.

Ports

No apareixen al fitxer /etc/services però el servidor X sol escoltar peticions al port 6000:

$ nmap 192.168.111.29
Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-03 14:18 CEST
Interesting ports on portatil (192.168.111.29):
Not shown: 979 closed ports
PORT      STATE SERVICE
...
6000/tcp  open  X11
...

Si s'inicien més servidors:

$ nmap 192.168.111.29
...
6000/tcp  open  X11
6001/tcp  open  X11:1

Entorns d'escriptori

Els components d'un entorn d'escriptori són:

ComponentsEntornEscirptori.png

Gnome

Consulteu Gnome.

KDE

Consulteu KDE.

Gestors de finestres

El servidor X només proporciona capacitats per utilitzar la pantalla com a un dispositiu de mapa de bits. Els gestors de finestres proporcionen el suport per treballar amb finestres.

Gestors de pantalla (Display Managers)

Xserver

Normalment l'executable és:

/usr/bin/X

Instal·lació X11 i entorns d'escriptori

tasksel

Amb tasksel podeu instal·lar entorns d'escriptori complets (Gnome, KUbuntu, Edubuntu, Xubuntu, etc.)

$ sudo tasksel --list
...
u edubuntu-desktop-kde	Edubuntu KDE desktop
u edubuntu-desktop-gnome	Edubuntu desktop
u kubuntu-desktop	Kubuntu desktop
u mobile-mid	Ubuntu MID edition
u mobile-netbook-remix	Ubuntu Netbook Remix
u ubuntu-desktop	Ubuntu desktop
u xubuntu-desktop	Xubuntu desktop

El paquet ubuntu-desktop ens instal·la un escriptori bàsic Gnome.

Consulteu tasksel.

Instal·lació des dels repositoris

Instal·lació d'entorns d'escriptori complets

Per instal·lar Gnome a una Ubuntu (l'escriptori d'Ubuntu per defecte):

$ sudo apt-get install ubuntu-desktop

A les versions Ubuntu 6.06 (Dapper Drake) i Ubuntu 8.04 (Hardy Heron):

$ sudo apt-get install gnome-desktop-environment

Instal·lació d'unes X bàsiques

Podem només instal·lar el servidor X:

$ sudo apt-get install xserver-xorg

Normalment però amb el servidor X no tindrem suficient i caldrà com a mínim instal·lar un gestor de finestres. Un dels més lleugers és OpenBox:

$ sudo apt-get install openbox

També es pot utilitzar fluxbox.

Instal·lació del client

Només instal·lant el client podem executar aplicacions gràfiques i enviar les dades gràfiques a un servidor remot

$ sudo apt-get install xauth

S'utilitza en servidors per tal de no haver d'executar un servidor X al servidor però si poder executar aplicacions gràfiques.

Per exemple podem instal·lar aplicacions bàsiques X amb:

$ sudo apt-get install x11-apps

Les aplicacions bàsiques són:

$ dpkg -L x11-apps| grep bin
/usr/bin
/usr/bin/atobm
/usr/bin/bitmap
/usr/bin/bmtoa
/usr/bin/oclock
/usr/bin/x11perf
/usr/bin/x11perfcomp
/usr/bin/xbiff
/usr/bin/xcalc
/usr/bin/xclipboard
/usr/bin/xclock
/usr/bin/xconsole
/usr/bin/xcursorgen
/usr/bin/xcutsel
/usr/bin/xditview
/usr/bin/xeyes
/usr/bin/xgc
/usr/bin/xload
/usr/bin/xlogo
/usr/bin/xmag
/usr/bin/xman
/usr/bin/xmore
/usr/bin/xwd
/usr/bin/xwud 


NOTA: Ubuntu Server ja incorpora el client instal·lat xauth

Iniciar una sessió X

xinit

Es tracta del programa encarregar d'iniciar el servidor X. un cop instal·la el servidor X (paquet xserver-xorg) el podeu executar directament amb /usr/bin/X o el que es fa és utilitzar xinit:

$ sudo apt-get install xinit

xinit proporciona l'script startx:

$ sudo startx &

NOTA: Podeu no executar-l oen segon terme però aleshores haureu d'iniciar un altre terminal al servidor

Comproveu que està en execució:

$ ps aux | grep X
root      4824  0.0  0.2   2908   824 pts/0    S<   21:33   0:00 xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc :0 -auth /tmp/serverauth.baBPEgNpqL
root      4825  1.4  2.1  15856  8292 tty7     S<s+ 21:33   0:00 /usr/bin/X11/X -nolisten tcp
root      4850  0.0  0.1   1872   556 pts/0    S<   21:33   0:00 sh /etc/X11/xinit/xinitrc

Veureu que es mostra una terminal xterm

Ara establiu el display:

$ export DISPLAY=:0.0
$ sudo apt-get install x11-apps
$ xeyes

o

$ xclock

O podeu executar qualsevol altre aplicació X. Observeu com les X que teniu són molt primaries i no hi ha cap gestors de finestres (les aplicacions s'executen directament a la pantalla).

Exemples (TODO):

xinit -- /usr/local/bin/Xqdss  :1
              This is how one could start a specific type of server on an alternate display.

xinit -geometry =80x65+10+10 -fn 8x13 -j -fg white -bg navy

Aquest exemple mostra un servidor X amb una xterms amb les opcions indicades.

xinit -e widgets -- ./Xsun -l -c
              This will use the command .Xsun -l -c to start the server and will append the arguments -e widgets to the default xterm command.

xinit /usr/ucb/rsh fasthost cpupig -display ws:1 --  :1 -a 2 -t 5
              This  will  start a server named X on display 1 with the arguments -a 2 -t 5.  It will then start a remote shell on the machine fasthost in which it will run
              the command cpupig, telling it to display back on the local workstation.

Consulteu també el manual:

$ man xinit

Vegeu també startx.

Que s'executa al iniciar una sessió X

# cat /etc/X11/xinit/xinitrc 
#!/bin/bash
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 

# /etc/X11/xinit/xinitrc
#
# global xinitrc file, used by all X sessions started by xinit (startx)

# invoke global X session script
. /etc/X11/Xsession

És a dir s'executa:

/etc/X11/Xsession

Que es tracta d'un script que gestiona l'inici de sessió X. L'script funciona segons el que s'indica als fitxers:

Fitxers de la carpeta /etc/X11/Xsession.d/

# cat /etc/X11/Xsession.d/
20x11-common_process-args       40x11-common_xsessionrc         60x11-common_localhost          90consolekit                    99x11-common_start
30x11-common_xresources         50x11-common_determine-startup  75dbus_dbus-launch              90x11-common_ssh-agent  

Per exemple a una Ubuntu 9.04 trobem:

$ cat /etc/X11/Xsession.d/
20x11-common_process-args                    55gnome-session_gnomerc                      80im-switch
30x11-common_xresources                      60x11-common_localhost                       90consolekit
40x11-common_xsessionrc                      60xdg-user-dirs-update                       90gpg-agent
50x11-common_determine-startup               70pulseaudio                                 90x11-common_ssh-agent
52libcanberra-gtk-module_add-to-gtk-modules  75dbus_dbus-launch                           99x11-common_start


/etc/X11/Xsession.options

$ sudo cat /etc/X11/Xsession.options 
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus

startx

startx és un script que fa de front end de l'eina xinit que proporciona un interfície a l'usuari més simple per tal d'iniciar una sessió al sistema X Window. Sovint s'executa sense arguments, per exemple en un servidor on no està activat el servidor X:

$ startx

startx forma part del paquet xinit:

$ dpkg -L xinit | grep bin
/usr/bin
/usr/bin/startx
/usr/bin/xinit

Que executarà startx depèn dels fitxers:

Si cap dels anteriors fitxers existeix els valors per defecte són:

client: xterm  -geometry  +1+1  -n  login  -display  :0
servidor: X :0


No tots els usuaris poden executar el servidor X:

$ startx 

X: user not authorized to run the X server, aborting.

A més no podem executar un servidor dos cops al mateix display:

$ sudo startx
 
Fatal server error:
Server is already active for display 0
	If this server is no longer running, remove /tmp/.X0-lock 
	and start again.


Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 

ddxSigGiveUp: Closing log

Cal executar:

$ sudo startx -- :1

NOTA: L'ordre anterior semblarà que us ha tancat de cop la sessió X que teniu oberta. La podeu recuperar amb Ctrl+Alt+F7. La nova sessió es trobarà a Ctrl+Alt+F9, almenys a Ubuntu.

Podeu veure el procés del nou servidor X en execució:

$ ps aux | grep X
root      1553  6.9  2.7 161852 97168 tty7     Ss+  11:49  40:12 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-4VTdME/database -nolisten tcp vt7
root      8912  0.0  0.0   3056   800 pts/4    S+   21:14   0:00 xinit /etc/X11/xinit/xinitrc -- /usr/bin/X :1 -auth /tmp/serverauth.W3NtGhQQAs
root      8913  0.5  0.5  36520 20604 tty9     S<s+ 21:14   0:04 /usr/bin/X :1 -auth /tmp/serverauth.W3NtGhQQAs

Consulteu també el manual:

$ man startx

Configuració

Fitxers de configuració

El nom del fitxer de configuració de les X depén de la implementació de servidor X escollida i de la versió de la implementació:

  • X.org-X11: El fitxer s'anomena xorg.conf i normalment es troba a la carpeta /etc/X11, tot i que a vegades es troba directament a la carpeta /etc. Actualment (--acacha 05:53, 10 maig 2010 (UTC)) és tracta de la opció més habitual i per tant en aquest article quan parlem del fitxer de configuració de les X farem referència al fitxer /etc/X11/xorg.conf
  • XFree86 4.x: The XFree86 4.x configuration file format is slightly different from that of XFree86 3.3.6 and earlier. To support the transition period, XFree86 4.x supports a configuration file called XF86Config-4, which is typically located in /etc/X11. If this file isn’t found, XFree86 4.x looks for a file called XF86Config in /etc/X11 or /etc. This file’s format is exactly the same as for the X.org-X11 configuration file.
  • XFree86 3.3.6 i versions anteriors: El nom del fitxer és XF86Config i el fitxer es troba normalment a /etc/X11 o /etc.

/etc/X11/xorg.conf

Consulteu /etc/X11/xorg.conf.

/etc/X11/Xsession.d

$ cd /etc/X11/Xsession.d
alumne@iesebre-desktop:/etc/X11/Xsession.d$ ls
10fglrx                    40x11-common_xsessionrc                      55gnome-session_gnomerc  70pulseaudio        90consolekit
20x11-common_process-args  50x11-common_determine-startup               60x11-common_localhost   75dbus_dbus-launch  90x11-common_ssh-agent
30x11-common_xresources    52libcanberra-gtk-module_add-to-gtk-modules  60xdg-user-dirs-update   80im-switch         99x11-common_start
$

Reconfigurar les X

dpkg-reconfigure xserver-xorg. Abans Ubuntu 9.04 i versions anteriors de Debian

   $ sudo dpkg-reconfigure -phigh xserver-xorg

TODO

Desde Ubuntu 9.04

Per generar un fitxer:

/etc/X11/xorg.conf

Cal aturar el servidor X:

$ sudo /etc/init.d/gdm stop

I executar:

$ sudo X -configure

Recursos:

Controladors gràfics

Eines de configuració

El propi servidor X:

XFree86:

 $ sudo XFree86 -configure 

Xorg-X11:

$ Xorg -configure

S'ha d'executar quan no està en marxa el servidor gràfic.

/root/XF86Config.new (for XFree86) 
/root/xorg.conf.new (for X.org-X11). 

Eines específiques de distribució:

  • Red Hat (Fedora) Display Settings tool:
$ system-config-display 
  • SUSE’s YaST i YaST2
Debian:
$ sup dpkg-reconfigure xserver-xorg

Variable d'entorn DISPLAY

La variable DISPLAY indica quina pantalla han d'utilitzar les aplicacions gràfiques. Típicament la variable val:

$ echo $DISPLAY
:0.0

La sintaxi és:

[hostname]:displaynumber[.screennumber]

Si no s'indica el hostname aleshores s'enten que és la màquina local. Si no s'indica el número de pantalla s'enten que s'utilitza la per defecte (0). És a dir en el nostre cas vol dir que el servidor està a localhost, que és el primer servidor X en execució i que utilitzem la primera pantalla.

La variable s'estableix automàticament quan iniciem una sessió gràfica.

Si executeu:

$ export DISPLAY=:0
$ echo $DISPLAY
:0
$ xeyes

Veureu com es mostren els ulls correctament. Per tant:

:0.0 = :0

Si iniciem un altre servidor X, per exemple iniciant un altre compte d'usuari (sense sortir de l'usuari actual), aleshores la variable d'entorn DISPLAY per aquest usuari seria:

$ echo $DISPLAY
:1.0

Cada usuari utilitza el seu servidor X tal i com podeu comprovar si executeu:

$ ps aux | grep X
root      1245  2.4  4.0 242808 145220 tty7    Rs+  May02  44:30 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-ZtJz4S/database -nolisten tcp vt7
root     20991  0.0  0.8  58592 29588 tty9     Ss+  May02   0:09 /usr/bin/X :1 -br -verbose -auth /var/run/gdm/auth-for-gdm-Fo4L3r/database -nolisten tcp

Com podeu veure (opció -nolisten tcp) a Ubuntu per defecte el servidor X no escolta peticions que provinguin de la xarxa (només accepta connexions per sockets Unix localhost i no obre cap socket TCP/IP)

Si un usuari vol enviar dades gràfiques al servidor X d'un altre usuari cal que li doni permisos d'accés. Consulteu xhost.

Control d'accés a X Window

Recursos:

xhost

IMPORTANT: Tingueu en compte que els servidors X de la majoria de distribucions modernes no escolten peticions remotes a través de la xarxa, caldria desactivar aquest comportament per defecte per tal de poder fer pràctiques d'enviar dades gràfiques a màquines remotes. Consulteu el fitxer: /etc/X11/xinit/xserverrc i /etc/gdm/gdm.schema

$ sudo xhost +
access control disabled, clients can connect from any host

La comanda xhost permet controlar quins clients poden utilitzar el nostre servidor X.

  • "xhost +": elimina totes les restriccions, qualsevol client pot connectar-se.
  • "xhost -": activa les restriccions, només els clients autoritzats poden connectar-se.
  • "xhost +IP": permet que la IP indicada es connecti al servidor X. "xhost -IP": elimina el permís de la IP indicada.

Creeu un nou usuari:

$ sudo adduser pep

I inicieu una nou interpret d'ordres amb aquest usuari:

Ara intenteu executar una aplicació gràfica com xterm o xeyes

$ xterm
No protocol specified
xterm Xt error: Can't open display: :0.0

Sortiu amb exit de l'usuari pep. Ara executeu:

$ xhost
access control enabled, only authorized clients can connect
SI:localuser:sergi
SI:localuser:gdm
SI:localuser:root

Xhost mostra quins usuaris tenen permisos per utilitzar el servidor X que s'està executant actualment. Afegiu a l'usuari pep:

Es pot donar accés a tothom des de la màquina local amb:

$ xhost localhost

NOTA: Podeu permetre l'accés a tothom (tots els usuaris i totes les màquines) amb: $ xhost +. No es gens recomanable ja que s'està donant accés complet a tothom i per exemple es poden capturar les tecles que premeu (keystrokes) invalidant per exemple la seguretat per paraula de pas. Ho podeu fer temporalment i desactivar-ho amb $ xhost -

Des de una màquina remota cal Permetre les connexions TCP al servidor X i després indicar el host al que voleu donar permisos:

$ xhost +nom_host

Potser abans haureu d'afegir el host al DNS o al fitxer /etc/hosts.

xauth

Xauth permet l'accés al servidor X de qualsevol usuari que conegui el secret adequat, és a dir un registre d'autenticació o "magic cookie". Aquest esquema d'autenticació (authorization scheme) és conegut formalment com MIT-MAGIC-COOKIE-1.

Les cookies per a diferents displays s'emmagatzemen al fitxer ~/.Xauthority de cada usuar o es gestionada pel Display manager (p. ex. GDM)i, fitxer que ha de ser inaccessible per als altres usuaris del sistema. El programa xauth és l'encarregat de gestionar aquestes cookies.

Es pot especificar un fitxer de cookies diferents amb la variable d'entorn XAUTHORITY, cosa que es fa molt rarament:

$ env | grep XAUTHORITY
XAUTHORITY=/var/run/gdm/auth-for-sergi-Xyk1Er/database
$ file /var/run/gdm/auth-for-sergi-Xyk1Er/database
/var/run/gdm/auth-for-sergi-Xyk1Er/database: X11 Xauthority data

L'ordre:

$ xauth -v
Using authority file /var/run/gdm/auth-for-sergi-Xyk1Er/database
xauth> quit

o

$ xauth list
BSFHPCasa/unix:0  MIT-MAGIC-COOKIE-1  81a42734945fe1a86de5ac0edecec4f90

Fixeu-vos que el fitxers és de només lectura/escriptura per al vostre usuari:

$ ls -al /var/run/gdm/auth-for-sergi-Xyk1Er/database
-rw------- 1 sergi sergi 54 2010-05-09 11:49 /var/run/gdm/auth-for-sergi-Xyk1Er/database

Mostra quines cookies estem utilitzant.

Al iniciar una sessió X el servidor llegeix una cookie des del fitxer que s'indica amb l'argument -auth:

$ ps aux | grep X
root      1553  6.9  1.0  54484 36996 tty7     Rs+  11:49  36:22 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-4VTdME/database -nolisten tcp vt7

A partir el servidor només permet les connexions dels usuaris que coneixen la mateixa cookie.

Xauth té un clar avantatge de seguretat respecte a xhost, es pot limitar l'accés a un servidor X a usuaris específics en màquines especifiques (amb xhost només podem controlar l'accés per màquines o usuaris NIS) i no és susceptible a atacs d'spoofing (adreces de màquines falsejades).

Xauth permet un mode interactiu:

$ xauth
Using authority file /var/run/gdm/auth-for-sergi-Xyk1Er/database
xauth> 

Utilitzeu help per obtenir ajuda o consulteu el manual:

$ man xhost

Ara vegem un exemple de com utilitzar xhost per tal que un altre client pugui utilitzar el nostre servidor. Primer consulteu la cookie del servidor:

# xauth list
BSFHPCasa/unix:0  MIT-MAGIC-COOKIE-1  81a42734945fe1a86de5ac0edecec4f90

Ara entreu com un altre usuari:

$ su - bego
Contrasenya: 
bego@BSFHPCasa:~$ xauth list
xauth:  creating new authority file /home/bego/.Xauthority

NOTA: Noteu com hem utilitzat l'opció - de su. Si no utilitzem aquesta opció entrarem com l'usuari bego però amb mantindrem les variables d'entorn de l'usuari inicial entre les quals es troba XAUTHORITY i us donaria l'error:

xauth:  /var/run/gdm/auth-for-sergi-Xyk1Er/database not writable, changes will be ignored

Ara afegiu la cookie per aquest usuari:

$ xauth add BSFHPCasa/unix:0  MIT-MAGIC-COOKIE-1  81a42734945fe1a86de5ac0edecec4f90
xauth:  creating new authority file /home/bego/.Xauthority
bego@BSFHPCasa:~$ export DISPLAY=:0.0
bego@BSFHPCasa:~$ xeyes

NOTA: Si el client és remot cal activar el servidor X per tal que escolti peticions TCP

Vegeu també SSH Forwarding i xhost.

Recursos:

SSH Forwarding

Consulteu SSH Forwarding.

Configuració del servidor de fonts

S'utilitza FontPath a la secció Files del fitxer /etc/X11/xorg.conf per tal d'indicar quin és l'origen de les fonts a utilitzar. La sintaxi és:

   <trans>/<hostname>:<port-number> 

On <trans> és e tipus de sistema de transport per accedir al servidor de fonts X:

  • unix: s'utilitzen UNIX-domain sockets
  • tcp: s'utilitza una connexió TCP/IP, normalment al port 7100

I <hostname> és el nom de la màquina que executa el servidor de fonts i <port-number> és el número de port TCP al qual el servidor de fonts està esperant peticions.

Per exemple, es podria indicar un servidor de fonts X xfs remot amb:

FontPath "unix/:7100"

Recordeu que normalment el servidor de fonts X escolta peticions al port 7100. Quan utilitzem uni, podem no indicar el hostname ja que s'entén que ens referim a localhost.

Es poden indicar múltiples camins separats per comes o es opt repetir la línia FontPath tants cops com sigui necessari.

També es poden indicar camins absoluts cap a directoris del sistema.

Quan no s'especifica FontPath s'utilitzen els camins per defecte.

Servidor de fonts

El servidor de fonts més utilitzat és X font server (xfs) i proporciona un mecanisme estàndard que permet que un servidor X es comuniqui amb un generador de fonts (font renderer) que pot estar en una màquina remota.

Normalment els servidors de fonts accepten peticions de xarxa TCP/IP al port 7100.

És important però tenir en compte que l'ús de fonts al costat del servidor és considera actualment obsolet i es recomana l'ús de fonts al costat del client. Aquest tipus de fonts es generen al client i no pas al servidor amb el suport de llibreries com Xft2 o Cairo i l'extensió XRender.

A més, per als pocs casos en els que es necessita tenir fonts del costat del servidor, els servidors X ja porten integrat el seu propi generador de fonts de forma que no es necessita cap extern. Les fonts es poden configurar directament als fitxer de configuració de les X (/etc/X11/xorg.conf).

Si consulteu la descripció del paquet xfs:

$ sudo apt-cache show xfs
Package: xfs
Priority: optional
...
Description: X font server
 xfs is a daemon that listens on a network port and serves X fonts to X
 servers (and thus to X clients).  All X servers have the ability to serve
 locally installed fonts for themselves, but xfs makes it possible to offload
 that job from the X server, and/or have a central repository of fonts on a
 networked machine running xfs so that all the machines running X servers on a
 network do not require their own set of fonts.  xfs may also be invoked by
 users to, for instance, make available X fonts in user accounts that are not
 available to the X server or to an already running system xfs.

El servidor de fonts xfs és un dimoni que permet oferir fonts X a servidors o clients remots mitjançant una connexió TCP. La majoria de servidors X poden proporcionar-se a si mateixos les fonts X i per aquesta raó en moltes distribucions no trobareu aquest paquet instal·lat per defecte.

L'avantatge d'un servidor de fonts X és que permet descarregar de la feina de proporcionar les fonts a un servidor X i també permet centralitzar la gestió de les fonts a totes les màquines d'una xarxa.

Per instal·lar un servidor de fonts:

$ sudo apt-get install xfs

Podeu comprovar que està en execució amb:

$ ps aux | grep xfs
123      15232  0.0  0.0   3992  1908 ?        Ss   07:39   0:00 /usr/bin/xfs -daemon -user debian-xfs -droppriv

Per defecte el servidor no accepta peticions remotes, veureu que el port està tancat:

$ nmap -p 7100 localhost

Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-10 07:41 CEST
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Interesting ports on localhost (127.0.0.1):
PORT     STATE  SERVICE
7100/tcp closed font-service

Cal modificar el fitxer de configuració:

$ sudo joe /etc/X11/fs/config
...

I comentar (#) la línia:

no-listen = tcp

Un cop comentada la línia cal tornar a iniciar el servidor X:

$ sudo /etc/init.d/xfs restart
Stopping X font server: xfs.
Setting up X font server socket directory /tmp/.font-unix...done.
Starting X font server: xfs.

I ara ja està el servidor preparat:

$ nmap -p 7100 localhost

Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-10 07:45 CEST
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Interesting ports on localhost (127.0.0.1):
PORT     STATE SERVICE
7100/tcp open  font-service

Consulteu:

LPI_106.1_Instal·lació_i_configuració_de_X11#Configuraci.C3.B3_del_servidor_de_fonts

Per veure com cal configurar un servidor X per tal d'utilitzar un servidor de fonts ja sigui remot o local.

Recursos:

Randr Extension

xrandr

La extensió X RandR s'utilitza per configurar els ports de pantalla (display) estan disponibles ( cal tenir en compte que un ordinador pot tenir diferents sortides, LCD, Monitors VGA, DVI, TVOUT etc...) i per configurar els modes de pantalla (display modes) com la orientació, la resol·lució, etc.

L'ordre xrandr sense més opcions:

$ xrandr
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 4096 x 4096
VGA1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 256mm
   1440x900       59.9*+
   1280x1024      75.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   832x624        74.6  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  

Us mostra les sortides disponibles (display modes) al vostra ordinador i les resol·lucions disponibles en cada dispositiu.

Segons el manual:

$ man xrandr

És una ordre que permet treballar amb l'extensió RandR. Per a obtenir més ajuda podeu executar:

$ xrandr --help$ xrandr --help
 usage: xrandr [options]
   where options are:
   -display <display> or -d <display>
   -help
   -o <normal,inverted,left,right,0,1,2,3>
             or --orientation <normal,inverted,left,right,0,1,2,3>
   -q        or --query
   -s <size>/<width>x<height> or --size <size>/<width>x<height>
   -r <rate> or --rate <rate> or --refresh <rate>
   -v        or --version
   -x        (reflect in x)
   -y        (reflect in y)
   --screen <screen>
   --verbose
   --dryrun
   --nograb
   --prop or --properties
   --fb <width>x<height>
   --fbmm <width>x<height>
   --dpi <dpi>/<output>
   --output <output>
       --auto
       --mode <mode>
       --preferred
       --pos <x>x<y>
       --rate <rate> or --refresh <rate>
       --reflect normal,x,y,xy
       --rotate normal,inverted,left,right
       --left-of <output>
       --right-of <output>
       --above <output>
       --below <output>
       --same-as <output>
       --set <property> <value>
       --scale <x>x<y>
       --transform <a>,<b>,<c>,<d>,<e>,<f>,<g>,<h>,<i>
       --off
       --crtc <crtc>
       --panning <w>x<h>[+<x>+<y>[/<track:w>x<h>+<x>+<y>[/<border:l>/<t>/<r>/<b>]]]
       --gamma <r>:<g>:<b>
       --primary
   --noprimary
   --newmode <name> <clock MHz>
             <hdisp> <hsync-start> <hsync-end> <htotal>
             <vdisp> <vsync-start> <vsync-end> <vtotal>
             [+HSync] [-HSync] [+VSync] [-VSync]
     --rmmode <name>
   --addmode <output> <name>
   --delmode <output> <name>

Depenent de la targeta gràfica consulteu:

Intel:

$ man intel

ATI:

$ man radeon

NOTA: Un dels "avantatges" de xrandr és que śe ideal per fer pràctiques proves ja que els canvis mai són permanents, es pot recuperar els sistema reiniciant el sistema o l'entorn X

Proves a màquines Virtuals amb Virtual Box

Si instal·leu les Guest Additions de Virtual Box a una màquina virtual podreu canviar les resol·lucions de pantalla molt fàcilment amb xrandr:

$ xrandr
Screen 0: minimum 64 x 64, current 1440 x 778, maximum 32000 x 32000
VBOX1 connected 1440x778+0+0 0mm x 0mm
   1440x778       60.0*+
   800x600        60.3  
   640x480        59.9  

Exemples de canvi de resol·lució:

$ xrandr --output LVDS --mode 800x600
$ xrandr --output VBOX1 --mode 1440x778

xrandr i accés remot

Si feu una accés remot amb un servidor remot amb SSH i X11Forwarding (l'exemple és una connexió a un màquina virtual amb VirtualBox):

$ ssh -X sergi@192.168.0.150

Un cop dins si executeu:

$ xrandr
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 4096 x 4096
VGA1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 256mm
   1440x900       59.9*+
   1280x1024      75.0  
   1152x864       75.0  
   1024x768       75.1     60.0   
   832x624        74.6  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  

Que són les dades de les resol·lucions disponibles a la màquina clietn SSH i no pas a la remota.

IMPORTANT: Aquest funcionament és correcte. Recordeu que l'arquitectura X11 és client-servidor.

Fixeu-vos que en realitat a la màquina virtual:

$ xrandr
Screen 0: minimum 64 x 64, current 1440 x 778, maximum 32000 x 32000
VBOX1 connected 1440x778+0+0 0mm x 0mm
   1440x778       60.0*+
   800x600        60.3  
   640x480        59.9

De fet si canvieu la resol·lució des del client SSH no canviareu la resol·lució del servidor SSH si no del client!

Consultar la versió

$ xrandr -v
Server reports RandR version 1.3

NOTA: Executat a una Ubuntu 9.10


Apagar una sortida de pantalla

Per exemple per apagar el monitor:

$ xrandr  --output VGA --off 

es pot tornar a activar i decidir on és vol col·locar:

$ xrandr --output VGA --auto --right-of LVDS

Verbose

Mostra més informació:

$ xrandr --verbose
Screen 0: minimum 64 x 64, current 1440 x 778, maximum 32000 x 32000
VBOX1 connected 1440x778+0+0 (0x10b) normal (normal) 0mm x 0mm 
	Identifier: 0x39
	Timestamp:  3523623
	Subpixel:   unknown
	Clones:    
	CRTC:       0
	CRTCs:      0
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
  1440x778 (0x10b)   68.0MHz *current +preferred
        h: width  1440 start 1442 end 1444 total 1446 skew    0 clock   47.0KHz
        v: height  778 start  780 end  782 total  784           clock   60.0Hz
  800x600 (0x3b)   40.0MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock   37.9KHz
        v: height  600 start  601 end  605 total  628           clock   60.3Hz
  640x480 (0x3c)   25.2MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock   31.5KHz
        v: height  480 start  490 end  492 total  525           clock   59.9Hz
  1024x768_60.00 (0x11b)   63.5MHz
        h: width  1024 start 1072 end 1176 total 1328 skew    0 clock   47.8KHz
        v: height  768 start  771 end  775 total  798           clock   59.9Hz

Pantalles panoràmiques

Formats de pantalla panoràmica (Widescreen):

WSXGA
WSXGA+
WUXGA
WXGA
WXGA

Suporten formats 16:10 i 10:9 (poden ser problemàtics)

Formats 16:10:

  • 2560x1600
  • 1920x1200
  • 1680x1050
  • 1440x900
  • 1280x800

Un exemple de secció:

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth 24
SubSection "Display"
    Viewport  0 0
    Depth     24
    Modes     "1680x1050"
EndSubSection
EndSection

Normalment Xorg utilitza la informació I2C/DDC per agafar la configuració d'aquest tipus de pantalles però en alguns casos pot no anar (per exemple un KVM o multiplicador VGA).

Al fitxer /var/log/Xorg.0.log es poden obtenir el modelines:

(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz 

Aquesta informació són les dades EDID. Per crear un ModeLine només cal posar els nombres en l'ordre correcte:

ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

Per exemple:

Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection

Llibreries gràfiques per a clients

Els clients utilitzen llibreries gràfiques per tal d'utilitzar el servidor X. La llibreria estàndar bàsica és Xlib però actualment és més habitual trobar aplicacions fetes amb les llibreries:

  • Xaw:
  • Motif:
  • GTK+: Utilitzat per la majoria d'aplicacions de Gnome
  • Qt: utilitzat per la majoria d'aplicacions de KDE

TODO:

Xlib and other client libraries

Most client programs communicate with the server via the Xlib client library. In particular, most clients use libraries such as Xaw, Motif, GTK+, or Qt which in turn use Xlib for interacting with the server. The use of Xlib has the following effects:

  1. Xlib makes the client synchronous with respect to replies and events:
        1. the Xlib functions that send requests block until the appropriate replies, if any is expected, are received; in other words, an X Window client not using Xlib can send a request to the server and then do other operations while waiting for the reply, but a client using Xlib can only call an Xlib function that sends the request and wait for the reply, thus blocking the client while waiting for the reply (unless the client starts a new thread before calling the function);
        2. while the server sends events asynchronously, Xlib stores events received by the client in a queue; the client program can only access them by explicitly calling functions of the X11 library; in other words, the client is forced to block or busy-wait if expecting an event.
  2. Xlib does not send requests to the server immediately, but stores them in a queue, called the output buffer; the requests in the output buffer are actually sent when:
        1. the program explicitly requests so by calling a library function such as XFlush;
        2. the program calls a function that gives as a result something that involve a reply from the server, such as XGetWindowAttributes;
        3. the program asks for an event in the event queue (for example, by calling XNextEvent) and the call blocks (for example, XNextEvent blocks if the queue is empty.)

Higher-level libraries such as Xt (which is in turn used by Xaw and Motif) allow the client program to specify the callback functions associated with some events; the library takes care of polling the event queue and calling the appropriate function when required; some events such as those indicating the need of redrawing a window are handled internally by Xt.

Lower-level libraries, such as XCB, provide asynchronous access to the protocol, allowing better latency hiding.

Ordres

gtf

Segons el manual:

$ man gtf

Calcula els modes de línia VESA ( VESA GTF mode lines ). Vegeu també cvt. Per exemple per calcular el modeline per a una resol·lució 800x600 i 60Hz:

$ gtf 800 600 60
 # 800x600 @ 60.00 Hz (GTF) hsync: 37.32 kHz; pclk: 38.22 MHz
 Modeline "800x600_60.00"  38.22  800 832 912 1024  600 601 604 622  -HSync +Vsync

Consulteu:

 Afegir_nous_modes_de_pantalla

cvt

Segons el manual:

$ man cvt

Calcula els modes de línia VESA ( VESA GTF mode lines ). Vegeu també gft.

Per exemple per calcular el modeline per a una resol·lució 800x600 i 60Hz:

$ cvt 800 600
# 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz
Modeline "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync

Si no s'indica la freqüència de refresc s'utilitzen 60Hz:

$ cvt 800 600 60
# 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz
Modeline "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync

Consulteu:

 Afegir_nous_modes_de_pantalla

X

Segons el manual:

$ man X
X(7)                                                                                                                                                                    X(7)

NAME
       X - a portable, network-transparent window system

Configuració:

$ sudo X -configure
[sudo] password for sergi:  

Fatal server error:
Server is already active for display 0 
	If this server is no longer running, remove /tmp/.X0-lock
	and start again.


Please consult the The X.Org Foundation support 
 	 at http://wiki.x.org
 for help.   

 ddxSigGiveUp: Closing log

Segurament ja teniu un servidor X en execució:

$ ps aux | grep X
root      1394  3.3  0.9  45308 33272 tty7     Rs+  07:40  14:20 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-DOGJsZ/database -nolisten tcp vt7
sergi     7783  0.0  0.0   3052   812 pts/3    R+   14:49   0:00 grep X

Xwininfo

Segons el manual:

$ man xwinfo

      xwininfo - window information utility for X

Es tracta d'una utilitat de les X que dona informació sobre les finestres.

$ xwininfo 

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

Ara feu clic sobre la finestra de la qual voleu informació i us apareixerà quelcom similar a:

xwininfo: Window id: 0x1a005e6 (has no name)

  Absolute upper-left X:  0
  Absolute upper-left Y:  25
  Relative upper-left X:  0
  Relative upper-left Y:  25
  Width: 1440
  Height: 850
  Depth: 0
  Visual Class: TrueColor
  Border width: 0
  Class: InputOnly
  Colormap: 0x0 (not installed)
  Bit Gravity State: ForgetGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: yes
  Corners:  +0+25  -0+25  -0-25  +0-25
  -geometry 1440x850+0+25

Amb:

$ xwininfo -all

Podeu consultar tota la informació relativa a una finestra.

xdpyinfo

Segons el manual:

$ man xdpyinfo

       xdpyinfo - display information utility for X
...

Mostra informació relativa al servidor X. Per exemple:

$ xdpyinfo | more
name of display:    :0.0
version number:    11.0
vendor string:    The X.Org Foundation
vendor release number:    10604000
X.Org version: 1.6.4
maximum request size:  16777212 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    7
supported pixmap formats:
    depth 1, bits_per_pixel 1, scanline_pad 32
    depth 4, bits_per_pixel 8, scanline_pad 32
    depth 8, bits_per_pixel 8, scanline_pad 32
    depth 15, bits_per_pixel 16, scanline_pad 32
    depth 16, bits_per_pixel 16, scanline_pad 32
    depth 24, bits_per_pixel 32, scanline_pad 32
    depth 32, bits_per_pixel 32, scanline_pad 32
keycode range:    minimum 8, maximum 255
focus:  window 0x5000005, revert to Parent
number of extensions:    27
   BIG-REQUESTS
   Composite
   DAMAGE
   DOUBLE-BUFFER
   DPMS
   DRI2
   GLX
   Generic Event Extension
   MIT-SCREEN-SAVER
   MIT-SHM
   RANDR
   RECORD
   RENDER
   SECURITY
...

Xorg

Xorg(1)                                                                                                                                                              Xorg(1)

NAME
      Xorg - X11R7 X server

SYNOPSIS
      Xorg [:display] [option ...]

DESCRIPTION
      Xorg  is  a full featured X server that was originally designed for UNIX and UNIX-like operating systems running on Intel x86 hardware.  It now runs on a wider range
      of hardware and OS platforms.

      This work was derived by the X.Org Foundation from the XFree86 Project's XFree86 4.4rc2 release.  The XFree86 release was originally derived from X386 1.2 by  Thomas
      Roell which was contributed to X11R5 by Snitily Graphics Consulting Service.
$ sudo Xorg -configure   

Fatal server error:
Server is already active for display 0 
	If this server is no longer running, remove /tmp/.X0-lock
 	and start again.
 

Please consult the The X.Org Foundation support  
	 at http://wiki.x.org
 for help. 

 ddxSigGiveUp: Closing log


xrdb

Segons el manual:

$ man xrdb
...
  xrdb - X server resource database utility

GDM l'executa de la següent forma al fitxer /etc/gdm/Init/Defaults:

sysresources=/etc/X11/Xresources

# merge in defaults
if [ -f "$sysresources" ]; then
    xrdb -merge "$sysresources"
fi

Es a dir executa la configuració es troba a:

$ cat /etc/X11/Xresources/x11-common 
! $Id$

! load color-specific resources for clients that have them
#ifdef COLOR
*customization: -color
#endif  

! make Xaw (Athena widget set) clients understand the delete key
! this causes problems with some non-Xaw apps, use with care
! *Text.translations: #override ~Shift ~Meta <Key>Delete: delete-next-character()

Fitxers de log

/var/log/Xorg.0.log

NOTA: Cal tenir en compte que el valor 0 pot variar, depenent de si tenim una o més targetes de xarxa.

El fitxer de log /var/log/Xorg.0.log mostra els valors EDID:

$ tail -f /var/log/Xorg.0.log
(II) intel(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz)
(II) intel(0): Modeline "1152x864"x75.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz)
(II) intel(0): Modeline "1024x768"x75.1   78.80  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.1 kHz)
(II) intel(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz)
(II) intel(0): Modeline "832x624"x74.6   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz)
(II) intel(0): Modeline "800x600"x75.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz)
(II) intel(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz)
(II) intel(0): Modeline "640x480"x75.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz)
(II) intel(0): Modeline "640x480"x60.0   25.20  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz)
(II) intel(0): Modeline "720x400"x70.1   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz)

/etc/X11/xinit/xserverrc

Indica com s'ha d'executar el servidor X

$ cat /etc/X11/xinit/xserverrc
#!/bin/sh

# $Id: xserverrc 189 2005-06-11 00:04:27Z branden $ 

exec /usr/bin/X11/X -nolisten tcp

Observeu que per defecte no s'accepten peticions de xarxa. Consulteu també xhost, DISPLAY i /etc/gdm/gdm.schemas.

Consulteu:

LPI_106.1_Instal·lació_i_configuració_de_X11#Permetre_les_connexions_TPC_al_servidor_X

/etc/gdm/gdm.schemas

Conté la configuració de GDM. És un fitxer XML.

Observeu que per defecte no s'accepten peticions de xarxa. Consulteu també xhost, DISPLAY i /etc/gdm/gdm.schemas.

Consulteu:

LPI_106.1_Instal·lació_i_configuració_de_X11#Permetre_les_connexions_TPC_al_servidor_X

Tasques comunes

Canviar la resol·lució de pantalla

De forma dinàmica amb xrandr

Per canviar la sortida LVDS a la resol·lució 1024x768:

$ sudo xrandr --output LVDS --mode 1024x768

Per indicar també el refresc:

$ sudo xrandr --output LVDS --mode 1024x768 --rate 75

Recursos:

Modificant el fitxer de configuració xorg.conf

TODO

Afegir nous modes de pantalla (resol·lucions)

Amb xrandr

Amb l'ordre xrandr podeu afegir un nou mode amb:

$ xrandr --addmode S-video 800x600

L'ordre anterior afegeix el mode 800x600 a una sortida S-video.

Si us dona l'error:

 xrandr: cannot find mode "800x600"

És que heu de crear el nou mode amb quelcom similar

 $ xrandr --newmode DADES_DEL_NOU_MODE

Per saber les dades que heu de posar podeu utilitzar l'ordre cvt o l'ordre gft:

$ cvt 800 600
# 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz
Modeline "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync

Hauríeu de posar doncs:

 $ xrandr --newmode "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync

Per aplicar el nou mode:

$ sudo xrandr --output VGA1 --mode "800x600_60.00"

En principi no hauria de caldré indicar modes a mà, ja que tots els dispositius de pantalla haurien d'informar dels modes de pantalla a través del bloc de dades EDID.

NOTA: Per exemple un cas en que les dades EDID no s'envien correctament dels dispositius de pantalla a l'ordinador són els Multiplier VGA

Un exemple més complet:

$ cvt 1920 1200 60
# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
Modeline "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync
$ cvt 1680 1050 60
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
$ xrandr --newmode "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync
$ xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
$ xrandr --addmode DVI-1 "1920x1200_60.00"
$ xrandr --addmode DVI-0 "1680x1050_60.00"

Fer els canvis xrandr permanents

Recursos:

Utilitzant el fitxer ~/.xprofile

NOTA: Aquesta configuració només farà els canvis permanents per a l'usuari que es configuri.

El fitxer de configuració ~/.xprofile es executat al iniciar Xorg i existeix i és executable. Es poden posar ordres xrandr en aquest fitxer per tal d'establir una resol·lució per defecte, com per exemple:

xrandr --output VGA-0 --mode 800x600

2 inconvenients:

  • Aquest fitxer és un dels últims a executar-se i per tant veureu com es canvia la resol·lució de pantalla diversos cops a l'inici de sessió (algunes vegades els panells no canvien de mida correctament!)
  • Només és un canvi per a l'usuari propietari del fitxer

Canviant GDM o KDM

Tant KDE (KDM) com Gnome (GDM) tenen guions (scripts) d'inici que s'executen quan s'inicien les X.

A GDM els trobareu a:

/etc/gdm/ 

I a KDM a:

/etc/kde4/kdm/Xsetup

Cal tenir en compte que a GDM es important posar les configuracions abans de la línia:

initctl -q emit login-session-start DISPLAY_MANAGER=gdm 

del fitxer:

/etc/gdm/Init/Default

NOTA: Els canvis s'apliquen a tots els usuaris

Canviar el fitxer xorg.conf

Els modes es defineixen amb:

 Section "Monitor"
    Identifier      "External DVI"
    Modeline        "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync +Vsync
    Option          "PreferredMode" "1280x1024_60.00"
EndSection
Section "Device"
    Identifier      "ATI Technologies, Inc. M22 [Radeon Mobility M300]"
    Driver          "ati"
    Option          "Monitor-DVI-0" "External DVI"
EndSection
Section "Screen"
    Identifier      "Primary Screen"
    Device          "ATI Technologies, Inc. M22 [Radeon Mobility M300]"
    DefaultDepth    24
    SubSection "Display"
        Depth           24
        Modes   "1280x1024" "1024x768" "640x480"
    EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Primary Screen"
EndSection

Aplicacions gràfiques

gnome-display-properties

Les configuracions es guarden a nivell d'usuari:

$ locate monitors.xml
/home/sergi/.config/monitors.xml
$ cat /home/sergi/.config/monitors.xml
<monitors version="1">
  <configuration>
      <clone>yes</clone>
      <output name="DFP2">
      </output>
      <output name="CRT1">
          <vendor>FUS</vendor>
          <product>0x0608</product>
          <serial>0x01010101</serial>
          <width>1152</width>
          <height>864</height>
          <rate>60</rate>
          <x>128</x>
          <y>160</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="CRT2">
          <vendor>???</vendor>
          <product>0x0000</product>
          <serial>0x00000000</serial>
          <width>1280</width>
          <height>1024</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="TV">
      </output>
      <output name="COMPONENT_VIDEO">
      </output>
  </configuration>
  <configuration>
      <clone>yes</clone>
      <output name="DFP2">
      </output>
      <output name="CRT1">
          <vendor>???</vendor>
          <product>0x0000</product>
          <serial>0x00000000</serial>
          <width>1440</width>
          <height>900</height>
          <rate>60</rate>
          <x>160</x>
          <y>300</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="CRT2">
          <vendor>???</vendor>
          <product>0x0000</product>
          <serial>0x00000000</serial>
          <width>1600</width>
          <height>1200</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="TV">
      </output>
      <output name="COMPONENT_VIDEO">
      </output>
  </configuration>
  <configuration>
      <clone>no</clone>
      <output name="DFP2">
      </output>
      <output name="CRT1">
          <vendor>???</vendor>
          <product>0x0000</product>
          <serial>0x00000000</serial>
          <width>1440</width>
          <height>900</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="CRT2">
      </output>
      <output name="TV">
      </output>
      <output name="COMPONENT_VIDEO">
      </output>
  </configuration>
</monitors>

Control +Alt + Retroces

Des de Ubuntu 9.10 s'ha d'indicar a

Sistema > Preferències > teclats > Disposicions > Opcions > Matar el servidor X

o:

$ setxkbmap -option terminate:ctrl_alt_bksp

Ubuntu

Paquets instal·lats

A una instal·lació fresca de d'Ubuntu Karmic:

$ dpkg -l | grep xserver
ii  x11-xserver-utils                     7.4+2ubuntu3                               X server utilities
ii  xserver-common                        2:1.6.4-2ubuntu4.1                         common files used by various X servers
ii  xserver-xorg                          1:7.4+3ubuntu10                            the X.Org X server
ii  xserver-xorg-core                     2:1.6.4-2ubuntu4.1                         Xorg X server - core server
ii  xserver-xorg-input-all                1:7.4+3ubuntu10                            the X.Org X server -- input driver metapacka
ii  xserver-xorg-input-evdev              1:2.2.5-1ubuntu6                           X.Org X server -- evdev input driver
ii  xserver-xorg-input-mouse              1:1.4.0-2                                  X.Org X server -- mouse input driver
ii  xserver-xorg-input-synaptics          1.1.2-1ubuntu7                             Synaptics TouchPad driver for X.Org server
ii  xserver-xorg-input-vmmouse            1:12.6.4-1ubuntu3                          X.Org X server -- VMMouse input driver to us
ii  xserver-xorg-input-wacom              1:0.8.4.1-0ubuntu4                         X.Org X server -- Wacom input driver
ii  xserver-xorg-video-all                1:7.4+3ubuntu10                            the X.Org X server -- output driver metapack
ii  xserver-xorg-video-apm                1:1.2.1-2                                  X.Org X server -- APM display driver
ii  xserver-xorg-video-ark                1:0.7.1-2                                  X.Org X server -- ark display driver
ii  xserver-xorg-video-ati                1:6.12.99+git20090929.7968e1fb-0ubuntu1    X.Org X server -- ATI display driver wrapper
ii  xserver-xorg-video-chips              1:1.2.1-3                                  X.Org X server -- Chips display driver
ii  xserver-xorg-video-cirrus             1:1.3.1-1ubuntu2                           X.Org X server -- Cirrus display driver
ii  xserver-xorg-video-fbdev              1:0.4.0-4                                  X.Org X server -- fbdev display driver
ii  xserver-xorg-video-geode              2.11.6-1                                   X.Org server -- Geode GX2/LX display driver
ii  xserver-xorg-video-i128               1:1.3.2-1                                  X.Org X server -- i128 display driver
ii  xserver-xorg-video-i740               1:1.3.0-1                                  X.Org X server -- i740 display driver
ii  xserver-xorg-video-intel              2:2.9.0-1ubuntu2.1                         X.Org X server -- Intel i8xx, i9xx display d
ii  xserver-xorg-video-mach64             6.8.2-1                                    X.Org X server -- ATI Mach64 display driver
ii  xserver-xorg-video-mga                1:1.4.11.dfsg-1                            X.Org X server -- MGA display driver
ii  xserver-xorg-video-neomagic           1:1.2.3-1                                  X.Org X server -- Neomagic display driver
ii  xserver-xorg-video-nv                 1:2.1.14-2ubuntu3                          X.Org X server -- NV display driver
ii  xserver-xorg-video-openchrome         1:0.2.903+svn758-0ubuntu1                  X.Org X server -- VIA display driver
ii  xserver-xorg-video-r128               6.8.1-1                                    X.Org X server -- ATI r128 display driver
ii  xserver-xorg-video-radeon             1:6.12.99+git20090929.7968e1fb-0ubuntu1    X.Org X server -- ATI Radeon display driver
ii  xserver-xorg-video-rendition          1:4.2.1-1                                  X.Org X server -- Rendition display driver
ii  xserver-xorg-video-s3                 1:0.6.2-1                                  X.Org X server -- legacy S3 display driver
ii  xserver-xorg-video-s3virge            1:1.10.2-2                                 X.Org X server -- S3 ViRGE display driver
ii  xserver-xorg-video-savage             1:2.3.0-1ubuntu1                           X.Org X server -- Savage display driver
ii  xserver-xorg-video-siliconmotion      1:1.7.2-1                                  X.Org X server -- SiliconMotion display driv
ii  xserver-xorg-video-sis                1:0.10.1-2                                 X.Org X server -- SiS display driver
ii  xserver-xorg-video-sisusb             1:0.9.1-1                                  X.Org X server -- SiS USB display driver
ii  xserver-xorg-video-tdfx               1:1.4.1-1                                  X.Org X server -- tdfx display driver
ii  xserver-xorg-video-trident            1:1.3.1-1                                  X.Org X server -- Trident display driver
ii  xserver-xorg-video-tseng              1:1.2.1-1                                  X.Org X server -- Tseng display driver
ii  xserver-xorg-video-v4l                1:0.2.0-3ubuntu1                           X.Org X server -- Video 4 Linux display driv
ii  xserver-xorg-video-vesa               1:2.2.1-1                                  X.Org X server -- VESA display driver
ii  xserver-xorg-video-vmware             1:10.16.7-1                                X.Org X server -- VMware display driver
ii  xserver-xorg-video-voodoo             1:1.2.2-1                                  X.Org X server -- Voodoo display driver

Escriptoris 3D i altres configuracions a mida

Beryl

Consulteu Gestors de finestres 3D. Beryl

Gnome-shell

Consulteu Gnome-shell

TroubleShooting. Resol·lució de problemes

Out-of-range després de modificar la resol·lucío utilitzant l'eina gràfica

L'eina gràfica de configuració de pantalla a gnome és:

$ gnome-display-properties

Les configuracions d'aquesta aplicació es guarden per cada usuari a:

~/.config/monitors.xml

Es pot esborrar des de una terminal aquest fitxer si hem indicat algun valor de resol·lució que no ens permet entrar l'entorn gràfic.

$ rm ~/.config/monitors.xml


Cannot open display

Aquest error sol succeir quan hem accedit a una terminal remota sense l'opció X11Forwarding o quan hem entrat amb un altre usuari a una terminal. Per poder iniciar aplicacions gràfiques des de la línia d'ordres és necessari que estigui establerta la variable d'entorn DISPLAY. Per exemple en una sessió remota SSH amb X11Forwarding:

$ echo $DISPLAY
localhost:10.0

En una sessió gràfica normal:

$ echo $DISPLAY
:0.0

Obtenir els modes de pantalla des de Windows

Hi ha una eina anomenada PowerStrip.

Consulteu:

http://www.x.org/wiki/FAQVideoModes#ObtainingmodelinesfromWindowsprogramPowerStrip

Permetre les connexions TPC al servidor X

$ sudo gedit /etc/gdm/gdm.schemas

Busqueu:

<schema>
 <key>security/DisallowTCP</key>
 <signature>b</signature>
 <default>true</default>
</schema>

I canvieu per:

<schema>
 <key>security/DisallowTCP</key>
 <signature>b</signature>
 <default>false</default>
</schema>

Abans hi havia una variable al fitxer:

/etc/gdm/gdm.conf
[security]

DisallowTCP=false

Cal tornar a iniciar GDM:

$ sudo /etc/init.d/gdm restart

Recursos:

Canvis a gdmsetup

L'han "supersimplificat" perdent moltes de les opcions abans existents (per exemple es podia activar accés per xarxa i XDMCP):

Vegeu també

Enllaços externs