Startprogramme Script nach läuft nach suspend nicht mehr

Stifflers_mom

New member
Themenstarter
Registriert
3 Juni 2009
Beiträge
23
Ich habe mir letztens Ubuntu 12.04 neu installiert, vorher hatte ich 10.04. Dabei hab ich folgendes Script automatisch bei Rechnerneustart über Startprogramme aufrufen lassen, um zwei-Finger-Scrollen zu aktivieren.

Code:
#!/bin/bash

sleep 05
# xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Move Speed" 0.05 0.5 0.009952 40 &
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 32 8 &
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 32 40 &
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 8 1 1 &
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Jumpy Cursor Threshold" 250 &
xinput --set-prop --type=int --format=8  "SynPS/2 Synaptics TouchPad" "Synaptics Tap Action" 0 0 0 0 1 0 0

exit 0

Das hat unter 10.04 funktioniert. Unter 12.04 geht das allerdings nur direkt nach einem Neustart. Wenn ich wieder aus einem Suspend to RAM komme, funktioniert das Scrollen nicht mehr.

Ich schätze, die Optionen werden beim Wake-up wieder überschrieben. Ist die sinnvollste Variante, das script nach einem Wake-up wieder aufzurufen? Wie mache ich das automatisch?
In /etc/pm/sleep.d/ kann man laut Wiki solche skripte legen. Aber muss ich das obige dazu noch anpassen? Einfach in den Ordner kopieren und ausführbar machen hat nicht funkioniert.

Oder gibts eine einfachere Lösung?

Edit: achja, ich gebe Unity eine Chance und Rechner ist ein R400.
 
Zuletzt bearbeitet:
/etc/pm/sleep.d/ bzw. /usr/lib/pm-utils/sleep.d/ ist die richtige Möglichkeit dafür. (je nach Distri)

Wichtig: Es muss glaube ich gewisse Namenskonventionen einhalten, sonst wird es ignoriert. Probier doch einfach mal 00skript oder so. Die Zahlen geben die Reihenfolge an, ich bin mir aber nicht genau sicher, aber ich glaube beim suspend aufsteigend, beim resume absteigend.

Dann bau noch folgendes ein, es müsste zwar auch so gehen, aber dann löst es wirklich nur im Resume aus:
Code:
#!/bin/bash
   case $1 in
   thaw|resume)
      ##dein Code
   ;;
   esac
exit 0

Wichtig: Besitzer auf Root ändern und Schreibrechte für alle anderen User entziehen! Ausführbar machen nicht vergessen.
Falls es nicht geht, lass dir mal die Fehlermeldungen in eine Datei schreiben, manchmal braucht man noch ein paar gesetzte Variablen ala DISPLAY=xyz usw.

Hoffe das hat geholfen ;)
 
Naja DISPLAY braucht er hier nicht ;) Das Dingen soll ja aufm Display nichts darstellen daher egal.

Wenn du dir Error in eine Datei schreibst nimmt nicht nur STDOUT sondern auch STDERR mit.

Notfalls gehst einfach her, das macht bei dem oben genannten Programm nichts, machste was wie folgt:

Code:
while [ true ], do
 sleep 5
 $deinscript
done

Ist nicht hübsch funktioniert aber ;) Zudem frisst es annähernd 0% CPU.

Wäre als Notnagel machbar.

Aber probier erstmal ob du es auf Evils weg hinbekommst :)

Grüße
 
ok danke, so ganz tut es aber noch nicht. Ich hab bisher folgendes gemacht:

Eine Datei /etc/pm/sleep.d/00twofingerscroll:
Code:
#!/bin/sh
   case $1 in
   thaw|resume)
    /home/stiffler/twofingerscroll.sh
   ;;
esac

Deren Aufbau ist von den anderen Dateien, die in /etc/pm/sleep.d/ liegen, z.b. '10_grub-common', '10_unattended-upgrades-hibernate'.

Die log-datei des Resume Prozesses, sagt aber folgendes:
/var/log/pm-suspend.log
Code:
Running hook /etc/pm/sleep.d/00twofingerscroll resume suspend:
Unable to connect to X server
Unable to connect to X server
Unable to connect to X server
Unable to connect to X server
Unable to connect to X server

/etc/pm/sleep.d/00twofingerscroll resume suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/00powersave resume suspend:

/usr/lib/pm-utils/sleep.d/00powersave resume suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/00logging resume suspend:

/usr/lib/pm-utils/sleep.d/00logging resume suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/000kernel-change resume suspend:

/usr/lib/pm-utils/sleep.d/000kernel-change resume suspend: success.
Sat Jul  7 13:38:44 CEST 2012: Finished.

Wie man sieht, kommen noch ein paar Aktionen nach meinem Skript und es gibt die Fehlermeldung mit Xserver aus.


Dazu sollte ich vielleicht noch erwähnen, dass mein Script auch immer folgende kleine Fehlermeldung ausgibt, obwohl es funktioniert:
Code:
/home/stiffler/twofingerscroll.sh
Invalid format 250


update: Die Reihenfolge macht nichts aus. Ich hab das file nach 0000twofingerscroll umbenannt, dann wird es als letztes ausgeführt. Es liegt wohl am xserver fehler. Kann es sein, dass der zu dem Zeitpunkt noch nicht gestartet ist?
 
Zuletzt bearbeitet:
@blafoo: selbstverständlich möchte xinput wissen mit welchen Display es reden soll ...

@stifflers_mom: das sleep.d-Skript wird im Hintergrund im Root-Kontext ausgeführt. Im Gegensatz zu einem Benutzerkontext (oder auch einem sudo -s) nach einer grafischen Anmeldung sind dort die Environmentvariablen DISPLAY und XAUTHORITY nicht gesetzt. Bau mal folgenden Schnipsel zu Beginn deines Skripts ein:
Code:
. /usr/share/acpi-support/power-funcs # das am Anfang dieser Zeile ist ein Punkt, kein Pixelfehler ...
# get DISPLAY & XAUTHORITY
getXconsole
 
Zuletzt bearbeitet:
Uppss .. da war ich noch im Halbschlaf -.-

Ja xinput braucht DISPLAY.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben