ubuntuusers.de

Blackbox - Autostart und Alias

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

schuelsche

Anmeldungsdatum:
8. April 2005

Beiträge: 19

Hallo,

ich habe Kubuntu Hoary 5.04 auf meinem Rechner installiert.
Nun habe ich mir als Windowmanager blackbox installiert, der mir sehr gut gefällt (benutze u.a. auf einem anderen Rechner auch waimea).

Mein Problem ist zum einen gerade, dass ich nicht herausfinde, wo ich ein Programm eintragen muss, dass automatisch beim Login gestartet werden soll. Ich benutze kdm als Loginmanager und kann dort unter den Sessions blackbox auswählen.
Den Thread "Wo finde ich Autostart-Einträge" habe ich schon gelesen, aber ich weiss nicht, ob ich in der dort erwähnten /etc/init.d einfach ein Shell-Skript eintragen kann, dass mir zB gDeskcal automatisch startet. Derzeit sieht meine /etc/init.d standardmässig so aus:

acpid              fetchmail         module-init-tools  rsync
acpi-support       halt              mountall.sh        samba
alsa               hdparm            mountnfs.sh        screen-cleanup
anacron            hostname.sh       mountvirtfs        sendsigs
apache             hotplug           mysql              single
apache2            hwclockfirst.sh   networking         skeleton
apmd               hwclock.sh        ntpdate            ssh
atd                ifupdown          pcmcia             stop-bootlogd
bootclean.sh       ifupdown-clean    postfix            sudo
bootlogd           inetd             powernowd          sysklogd
bootmisc.sh        initrd-tools.sh   ppp                udev
checkfs.sh         kdm               pppd-dns           udev-mtab
checkroot.sh       keymap.sh         procps.sh          umountfs
console-screen.sh  klogd             rc                 umountnfs.sh
cron               libdevmapper1.00  rcS                urandom
cupsys             lvm               readahead          vbesave
dbus-1             makedev           README             xorg-common
dns-clean          mdadm             reboot             
evms               mdadm-raid        rmnologin

Oder kann ich einfach in die /etc/rc5.d/ ein Skript eintragen?! Das Verzeichnis sieht aktuell so aus:

K08vmware    S19cupsys   S20pcmcia     S25mdadm    S99acpi-support
K11anacron   S20acpid    S20postfix    S89anacron  S99fetchmail
S05vbesave   S20apmd     S20powernowd  S89atd      S99rmnologin
S10sysklogd  S20dbus-1   S20rsync      S89cron     S99stop-bootlogd
S11klogd     S20inetd    S20samba      S90vmware
S12alsa      S20makedev  S20ssh        S91apache
S14ppp       S20mysql    S21kdm        S91apache2

Wie müsste dieses Skript denn dann aussehen? Welche Nummer müsste es bekommen - ist das egal?!

In KDE isses ja einfach einen Autostart anzulegen, indem man das halt in /home/user/.kde/Autostart/ einträgt, nur das funktioniert hier ja nicht.

Im übrigen habe ich standardmässig keine .xsession oder .xinitrc in meinem Homeverzeichnis liegen - aber die werden ja eh nicht mehr abgefragt, wenn man blackbox über kdm startet und nicht per startx (habe ich gelesen und hoffentlich so richtig verstanden).
Ein /etc/X11/kdm Verzeichnis konnte ich auch nicht finden, genauso wenig wie ein /etc/X11/xdm Verzeichnis, wo ja evtl. eine Datei "Sessions" hätte liegen können. Bei mir steht in /etc/X11 nur folgendes:

app-defaults             fluxbox  X          Xresources  Xsession.options
blackbox                 fonts    xinit      xserver     xsm
cursors                  rgb.txt  xkb        Xsession    Xwrapper.config
default-display-manager  rstart   xorg.conf  Xsession.d

... wobei im Verzeichnis blackbox nur die Datei "blackbox-menu" steht, sonst nix.

Mein Zweites Problem ist, dass ich gerne einen alias anlegen möchte. Lt. linuxfibel isses ja so, dass Aliase so lange erhalten bleiben, bis die Shell, in der er definiert wurde, beendet wird. Wenn man das umgehen möchte, dann soll man den Alias in die Datei /home/user/.profile eintragen. Nur diese Datei existiert bei mir auch nicht 😢 Muss/Kann ich die dann selber anlegen, so dass die dann auch aufgerufen wird beim Login?!

Rätselnde Grüsse,
schuelsche

Unki Team-Icon

Avatar von Unki

Anmeldungsdatum:
23. März 2005

Beiträge: 5761

Wohnort: Essen

schuelsche hat geschrieben:

Hallo,

ich habe Kubuntu Hoary 5.04 auf meinem Rechner installiert.
Nun habe ich mir als Windowmanager blackbox installiert, der mir sehr gut gefällt (benutze u.a. auf einem anderen Rechner auch waimea).

