Xdefaults

Aus wiki.archlinux.de

Der richtige Titel für diesen Artikel lautet .Xdefaults. Dies ist aus technischen Gründen derzeit jedoch nicht möglich.


Xdefaults ist eine versteckte Datei auf Benutzerebene, die sich üblicherweise in ~/.Xdefaults befindet. Wenn sie existiert wird sie vom xrdb (X Resource Database) Programm automatisch, wenn Xorg gestartet wird, analysiert. Sie kann benutzt werden um Einstellungen für X und X Anwendungen zu setzen oder zu überschreiben. Sie kann vieles, u.a.:

  • Terminal Farben definieren
  • Terminal Einstellungen konfigurieren
  • DPI, Antialiasing, Hinting und ander X Schrift Einstellungen definieren
  • Das Xcursor-Motiv setzen
  • Xscreensaver-Motiv setzen
  • Die Einstellungen für Tief-Level X Anwendungen (xclock, xpdf etc.) setzen

Erste Schritte

.Xdefaults erstellen

Die Datei ~/.Xdefaults existiert nicht von Anfang an. Man kann sie mit dem Texteditor der Wahl anlegen und editieren.

Voreinstellungen

Um die Voreinstellungen für die installierten X11 Anwendungen zu sehen kann man in /usr/share/X11/app-defaults/ reinschauen.

Xdefaults-Syntax

Die grundlegende Syntax

Die grundlegende Syntax von einer Xdefaults Datei ist folgende:

name.Class.resource: value

...und ein Beispiel aus der echten Welt:

xscreensaver.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1

name: Der Name der Anwendung, z.b. xterm, xpdf, etc.

class: Die Klassifikation um Ressourcen zusammen zu gruppieren. Klassifikationen sind normalerweise groß geschrieben.

resource: Der Name von der Ressource, deren Wert geändert wird. Ressourcen sind normalerweise klein geschrieben mit groß geschriebenen Verkettungen.

