Shell-Script bei KDE- oder X-Start ausführen

Howdy!

Ich habe ein kleines Shell-Script geschrieben, das mir die Tastaturbelegung einer Taste ändert. Es enthält nur eine Zeile:

xmodmap -e "keycode 61 = slash question minus underscore endash dead\_abovedot"

(Die Minus-Taste liefert jetzt in Kombination mit AltGr einen Halbgeviertstrich.)

Dann habe ich das Skript in ~/.kde/Autostart abgelegt. Es ist ausführbar und funktioniert. Nur anscheinend wird es nicht beim Start aufgerufen. Was mache ich falsch?

Ich bin auch offen für alternative Vorgehensweisen und/oder Speicherorte.

Danke und Gruß,
V.

Nachtrag: openSuse 10.3, KDE 3.5.7 (kT)

kT = kein Text

Es enthält nur eine Zeile:
xmodmap -e "key…

Dieses Script läuft in einer anderen Umgebung als der, die du erhältst, wenn du ein Terminalfenster öffnest. U. a. kann die Pfad-Variable gänzlich andere Inhalte besitzen.

Daher solltest du Befehle nie wie oben direkt, sondern immer mit voller Pfadangabe aufrufen. Gleiches gilt selbstverständlich auch für evtl. als Argument übergebene Datei- oder sonstige Objektnamen. Also (wahrscheinlich, ich hab kein SuSE) /usr/bin/xmodmap.

HTH

Nee, isses nich.
Hi,
danke für den Tip, aber auch mit
/usr/bin/xmodmap -e „keycode 61 = …“
funktioniert es nicht.

Gruß,
V.

Hallo Vladimir,

Ich habe ein kleines Shell-Script geschrieben, das mir die
Tastaturbelegung einer Taste ändert. Es enthält nur eine
Zeile:

xmodmap -e „keycode 61 = slash question minus
underscore endash dead_abovedot“

Dann habe ich das Skript in ~/.kde/Autostart abgelegt. Es ist
ausführbar und funktioniert. Nur anscheinend wird es nicht
beim Start aufgerufen. Was mache ich falsch?

Die Tastaturbelegung wird von der Datei ~/.Xmodmap eingelesen, die man mittels xmodmap erzeugen kann (und auch sollte). Diese Datei ~/.Xmodmap wird automatisch beim Start von KDE eingelesen, so daß die Benutzung des Autostarts in diesem Fall nicht notwendig ist und auch nichts bringt, wenn Du die Änderungen nicht in der Datei ~/.Xmodmap unterbringst.
Näheres findest Du hier
http://de.opensuse.org/SDB:Extra-Tasten_auf_der_Tast…
und hier
http://home.arcor.de/zscherni/heimseite/Tastaturlayo…

Viele Grüße
Marvin

Nee, issses auch nicht.
Hi,

ja, prinzipiell hast Du recht. Unter Suse (und den meisten anderen Distributionen vermutlich auch) wird allerdings mittlerweile Xkbmap an Stelle von Xmodmap eingesetzt. Xmodmap dient dann nur zum Wechseln einzelner Tasten.

Das heißt auch, dass die .Xmodmap nur berücksichtigt wird, wenn keine .Xkbmap existiert. Und da .Xkbmap bei mir existiert (und z.B. die Lage der Compose-Tasten und den Umgang mit den Windows-Tasten definiert), hat eine weitere .Xmodmap-Datei keine Auswirkung. (Ja, ich habe es auch ausprobiert.)

Herzliche Grüße,
V.

Hallo Vladimir,

Unter Suse (und den meisten
anderen Distributionen vermutlich auch) wird allerdings
mittlerweile Xkbmap an Stelle von Xmodmap eingesetzt.

Das liebe ich so an Linux, was gestern noch richtig war, ist heute schon wieder anders… Aber gut, das Gestern ist ja wahrscheinlich auch schon drei Jahre her :wink:

hat eine weitere .Xmodmap-Datei
keine Auswirkung. (Ja, ich habe es auch ausprobiert.)

Glaube ich dir unbesehen. Aber zum Verständnis, warum kannst Du dann deine Spezialtaste nicht einfach in die Xkbmap einbasteln?
Oder, um auf den ersten Weg zurückzukehren, eine Option -verbose gibt vielleicht Auskunft darüber, was da schief läuft?
Sonst fällt mir im Moment nichts mehr ein :frowning:
Außer daß ich normalerweise im Autostart nur Softlinks auf das eigentliche Skript kenne, aber das dürfte ja unmöglich einen Unterschied machen…

Viele Grüße
Marvin

