ubuntuusers.de

Möglichkeit um "In 60 Sekunden ausschalten" zu verändern bei Ubuntu 9.10 (Karmic)

Status: Gelöst | Ubuntu-Version: 9.10 (Karmic Koala)
Antworten |

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Wie man den Timer-Dialog beim Abschalten von Karmic vollständig ausschaltet ist ja hinlänglich bekannt, zuletzt hier:
http://forum.ubuntuusers.de/topic/den-60-sekunden-countdown-deaktivieren/ und hier: http://forum.ubuntuusers.de/topic/direkt-runterfahren-wie/ .

Aber wie wäre es denn wenn man diese Zeit anpassen könnte ? Vielleich einfach auf 10 Sekunden oder so ?
- "Geht nicht, ist ja hart codiert.. " ?

Na ja, auf dem niederländischen Forum haben wir da doch etwas gefunden: http://forum.ubuntu-nl.org/software-en-configuratie/pjotr-delay-bij-afsluiten-weghalen/ 🇳🇱

  • Möglichkeit 1: selber kompilieren:

Dieser Dialog versteckt sich im Paket indicator-session , und der Quelltext ist hier zu finden: http://archive.ubuntu.com/ubuntu/pool/main/i/indicator-session/indicator-session_0.1.7.orig.tar.gz

Wenn man da ein bisschen sucht findet man die Verzögerung (60 sek) in der Datei indicator-session-0.1.7/src/gtk-dialog/logout-dialog.c , mit der Zuweisung

 logout_dialog->timeout = 60;

(Zeile 258) - Wenn man nun diesen Wert nach Wunsch anpasst und dann das Paket neu kompiliert, hätte man ja was man wollte.

Allerdings muss man vorher noch die Header installieren, dann noch den Ubuntu-Patch ausführen, schließlich alles installieren, und das hoffentlich alles ohne Fehler. Das war selbst mir zu heiß und umständlich. Also die Frage, gibt es eine andere Möglichkeit ?

  • Möglichkeit 2: Binärdatei patchen:

Eigentlich braucht man doch nur diesen einen Zahlenwert anpassen, nicht wahr .. ?

Gut, wie haben wir das denn damals zu DOS-Zeiten gemacht ? Richtig, den HEX-Editor angeschmissen und die kleinen Bytes gepatcht. Und warum soll das nun bei Uby nicht gehen ? Schließlich ist es ja nur eine einzige Zahl, und wir wissen wo wir suchen müssen. Vielleicht enstpricht das nicht dem Stil der Kunst, ist aber die einfachste Lösung.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

- Also installieren wir einen HEX-Editor: ghex aus den Repo's, am besten mit synaptic

- Da wir jetzt Systemdateien bearbeiten wollen, müssen wir nautilus im Terminal mit "root"-Rechten starten:

gksu nautilus

Achtung: mit root-Rechten können wir natürlich viel kaputt machen. Also bitte vorsichtig, und möglichst bald wieder schließen !

- Wir suchen die Datei gtk-logout-helper im Verzeichnis /usr/lib/indicator-session/ auf und sichern eine Kopie dieser Datei.
(bei mir heißt die dann gtk-logout-helper0 )

- Jetzt können wir den HEX-Editor starten: Rechtsklick auf die Datei gtk-logout-helper , [öffnen mit] → Hex-Editor

- Die gesuchte Zahl "60" ist hexadezimal "00 00 00 3C" (wir haben ja ein 32-bit-System !) oder oktal "74". Also suchen wir danach:

Ungültiges Makro

Dieses Makro ist nicht verfügbar

Diese Zahl kommt zweimal vor, davon ist die zweite die Richtige:

Ungültiges Makro

Dieses Makro ist nicht verfügbar

Und die ändern wir jetzt auf "10", das ist hexadezimal "00 00 00 0A" oder oktal "12":

Ungültiges Makro

Dieses Makro ist nicht verfügbar

und [Datei] - speichern.

- Da wir ja vorsichtige Menschen sind kontrollieren wir am Ende dass auch wirklich nur dieses eine Byte verändert ist:

trackd@ubuntu:~$ cmp -l /usr/lib/indicator-session/gtk-logout-helper0 /usr/lib/indicator-session/gtk-logout-helper
11603  74  12

Wenn das Ergebnis so aussieht ist alles gut: 1 Byte Unterschied, vorher 74 (oktal) - nachher 12 (oktal), genau was wir wollten.
Und sollte etwas schief laufen: wir haben ja noch die Sicherungskopie. (und zur Not installieren wir das Paket indicator-session neu)

track