value: Der Wert der Ressource. Das ist eines von dreien:

  • Ganze Zahl
  • Wahr oder Falsch (true/false, yes/no, on/off)
  • String (zum Beispiel das Wort (white), die Farbe (#ffffff), oder ein Pfad (/usr/bin/firefox))

delimiters: Ein Punkt (.) wird benutzt um jeden Schritt welchen man die Hierarchie runter geht anzudeuten -- im oberen Beispiel haben wir mit name gestartet, sind dann weiter runter in class und schlussendlich in die resource selbst gelangt. Ein Doppelpunkt hält die Deklaration der Ressource vom eigentlichen Wert auseinander.

Wildcards einsetzen

Sternchen können als Wildcard benutzt werden, um es einfacher zu machen eine Regel für verschiedene Anwendungen oder Elemente gelten zu lassen.

Mit dem vorherigen Beispiel, wenn man die gleiche Schrift für alle Programme (nicht nur xscreensaver), die einen class name Dialog mit einem resource name headingFont enthalten, haben will, dann würde man schreiben:

*Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1

Wenn man die gleiche Regeln für alle Programme, welche die Resource headingFond unabhängig von Klasse anwenden will, dann würde man schreiben:

*headingFont:	-*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1

Auskommentieren

Um einen Kommentar in eine Xdefaults Datei einzufügen muss man ihn einfach mit einem (!) am Anfang versehen, z.B.:

! Das ist ein Kommentar über irgendwelche Xft Einstellungen
xft.dpi:	96	! Das ist ein Kommentar in der Linie
! Die folgende Regel wird nicht beachtet werden, da sie auskommentiert ist:
!xft.antialias:	true

Benutzungs-Beispiele

Die folgenden Beispiele sollen ein gutes Verständnis geben wie Einstellungen für Anwendungen mit Xdefaults modifiziert werden können. Mehr Details gibt die man Seite von der betreffenden Anwendung.

Dateikopf

Falls man will kann man der ~./Xdefaults Datei einen Kopf hinzufügen, der nicht nur die Inhalte erklärt, sondern auch vim erklärt, wie der Text zu färben und zu formatieren ist. Zum Beispiel:

! ----------------------------------------------------------------------------
! file:     ~/.Xdefaults
! author:   Thayer Williams - http://cinderwick.ca
! modified: November 2008
! vim:enc=utf-8:nu:ai:si:et:ts=4:sw=4:ft=xdefaults:
! ----------------------------------------------------------------------------

Das instruiert vim UTF-8 zu benutzen, Liniennummer anzuzeigen, automatisch Einzurücken, tabs zu Leerschlägen auszudehnen, tabs mit 4 Leerschlägen gleichzusetzen und den autocommand Dateityp auf "xdefaults" zu setzen.

Es ist eine gute Gewohnheit, besonders wenn man seine verstecken Dateien öffentlich zugänglich machen will.

Terminalfarben

Die meisten Terminals, auch xterm unbd uxrvtm, unterstützen mindestens 16 Grundfarben. Das folgende Schema ist ein solches aus 16 Farben.

Die Farben 0-7 sind die 'normalen' Farben, währen die Farben 8-15 ihre 'aufgehellten' Versionen sind (für Highlighten u.s.w.)

! terminal colors ------------------------------------------------------------

! tangoesque scheme
*background: #111111
*foreground: #babdb6
! Black (not tango) + DarkGrey
*color0:  #000000
*color8:  #555753
! DarkRed + Red
*color1:  #ff6565
*color9:  #ff8d8d
! DarkGreen + Green
*color2:  #93d44f
*color10: #c8e7a8
! DarkYellow + Yellow
*color3:  #eab93d
*color11: #ffc123
! DarkBlue + Blue
*color4:  #204a87
*color12: #3465a4
! DarkMangenta + Mangenta
*color5:  #ce5c00
*color13: #f57900
!DarkCyan + Cyan (both not tango)
*color6:  #89b6e2
*color14: #46a4ff
! LightGrey + White
*color7:  #cccccc
*color15: #ffffff

Für mehr Beispiele von Farbschemen kann man sich die Other Resources Sektion am Ende dieses Artikels anschauen.

Desktopeinstellungen

Xcursor-Einstellungen

Setze das Motiv und die Größe des Mauszeigers:

! Xcursor --------------------------------------------------------------------

 Xcursor*theme: Vanilla-DMZ-AA
 Xcursor.size:  22

Mögliche Motive sind in /usr/share/icons und Motive vom Benutzer können in ~/.icons kopiert werden.

Xft-Schrifteinstellungen

Man kann grundlegende Schrift-Einstellungen ohne eine font.conf Datei oder eine Desktopumgebung machen. Aber, die Benutzung von einer Desktopumgebung und/oder fonts.conf kann diese Einstellungen überschreiben. Die beste Option ist das eine oder das andere zu benutzen, aber nicht beides gleichzeitig.

! Xft settings ---------------------------------------------------------------

Xft.dpi:        96
Xft.antialias:  true
Xft.rgba:       rgb
Xft.hinting:    true
Xft.hintstyle:  hintslight

xterm-Einstellungen

Dies wird Xterm in einem 80x25 Zeichen großen Fenster mit einer Scroll-Leiste und einer Scroll-Möglichkeit für die letzten 512 Zeilen öffnen.

Der spezifizierte Terminus facename ist eine verbreitete Terminal Schriftart.

! xterm ----------------------------------------------------------------------

xterm*geometry:           80x25
xterm*faceName:           terminusbold:pixelsize=14
!xterm*font:             -*-dina-medium-r-*-*-16-*-*-*-*-*-*-*
xterm*dynamicColors:      true
xterm*utf8:               2
xterm*eightBitInput:      true
xterm*saveLines:          512
xterm*scrollTtyKeypress:  true
xterm*scrollTtyOutput:    false
xterm*scrollBar:          true
xterm*rightScrollBar:     true
xterm*loginShell:         true
xterm*jumpScroll:         true
xterm*multiScroll:        true
xterm*toolBar:            false

urxvt-Einstellungen

Rxvt-unicode enthält eine ausgiebige Liste von Optionen, welche vie Xdefaults konfiguriert werden können. Für Details die urxvt man Seite anschauen.

! rxvt-unicode ---------------------------------------------------------------

! font preference
urxvt*font:      -*-terminus-*-*-*-*-*-*-*-*-*-*-*-*
urxvt*boldFont:  -*-terminus-*-*-*-*-*-*-*-*-*-*-*-*
!initial size
urxvt*geometry:           120x35
!internal whitespace
urxvt*internalBorder:     5
!fade text n% upon unfocus
urxvt*fading:             20
!darken=(0 to 100) lighten=(-1 to -100)
urxvt*shading:            30
!tint background with this color
urxvt*tintColor:          black
!set to 32-bit for real transparency (compositing required)
!urxvt*depth:             24
!save n lines of scrollback buffer
urxvt*saveLines:          32767
!flash screen for attention
urxvt*visualBell:         true
!jump to bottom (prompt) on keypress
urxvt*scrollTtyKeypress:  true
!jump to bottom (prompt) when tty gets new lines
urxvt*scrollWithBuffer:   false
!jump to bottom (prompt) on tty output
urxvt*scrollTtyOutput:    false
!toggle scrollbar
urxvt*scrollBar:          false
!scrollbar styles: rxvt, plain, next or xterm
urxvt*scrollstyle:        plain
!scrollbar alignment
urxvt*scrollBar_right:    true
urxvt*scrollColor:        #777777
urxvt*cursorColor:        #ffcc00
!is this a login shell?
urxvt*loginShell:         true
!set the TERM environment variable
urxvt*termName:           rxvt-unicode
!enable pseudo-transparency (requires depth: 24 (see above))
urxvt*inheritPixmap:      true
!delimiters for double-click mouse selection
urxvt*cutchars:           "()*,<>[]{}|'
!screen dump settings
urxvt*print-pipe:         cat > $(echo urxvt.dump.$(date +'%Y%M%d%H%m%S'))
!secondary screen scroll (default enabled)
urxvt*secondaryScroll:    true
!de-iconify (map) on receipt of a bell character
urxvt*mapAlert:           true
!inhibit writing record into the system log file utmp
urxvt*utmpInhibit:        true
!! BEGIN urlLauncher settings !!
urxvt*perl-lib:           /usr/lib/urxvt/perl/
urxvt*perl-ext-common:    default,matcher
urxvt*urlLauncher:        /usr/bin/firefox
urxvt*matcher.button:     1
!! END urlLauncher settings !!

!transparent=0000 opaque=ffff
urxvt*background: rgba:1111/1111/1111/dddd

aterm-Einstellungen

Beispielseinstellungen für aterm (sehr ähnlich wie urxvt)

!aterm settings-------------------------------------------------------------     

aterm*background:		black
aterm*foreground:		white
aterm*transparent:		true
aterm*shading:			30
aterm*cursorColor:		gray
aterm*saveLines:		2000
!aterm*tinting:			gray
aterm*scrollBar:		false
!aterm*scrollBar_right:	         true
aterm*transpscrollbar:		true
aterm*borderwidth:		0
aterm*font:	-*-terminus-*-*-*-*-*-*-*-*-*-*-*-*
aterm*geometry:			80x25
!aterm*fading:			70  

xpdf-Einstellungen

Einige Grundeinstellungen für Xpdf, ein leichtgewichtiges PDF-Betrachtungsprogramm. Diese Anmerkungen gelten für die alte Version 3.x, da xpdf ab 4.0 win Qt-Programm ist.

! xpdf -----------------------------------------------------------------------

xpdf*enableFreetype:    yes
xpdf*antialias:         yes
xpdf*foreground:        black
xpdf*background:        white
xpdf*urlCommand:        /usr/bin/firefox %s

Detailiertere Anweisungen sollte man in ~/.xpdfrc reinschreiben. Die xpdf man-Seite hilft weiter. Bemerkung: viKeys ist veraltet.

lal-Uhr

! lal clock ------------------------------------------------------------------

lal*font:       Arial
lal*fontsize:   12
lal*bold:       true
lal*color:      #ffffff
lal*width:      150
lal*format:     %a %b %d %l:%M%P

xclock-Einstellungen

Grundlegende xclock Einstellungen. Die xclock man Seite hilft für alle X sachen weiter.

 ! xclock ---------------------------------------------------------------------

 xclock*update:            1
 xclock*analog:            false
 xclock*Foreground:        white
 xclock*background:        black

x11-ssh-askpass

! x11-ssh-askpass ------------------------------------------------------------

x11-ssh-askpass*font:                   -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
x11-ssh-askpass*background:             #000000
x11-ssh-askpass*foreground:             #ffffff
x11-ssh-askpass.Button*background:      #000000
x11-ssh-askpass.Indicator*foreground:   #ff9900
x11-ssh-askpass.Indicator*background:   #090909
x11-ssh-askpass*topShadowColor:         #000000
x11-ssh-askpass*bottomShadowColor:      #000000
x11-ssh-askpass.*borderWidth:           1

xscreensaver-Aussehen

Ein Beispiel eines Xscreensaver-Motivs. Für mehr Information kann man die xscreensaver man Seite anschauen.

! xscreensaver ---------------------------------------------------------------

!font settings
xscreensaver.Dialog.headingFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.bodyFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.labelFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.unameFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.buttonFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.dateFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.passwd.passwdFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
!general dialog box (affects main hostname, username, password text)
xscreensaver.Dialog.foreground:         #ffffff
xscreensaver.Dialog.background:         #111111
xscreensaver.Dialog.topShadowColor:     #111111
xscreensaver.Dialog.bottomShadowColor:  #111111
xscreensaver.Dialog.Button.foreground:  #666666
xscreensaver.Dialog.Button.background:  #ffffff
!username/password input box and date text colour
xscreensaver.Dialog.text.foreground:    #666666
xscreensaver.Dialog.text.background:    #ffffff
xscreensaver.Dialog.internalBorderWidth:24
xscreensaver.Dialog.borderWidth:        20
xscreensaver.Dialog.shadowThickness:    2
!timeout bar (background is actually determined by Dialog.text.background)
xscreensaver.passwd.thermometer.foreground:  #ff0000
xscreensaver.passwd.thermometer.background:  #000000
xscreensaver.passwd.thermometer.width:       8
!datestamp format--see the strftime(3) manual page for details
xscreensaver.dateFormat:    %I:%M%P %a %b %d, %Y

xcalc-Einstellungen

Gewisse xcalc Einstellungen, um Knöpfe zu färben und anzupassen.

!xcalc-----------------------------------------------------------------------

xcalc*geometry:                        200x275
xcalc.ti.bevel.background:             #111111
xcalc.ti.bevel.screen.background:      #000000
xcalc.ti.bevel.screen.DEG.background:  #000000
xcalc.ti.bevel.screen.DEG.foreground:  LightSeaGreen
xcalc.ti.bevel.screen.GRAD.background: #000000
xcalc.ti.bevel.screen.GRAD.foreground: LightSeaGreen
xcalc.ti.bevel.screen.RAD.background:  #000000
xcalc.ti.bevel.screen.RAD.foreground:  LightSeaGreen
xcalc.ti.bevel.screen.INV.background:  #000000
xcalc.ti.bevel.screen.INV.foreground:  Red
xcalc.ti.bevel.screen.LCD.background:  #000000
xcalc.ti.bevel.screen.LCD.foreground:  LightSeaGreen
xcalc.ti.bevel.screen.LCD.shadowWidth: 0
xcalc.ti.bevel.screen.M.background:    #000000
xcalc.ti.bevel.screen.M.foreground:    LightSeaGreen
xcalc.ti.bevel.screen.P.background:    #000000
xcalc.ti.bevel.screen.P.foreground:    Yellow
xcalc.ti.Command.foreground:  White
xcalc.ti.Command.background:  #777777
xcalc.ti.button5.background:  Orange3
xcalc.ti.button19.background: #611161
xcalc.ti.button18.background: #611161
xcalc.ti.button20.background: #611111
!uncomment to change label on division button
!xcalc.ti.button20.label:      /
xcalc.ti.button25.background: #722222
xcalc.ti.button30.background: #833333
xcalc.ti.button35.background: #944444
xcalc.ti.button40.background: #a55555
xcalc.ti.button22.background: #222262
xcalc.ti.button23.background: #222262
xcalc.ti.button24.background: #222272
xcalc.ti.button27.background: #333373
xcalc.ti.button28.background: #333373
xcalc.ti.button29.background: #333373
xcalc.ti.button32.background: #444484
xcalc.ti.button33.background: #444484
xcalc.ti.button34.background: #444484
xcalc.ti.button37.background: #555595
xcalc.ti.button38.background: #555595
xcalc.ti.button39.background: #555595
XCalc*Cursor:                 hand2
XCalc*ShapeStyle:             rectangle

Farbschema-Scripte

Alle folgenden Scripte werden ein Diagramm mit den momentan gesetzten Terminal Farben zeigen. Gut zum testen und ähnliches.

Script #1

#!/bin/bash
#
#   This file echoes a bunch of color codes to the 
#   terminal to demonstrate what's available.  Each 
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a 
#   test use of that color on all nine background 
#   colors (default + 8 escapes).
#

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo

Script #2

#!/bin/bash
# Original: http://frexx.de/xterm-256-notes/
#           http://frexx.de/xterm-256-notes/data/colortable16.sh
# Modified by Aaron Griffin
# and further by Kazuo Teramoto


FGNAMES=(' black ' '  red  ' ' green ' ' yellow' '  blue ' 'magenta' '  cyan ' ' white ')
BGNAMES=('DFT' 'BLK' 'RED' 'GRN' 'YEL' 'BLU' 'MAG' 'CYN' 'WHT')
echo "     ┌──────────────────────────────────────────────────────────────────────────┐"
for b in $(seq 0 8); do
    if [ "$b" -gt 0 ]; then
      bg=$(($b+39))
    fi

    echo -en "\033[0m ${BGNAMES[$b]} │ "
    for f in $(seq 0 7); do
      echo -en "\033[${bg}m\033[$(($f+30))m ${FGNAMES[$f]} "
    done
    echo -en "\033[0m │"

    echo -en "\033[0m\n\033[0m     │ "
    for f in $(seq 0 7); do
      echo -en "\033[${bg}m\033[1;$(($f+30))m ${FGNAMES[$f]} "
    done
    echo -en "\033[0m │"
	echo -e "\033[0m"
    	
  if [ "$b" -lt 8 ]; then
    echo "     ├──────────────────────────────────────────────────────────────────────────┤"
  fi
done
echo "     └──────────────────────────────────────────────────────────────────────────┘"

Script #3

#!/bin/bash
# Original: http://frexx.de/xterm-256-notes/
#           http://frexx.de/xterm-256-notes/data/colortable16.sh
# Modified by Aaron Griffin
# and further by Kazuo Teramoto


FGNAMES=(' black ' '  red  ' ' green ' ' yellow' '  blue ' 'magenta' '  cyan ' ' white ')
BGNAMES=('DFT' 'BLK' 'RED' 'GRN' 'YEL' 'BLU' 'MAG' 'CYN' 'WHT')
echo "     ----------------------------------------------------------------------------"
for b in $(seq 0 8); do
    if [ "$b" -gt 0 ]; then
      bg=$(($b+39))
    fi

    echo -en "\033[0m ${BGNAMES[$b]} : "
    for f in $(seq 0 7); do
      echo -en "\033[${bg}m\033[$(($f+30))m ${FGNAMES[$f]} "
    done
    echo -en "\033[0m :"

    echo -en "\033[0m\n\033[0m     : "
    for f in $(seq 0 7); do
      echo -en "\033[${bg}m\033[1;$(($f+30))m ${FGNAMES[$f]} "
    done
    echo -en "\033[0m :"
	echo -e "\033[0m"
    	
  if [ "$b" -lt 8 ]; then
    echo "     ----------------------------------------------------------------------------"
  fi
done
echo "     ----------------------------------------------------------------------------"

Andere .Xdefaults

Einige Beispiele (bereitgestellt von verschiedenen Communitymitgliedern).

Andere Ressourcen