Möglicherweise ging mein Gedanke doch fast in die richtige Richtung - dass nämlich die Umgebung, in der du xmodmap aufrufst, nicht in deine KDE-Arbeitsumgebung rückwirkt. Du könntest, falls es diese Datei auch unter SuSE gibt, den Befehl in der ~/.bash_profile unterzubringen. Die sollte die Weichen für KDE wie gewünscht stellen.

HTH

Hi,

Du
könntest, falls es diese Datei auch unter SuSE gibt, den
Befehl in der ~/.bash_profile unterzubringen.

Die gibt es leider nicht. Hmmm …

Gruß,
V.

Display
Gib dem xmodmap noch das Display mit, auf dem der Befehl ausgeführt werden soll, dann dürfte das auch mit der Nachbarin klappen:

xmodmap -display :0 -e "keycode 61 =…

Und eine Shebang-Zeile kann auch nie schaden:
#! /bin/sh

HTH

Hi,

xmodmap -display :0 -e "keycode 61 =…

das Skript läuft so nicht, weil

 xmodmap: unable to open display '-e'

Auch mit Leerzeichen anstelles des Doppelpunktes nicht (das hätte ich jetzt logisch gefunden).

Gruß,
V.

xmodmap -display :0 -e "keycode 61 =…

das Skript läuft so nicht, weil

xmodmap: unable to open display ‚-e‘

Auch mit Leerzeichen anstelles des Doppelpunktes nicht (das
hätte ich jetzt logisch gefunden).

Tippfehler bei dir oder eigenartige xmodmap-Version. Probier’s mit copy & paste, um alle Leerzeichen mitzunehmen, 0 nicht mit O zu verwechseln etc.

Gruß

Hi,

ja, #-)

Tippfehler bei dir

Das Skript an sich funktioniert jetzt, was aber nichts daran ändert, dass es anscheinend nicht beim Start geladen wird.

Gruß,
V.

Das Skript an sich funktioniert jetzt, was aber nichts daran
ändert, dass es anscheinend nicht beim Start geladen wird.

Starte das Script mal per crontab (da dürften ähnliche Bedingungen wie im Autostart herrschen) und schau dir die Fehlerausgabe an:
~$ crontab -e

# m h dom mon dow command
\*/1 \* \* \* \* /pfad/script \>/pfad/err1.log 2\>&1

Zusätzlich kannst du eine gleiche Fehlerausgabe im Script selbst erzeugen
xmodmap -display :0 -e "keyco… … >/pfad/err2.log 2>&1

Gruß

Dann habe ich das Skript in ~/.kde/Autostart abgelegt. Es ist
ausführbar und funktioniert. Nur anscheinend wird es nicht
beim Start aufgerufen. Was mache ich falsch?

Soweit ich weiß, startet KDE nur .desktop Starter.
Keine Ahnung, was darin zwingend ist…
In /usr/share/applications findest du eine Menge von denen.
Aufbau ist so:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=NVIDIA X Server Settings
Comment=Configure NVIDIA X Server Settings
Exec=/usr/bin/nvidia-settings
Icon=/usr/share/pixmaps/nvidia-settings.png
Categories=System;Settings;

Vielleicht reicht ja schon:
[Desktop Entry]
Exec=xmodmap -e „keycode 61 = slash question minus underscore endash dead_abovedot“

Und das ganze dann als xmodmap.desktop abgelegt?

Hi,

vielen Dank für Deinen Tipp. Dadurch bin ich ein Stück weiter gekommen, auch wenn die Lösung noch nicht 100-prozentig befriedigend ist.

Über die Seite http://jucato.org/kde/kde-autostart.html habe ich noch herausgefunden, dass man mit dem Konqueror über „Gehe zu“ -> „Autostart“ bequem in den Autostart-Ordner gelangt. Dort kann man mit Rechtsklick eine neue Datei erstellen („Verknüpfung zu Programm“) und einige Einstellungen vornehmen.

Ein Link auf das Script funktioniert merkwürdigerweise nicht.

Was geht, ist, besagte Befehlszeile direkt als Befehl einzugeben. Aber seltsamerweise nur, wenn in den Erweiterten Optionen „Im Terminal ausführen“ und „Nach Programmende geöffnet lassen“ aktiviert ist.

Dann geht beim Start ein Konsolen-Fenster auf (und führt anscheinend den Befehl aus); das Fenster bleibt dann natürlich auf und ich muss es von Hand schließen. Nun ja, nicht gerade „Straight-forward“ – aber dafür habe ich jetzt meinen Halbgeviertstrich.

Liebe Grüße,
V.