p.s.: Ergänzungen, Korrekturen und Kommentare willkommen !

Bilder

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Wohnort: Berlin

track schrieb:

p.s.: Ergänzungen, Korrekturen und Kommentare willkommen !

Wiki! Wiki! Wiki! – Das Wiki ist meiner Meinung nach immer der bessere Ort für eine solche Anleitung. Allerdings … Experimente mit Hex-Editoren bei einer Distribution die vornehmlich an Einsteiger adressiert ist … 🙄 hmm…

~jug

Drache

Anmeldungsdatum:
5. April 2007

Beiträge: 2377

hm, ich finds toll… aber wie krieg ich das gleiche auch unter jaunty…?

track

(Themenstarter)
Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

😀
Tja, in Jaunty gibt's das Paket "indicator-session" nicht. - Also musst Du 'rauskriegen welches Programm hinter dem Timer schlummert (in dem Timerfenster: → [Hilfe] - Info normalerweise), dann in welchem Paket das verpackt ist.
(auf http://packages.ubunut.com/de/jaunty/gnome/ einfach ein Paket anklicken und die Suchfunktion bemühen)

Nächster Schritt: das Quellpaket aufrufen (steht rechts im Kasten) und herunterladen. Dann geht das suchen los, ein bisschen versuchen der Struktur im Paket nachzugehen. Dabei wären jetzt natürlich C- Kenntnisse hilfreich...

Und wenn es gut ist findet man dann etwas. 😀
(vor allem den Namen des Pakets und der Datei, der Rest müsste ähnlich gehen wie bei Karmic)

Tja, ich habe nun kein Jaunty, und ich habe auch nicht vor, mir das dafür zu installieren. Das heißt, das Handwerkliche muss Du da selber machen.
(Sorry)

LG,

track

track

(Themenstarter)
Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ergänzung:

Inzwischen gibt es für

  • Möglichkeit 1: selber kompilieren

eine Anleitung im Wiki: GNOME Logouttimer entfernen oder anpassen .
Dort ist genau beschrieben wie man das Quellpaket anpasst und kompiliert.


track

track

(Themenstarter)
Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ergänzung 2:

Bei

  • Möglichkeit 2: Binärdatei patchen

ist genau betrachtet das Suchmuster falsch gewählt. Auf allen x86-PC's werden die Zahlen im Speicher nämlich als Little Endian abgelegt.
(siehe Wiki: http://de.wikipedia.org/wiki/Byte-Reihenfolge)

Das heißt, im Gegensatz zu unsereren normalen Zahlen kommt zuerst die 1-er - Stelle (Byte), dann die 256-er, die 65536-er usw.
- Die Zahl "60" (dezimal) liegt also in Wirklichkeit als "3C 00 00 00" (hex, 32 Bit) vor.

Um exakt zu sein, muss man also nach "3C 00 00 00" suchen.
Bei der 32-Bit- Version ändert sich am Ergebnis nichts, aber bei der 64-Bit- Version von Karmic wird der Unterschied deutlich.

  • Möglichkeit 2: Binärdatei patchen bei Karmic (64-Bit):

Wenn man nach dem Muster "3C 00 00 00" im HEX-Editor sucht:

Ungültiges Makro

Dieses Makro ist nicht verfügbar

kommt man bei der 4. (und letzten) Fundstelle hierher:

Ungültiges Makro

Dieses Makro ist nicht verfügbar

und man braucht hier auch nur die "3C" in "0A" korrigieren, genau wie bei der 32-Bit- Version:

Ungültiges Makro

Dieses Makro ist nicht verfügbar

Damit ist der Countdown auch hier auf 10 Sekunden gändert.

Bei der anschließenden Kontrolle findet sich das geänderte Byte natürlich unter einer anderen Adresse als bei der 32-Bit-Version:

trackd@ubuntu:~$ cmp -l /usr/lib/indicator-session/gtk-logout-helper0 /usr/lib/indicator-session/gtk-logout-helper
13688  74  12


track

Bilder

track

(Themenstarter)
Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ergänzung 3:

Für das Ändern des Logout-Timers gibt es jetzt auch noch die

  • Möglichkeit 3: bequem patchen mit dem Skript timer60patch

Beschreibung und Link stehen hier: http://forum.ubuntuusers.de/topic/logouttimer-in-60-sekunden-ausschalten-einfac/
Das Skript umfasst Ubuntu 9.10 und folgende, in der 32-Bit und 64-Bit Version.

Damit kann man auf jeden Fall weniger falsch machen. -
(Und man muss sich nicht mit den Details der Binärdatei auseinandersetzen)

LG,

track

Antworten |