Windowmanager: Unterschied zwischen den Versionen

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen
K (2 Versionen)
(Zerstückelt, neu sortiert und verbessert)
Zeile 1: Zeile 1:
Wenn einem KDE, GNOME, CDE und FVWM alle nicht gefallen, kann man auch seinen eigenen Windowmanager auswählen. Das geht allerdings nicht über das Menü beim Einloggen, sondern man muss es in der Datei <tt>.xinitrc</tt> selbst eintragen und dann beim Login als Session "FVWM" waehlen. Die Datei koennte folgendermassen aussehen:
Wenn einem KDE, GNOME, CDE und FVWM alle nicht gefallen, kann man auch seinen eigenen Windowmanager auswählen. Das geht allerdings nicht über das Menü beim Einloggen, sondern man muss es in der Datei <tt>.xinitrc</tt> selbst eintragen und dann beim Login als Session "FVWM" waehlen. In der Datei sind folgende Programmschnipsel sinnvoll:
 
== Bash statt /bin/sh ==


<pre>
<pre>
# make sure we're run by the bash
# Die /bin/sh enthält viele Fehler und ist nicht so mächtig wie die Bash.
if [ x"$[[BASH_VERSION]]" = x"" ]
[ -n "$BASH_VERSION" ] || exec bash "$0"
then
</pre>
  exec /usr/bin/env bash $0
fi


== Alle Ausgaben mitloggen ==
<pre>
# Alle Ausgaben mitloggen -- das kann auch später nützlich sein,
# Alle Ausgaben mitloggen -- das kann auch später nützlich sein,
# um zu gucken, was Programme, die nicht aus einem Terminal heraus
# um zu gucken, was Programme, die nicht aus einem Terminal heraus
Zeile 14: Zeile 16:
exec 1>> "$HOME/.x11_log" 2>&1
exec 1>> "$HOME/.x11_log" 2>&1
echo "[`date`] X11-Sitzung auf `hostname` gestartet ..."
echo "[`date`] X11-Sitzung auf `hostname` gestartet ..."
</pre>


# bash loginscripte sourcen
== Bash-Logindateien einbinden ==
for S in $HOME/.bash_profile $HOME/.bash_login $HOME/.profile
<pre>
do
for s in $HOME/.bash_profile $HOME/.bash_login $HOME/.profile; do
   [ -f $S ] && . $S
   [ -f $s ] && . $S
done
done
</pre>


== Ruhe, bitte ==
<pre>
# dont beep
# dont beep
xset b off
xset b off
</pre>


== Tastatur ==
<pre>
# kill the annoying caps lock key
# kill the annoying caps lock key
xmodmap -e "remove lock = [[Caps_Lock]]"
xmodmap -e "remove lock = Caps_Lock"
</pre>


== SSH-Schlüssel ==
<pre>
# Start ssh agent (idea stolen from OpenBSD)
id1=$HOME/.ssh/identity
id2=$HOME/.ssh/id_dsa
id3=$HOME/.ssh/id_rsa
if [ -x /usr/pkg/bin/ssh-askpass ] && [ -f $id1 -o -f $id2 -o -f $id3 ]; then
  eval `ssh-agent -s`
  SSH_ASKPASS=/usr/pkg/bin/ssh-askpass ssh-add < /dev/null
fi
</pre>
== Windowmanager ==
<pre>
# Abhängig vom Betriebssystem sollen verschiedene Windowmanager
# Abhängig vom Betriebssystem sollen verschiedene Windowmanager
# ausgewählt werden.
# ausgewählt werden.
#
#
case `uname` in
case `uname` in
  [[SunOS]]) programs="fluxbox icewm xterm" ;;
SunOS)   wms="fluxbox icewm xterm" ;;
  Linux) programs="windowmaker fluxbox icewm xterm" ;;
Linux)   wms="windowmaker fluxbox icewm xterm" ;;
  *)     programs="xterm" ;;
*)       wms="xterm" ;;
esac
esac
# Start ssh agent (idea stolen from [[OpenBSD]])
id1=$HOME/.ssh/identity
id2=$HOME/.ssh/id_dsa
id3=$HOME/.ssh/id_rsa
if [ -x /usr/pkg/2006Q2/bin/ssh-askpass ] && [ -f $id1 -o -f $id2 -o -f $id3 ];
then
  eval `ssh-agent -s`
  [[SSH_ASKPASS]]=/usr/pkg/2006Q2/bin/ssh-askpass ssh-add < /dev/null
fi


# Das erste Programm aus der oben gewählten Liste ausführen.
# Das erste Programm aus der oben gewählten Liste ausführen.
Zeile 50: Zeile 68:
pid=0
pid=0