Eiogentlich reicht es, wenn Du für Deinen Benutzer ein Datei .xsession anlegst. Im Wiki ist ein Beispiel
anstelle Fluxbox setzt Du eben Blackbox ein ...

Den Syntax von den Blackbox-Dateien kenne ich nicht. Da Fluxbox, Waimea, Openbox irgendwie alle von Blackbox abstammen dürfte der Syntax recht ähnlich sein...
schuelsche hat geschrieben:

[Aliases ...]
Muss/Kann ich die dann selber anlegen, so dass die dann auch aufgerufen wird beim Login?!

Türchlich kannst Du diese Datei selber anlegen. Da Du ja die Bash als Shell hast, kannst Du die Aliase auch in der .bashrc oder .bash_profile anlegen. Im Übrigen sind in der .bashrc schon einigen Aliases definiert ☺

HTH Rainer

schuelsche

(Themenstarter)

Anmeldungsdatum:
8. April 2005

Beiträge: 19

Hallo,

irgendwie scheint das aber bei blackbox anders zu funktionieren. Fluxbox legt ja gleich bei der Installation die Unterverzeichnisse apps, init, keys und menu im Homverzeichnis unter .fluxbox an. Das ist bei blackbox nicht so. Vor allem lassen sich dort unter apps wohl Programm eintragen, die dann beim Start aufgerufen werden.

Ich habe jetzt daher mal eine ~/.Xsession erstellt mit folgendem Inhalt:

#! /bin/bash
aterm &
blackbox

... aber da tut sich gar nix nach dem Login über kdm. Auch wenn ich die Datei ~/.xsession nenne, ändert sich nix - aterm wird nicht beim Einloggen gestartet.

Andere Ideen?!

(das mit der Alias-Einstellung hat übrigens geklappt - danke 😉 )

Grüsse
schuelsche

Unki Team-Icon

Avatar von Unki

Anmeldungsdatum:
23. März 2005

Beiträge: 5761

Wohnort: Essen

schuelsche hat geschrieben:

Ich habe jetzt daher mal eine ~/.Xsession erstellt mit folgendem Inhalt:

#! /bin/bash
aterm &
blackbox

Korigiere das bitte mal so:

exec Blackbox

, das sorgt dafür, daß garantiert Blackbox startet, wenn aterm nicht starten kann ...
die datei wird .xsession genannt?!

schuelsche hat geschrieben:

... aber da tut sich gar nix nach dem Login über kdm. Auch wenn ich die Datei ~/.xsession nenne, ändert sich nix - aterm wird nicht beim Einloggen gestartet.

Den KDM kenn ich nicht. Gibt es beim Login einen Punkt Default-Session oder ähnlich?
Rainer

schuelsche

(Themenstarter)

Anmeldungsdatum:
8. April 2005

Beiträge: 19

Hallo,

auch wenn ich die Datei ~/.xsession in folgendes ändere:

#!/bin/bash
aterm &
exec blackbox

und sogar mit chmod 777 ausführbar mache, ändert sich überhaupt nix.
Muss ich denn den Rechner komplett rebooten, damit die Datei aufgerufen wird?! Das kanns doch irgendwie auch nicht sein.

Nachtrag: auch nach einen Reboot bringt das nix. Auch nicht, wenn ich "Blackbox" statt "blackbox" schreibe. Das wird nicht ausgeführt...

Den KDM kenn ich nicht. Gibt es beim Login einen Punkt Default-Session oder ähnlich?

Also, dort, wo ich mich einlogge, da kann ich "Session" auswählen und da steht dann zB drin "Blackbox (previous)", wenn das die letzte Session war, die ich aufgerufen habe. Wenn ich zuletzt in KDE drin war, dann steht da halt "KDE (previous)". Daneben stehen da alle anderen installierten Windowmanager zur Auswsahl.

In /etc/X11/ gibt es eine Datei namens default-display-manager. Dort steht aber nur drin "/usr/bin/kdm", sonst nix. Daneben gibt es noch eine Datei namens "Xsession", die folgenden Inhalt hat:

#!/bin/sh
#
# /etc/X11/Xsession
#
# global Xsession file -- used by display managers and xinit (startx)

# $Id: Xsession 1507M 2004-09-13 07:36:26Z (local) $

set -e

PROGNAME=Xsession

message () {
  # pretty-print messages of arbitrary length; use xmessage if it
  # is available and $DISPLAY is set
  MESSAGE="$PROGNAME: $*"
  echo "$MESSAGE" | fold -s -w ${COLUMNS:-80} >&2
  if [ -n "$DISPLAY" ] && which xmessage > /dev/null 2>&1; then
    echo "$MESSAGE" | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
  fi
}