for p in $programs
for wm in $wms; do
do
   if type "$wm" >/dev/null; then
   if type "$p" > /dev/null
     echo "Starting $wm..."
  then
     "$wm" &
     echo "Starting $p..."
     "$p" &
     pid=$!
     pid=$!


     # wait some time and check if its still alive
     # wait some time and check if its still alive
     sleep 1
     sleep 1
     pgrep "$p" | grep $pid > /dev/null && { success=1; break; }  
     pgrep "$wm" | grep $pid > /dev/null && { success=1; break; }
{| class="wikitable"
    echo "$wm failed."
!
|}
echo "$p failed."
   else
   else
     echo "$p is not found in $PATH." 1>&2
     echo "$wm is not found in $PATH." 1>&2
   fi
   fi
done
done


if [ $success -eq 1 ]
if [ $success -eq 1 ]; then
then
   # wait for windowmanager to exit
   # wait for windowmanager to exit
   wait $pid
   wait $pid
Zeile 78: Zeile 90:
   echo "$msg" 1>&2
   echo "$msg" 1>&2
   xmessage -center -timeout 15 "$msg"
   xmessage -center -timeout 15 "$msg"
fi
fi
</pre>


if [ "$[[SSH_AGENT_PID]]" ]
== SSH-Kram aufräumen ==
then
<pre>
if [ -n "$SSH_AGENT_PID" ]; then
   ssh-add -D < /dev/null
   ssh-add -D < /dev/null
   eval `ssh-agent -s -k`
   eval `ssh-agent -s -k`
fi
fi
:
</pre>
</pre>

Version vom 10. Januar 2008, 17:02 Uhr

Wenn einem KDE, GNOME, CDE und FVWM alle nicht gefallen, kann man auch seinen eigenen Windowmanager auswählen. Das geht allerdings nicht über das Menü beim Einloggen, sondern man muss es in der Datei .xinitrc selbst eintragen und dann beim Login als Session "FVWM" waehlen. In der Datei sind folgende Programmschnipsel sinnvoll:

Bash statt /bin/sh

# Die /bin/sh enthält viele Fehler und ist nicht so mächtig wie die Bash.
[ -n "$BASH_VERSION" ] || exec bash "$0"

Alle Ausgaben mitloggen

# Alle Ausgaben mitloggen -- das kann auch später nützlich sein,
# um zu gucken, was Programme, die nicht aus einem Terminal heraus
# gestartet werden, ausgeben.
#
exec 1>> "$HOME/.x11_log" 2>&1
echo "[`date`] X11-Sitzung auf `hostname` gestartet ..."

Bash-Logindateien einbinden

for s in $HOME/.bash_profile $HOME/.bash_login $HOME/.profile; do
  [ -f $s ] && . $S
done

Ruhe, bitte

# dont beep
xset b off

Tastatur

# kill the annoying caps lock key
xmodmap -e "remove lock = Caps_Lock"

SSH-Schlüssel

 
# Start ssh agent (idea stolen from OpenBSD)
id1=$HOME/.ssh/identity
id2=$HOME/.ssh/id_dsa
id3=$HOME/.ssh/id_rsa
if [ -x /usr/pkg/bin/ssh-askpass ] && [ -f $id1 -o -f $id2 -o -f $id3 ]; then
  eval `ssh-agent -s`
  SSH_ASKPASS=/usr/pkg/bin/ssh-askpass ssh-add < /dev/null
fi

Windowmanager

# Abhängig vom Betriebssystem sollen verschiedene Windowmanager
# ausgewählt werden.
#
case `uname` in
SunOS)   wms="fluxbox icewm xterm" ;;
Linux)   wms="windowmaker fluxbox icewm xterm" ;;
*)       wms="xterm" ;;
esac

# Das erste Programm aus der oben gewählten Liste ausführen.
success=0
pid=0

for wm in $wms; do
  if type "$wm" >/dev/null; then
    echo "Starting $wm..."
    "$wm" &
    pid=$!

    # wait some time and check if its still alive
    sleep 1
    pgrep "$wm" | grep $pid > /dev/null && { success=1; break; }
    echo "$wm failed."
  else
    echo "$wm is not found in $PATH." 1>&2
  fi
done

if [ $success -eq 1 ]; then
  # wait for windowmanager to exit
  wait $pid
else
  msg='Kein Programm zum Ausfuehren gefunden. :('
  echo "$msg" 1>&2
  xmessage -center -timeout 15 "$msg"
fi

SSH-Kram aufräumen

if [ -n "$SSH_AGENT_PID" ]; then
  ssh-add -D < /dev/null
  eval `ssh-agent -s -k`
fi