message_nonl () {
  # pretty-print messages of arbitrary length (no trailing newline); use
  # xmessage if it is available and $DISPLAY is set
  MESSAGE="$PROGNAME: $*"
  echo -n "$MESSAGE" | fold -s -w ${COLUMNS:-80} >&2;
  if [ -n "$DISPLAY" ] && which xmessage > /dev/null 2>&1; then
    echo -n "$MESSAGE" | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
  fi
}

errormsg () {
  # exit script with error
  message "$*"
  exit 1
}

internal_errormsg () {
  # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
  # One big call to message() for the sake of xmessage; if we had two then
  # the user would have dismissed the error we want reported before seeing the
  # request to report it.
  errormsg "$*" \
           "Please report the installed version of the \"xfree86-common\"" \
           "package and the complete text of this error message to" \
           "<debian-x@lists.debian.org>."
}

run_parts () {
  # until run-parts --noexec is implemented
  if [ -z "$1" ]; then
    internal_errormsg "run_parts() called without an argument."
  fi
  if [ ! -d "$1" ]; then
    internal_errormsg "run_parts() called, but \"$1\" does not exist or is" \
                      "not a directory."
  fi
  for F in $(ls $1); do
    if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then
      if [ -f "$1/$F" ]; then
        echo "$1/$F"
      fi
    fi
  done
}

# initialize variables for use by all session scripts

OPTIONFILE=/etc/X11/Xsession.options

SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources

SYSSESSIONDIR=/etc/X11/Xsession.d
USERXSESSION=$HOME/.xsession
ALTUSERXSESSION=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors

# attempt to create an error file; abort if we cannot
if touch "$ERRFILE" 2> /dev/null && [ -w "$ERRFILE" ] &&
  [ ! -L "$ERRFILE" ]; then
  chmod 600 "$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
  if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
    message "warning: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
             "\"$ERRFILE\"; look for session log/errors in" \
             "\"$TMPDIR/xsession-$USER\"."
  fi
else
  errormsg "unable to create X session log/error file; aborting."
fi

exec >>"$ERRFILE" 2>&1

echo "$PROGNAME: X session started for $LOGNAME at $(date)"

# sanity check; is our session script directory present?

if [ ! -d "$SYSSESSIONDIR" ]; then
  errormsg "no \"$SYSSESSIONDIR\" directory found; aborting."
fi

# Attempt to create a file of non-zero length in /tmp; a full filesystem can
# cause mysterious X session failures.  We do not use touch, :, or test -w
# because they won't actually create a file with contents.  We also let standard
# error from tempfile and echo go to the error file to aid the user in
# determining what went wrong.
WRITE_TEST=$(tempfile)
if ! echo "*" >>"$WRITE_TEST"; then
  message "warning: unable to write to ${WRITE_TEST%/*}; X session may exit" \
          "with an error"
fi
rm -f "$WRITE_TEST"

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run_parts $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
fi

exit 0

# vim:set ai et sts=2 sw=2 tw=80:

Dort steht ja auch drin, dass das File .xsession heissen soll (das ist die Standard-Datei, ich habe daran nix geändert).

Was tun?!

Grüsse
schuelsche

schuelsche

(Themenstarter)

Anmeldungsdatum:
8. April 2005

Beiträge: 19

So, ich habe herausgefunden, wie es geht. Leider weiss ich nicht mehr genau, wie ich drauf gekommen bin, aber es muss etwas mit dem Lesen der Dateien in /etc/kde3/kdm zu tun gehabt haben (dort liegen ja die kdmrc, kdm.options, Xsession usw.).

Jedenfalls habe ich festgestellt, dass Windowmanager (bzw. Blackbox) mittels /usr/share/xsessions/blackbox.desktop gestartet werden. Dort habe ich zunächst eine Sicherungskopie von blackbox.desktop angelegt (blackbox.desktop.orig) und dann folgendes in die blackbox.desktop eingetragen:

[Desktop Entry]
Encoding=UTF-8
Name=Blackbox
Comment=Highly configurable and low resource X11 Window manager
Exec=/usr/bin/startblackbox
Terminal=False
TryExec=/usr/bin/startblackbox
Type=Application

[Window Manager]
SessionManaged=true

Dann habe ich unter /usr/bin/ eine Datei namens startblackbox angelegt mit folgendem Inhalt:

#!/bin/bash
aterm &
xterm &
exec blackbox

Diese Datei habe ich ausführbar gemacht, so wie zB die startkde-Datei auch.

Anschliessen Sitzung beendet, neu eingeloggt - und siehe da - Aterm und Xterm starten ☺

Im Prinzip funktionierts ja wie bei waimea auch, nur habe ich ewig nach dieser *.desktop-Datei gesucht, deren Namen ich nicht mehr wusste 😉

Vielleicht hilfts ja mal jmd. anders weiter...

Grüsse
schuelsche

Antworten |