View previous topic :: View next topic |
Author |
Message |
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Wed May 31, 2023 10:11 am Post subject: Script nach dem Aufwachen aus Suspend to RAM ausführen |
|
|
Hallo allerseits!
Ich habe einen Logitech-Trackman-Trackball, den ich via folgendem Script auf linkshändige Bedienung einstelle und die Parameter festlege (wird über KDE-Autostart, also eine .desktop-Datei in ./.config/autostart/ beim Login ausgeführt):
Code: | #!/bin/bash
lsusb | grep 'Logitech, Inc. Marble Mouse' &>/dev/null || exit 0
xinput set-button-map "Logitech USB Trackball" 3 2 1 4 5 6 7 8 9
xinput set-prop "Logitech USB Trackball" "libinput Accel Speed" 1.0
xinput set-prop "Logitech USB Trackball" "libinput Scroll Method Enabled" 0 0 1
xinput set-prop "Logitech USB Trackball" "libinput Button Scrolling Button" 9
xinput set-prop "Logitech USB Trackball" "libinput Scrolling Pixel Distance" 40
xinput set-prop "Logitech USB Trackball" "libinput Horizontal Scroll Enabled" 0 |
Seit Neuestem(TM) geht die Einstellung für die Zeigergeschwindigkeit ("libinput Accel Speed") nach dem Aufwachen aus Suspend to RAM verloren, und der Zeiger ist zu lahm (bemerkenswerterweise bleiben die anderen Einstellungen bestehen, also die umgeordneten Knöpfe etc.).
Wenn ich das Script einfach neu ausführe, dann passt's wieder.
Gibt es eine Möglichkeit, das automatisch zu tun? Oder auch das Problem zu beheben, dass überhaupt erst die Einstellung verloren geht? |
|
Back to top |
|
|
Max Steel Advocate
Joined: 12 Feb 2007 Posts: 2267 Location: My own world! I and Gentoo!
|
Posted: Wed May 31, 2023 11:21 am Post subject: |
|
|
mit openrc/elogind ist es einfach über Shellskripte in /lib64/elogind/system-sleep lösbar.
Für systemd-logind müsste das äqulivalent unter /lib64/systemd/logind/systemd-sleep oder so sein... (nochmal verifizieren, hab ich gerade nicht verfügbar)
Die Skripte werden mit Parametern ausgeführt. Und für hibernation wird es einmal "pre hibernate" und einmal "post hibernate" ausgeführt.
Anschließend kann man das ganze so in etwa verwenden:
Code: | #! /bin/bash
case $1/$2 in
pre/hibernate)
grub-set-default 1
sync
umount /boot/efi /boot
;;
post/hibernate)
mount /boot
mount /boot/efi
grub-set-default 0
;;
esac |
Recht simple Mechanik. Funktioniert aber auch erstaunlich einfach.
WEnn du nicht elogind oder systemd verwendest... musst du wohl oder übel ein Skript bauen und die Einstellung für den Hibernate Knopf auf dein Skript zeigen lassen...
Welche Aktionen alle hier bedacht sind kann man hier nachlesen: https://wiki.gentoo.org/wiki/Elogind#Suspend.2FHibernate_Resume.2FThaw_hook_scripts _________________ mfg
Steel
___________________
Heim-PC: AMD Ryzen 5950X, 64GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-1145G7, 16GB RAM, Intel Iris Xe Graphic (leider WSL2) |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1708
|
Posted: Wed May 31, 2023 1:10 pm Post subject: |
|
|
Max Steel wrote: | Für systemd-logind müsste das äqulivalent unter /lib64/systemd/logind/systemd-sleep oder so sein... (nochmal verifizieren, hab ich gerade nicht verfügbar)
|
Code: | /lib/systemd/system-sleep/ |
ist es bei mir mit systemd |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Wed May 31, 2023 6:38 pm Post subject: |
|
|
Alles klar. Ich hab OpenRC im Einsatz hier. Werd ich mal testen. Vielen Dank für den Tip! |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Wed May 31, 2023 7:13 pm Post subject: |
|
|
l3u wrote: | Alles klar. Ich hab OpenRC im Einsatz hier. Werd ich mal testen. Vielen Dank für den Tip! |
Nur zur sicherheit.
Das was Max Steel vorgeschlagen hat funktioniert nur wenn du elogind installiert hast und verwendest.
Das hat nix direkt mit openrc zu tun _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Sat Jun 03, 2023 10:50 am Post subject: |
|
|
Installiert ist das, als Abhängigkeit von irgendwas. Das zieht doch KDE/SDDM eh, wenn man es nicht irgendwie manuell verhindert, oder? |
|
Back to top |
|
|
Max Steel Advocate
Joined: 12 Feb 2007 Posts: 2267 Location: My own world! I and Gentoo!
|
Posted: Sat Jun 03, 2023 3:38 pm Post subject: |
|
|
Jo, kde/sddm zieht das mit rein und ist zwar optional es auszubaue aber auch sozusagen "untested behaviour" von den Plasma Leuten, weswegen es default im desktop Profil aktiviert ist... so wie ich das verstehe.
Also viel Erfolg. _________________ mfg
Steel
___________________
Heim-PC: AMD Ryzen 5950X, 64GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-1145G7, 16GB RAM, Intel Iris Xe Graphic (leider WSL2) |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Sun Jun 04, 2023 6:18 am Post subject: |
|
|
So, okay. Jetzt hab ich's endlich mal gestestet ;-)
Funktioniert so weit, wenn ich einfach ein entsprechendes Script in /lib64/elogind/system-sleep speichere. Aber das Problem ist, dass dieses Script von root ausgeführt wird.
Gibt es eine Möglichkeit, das pro angemeldetem User zu machen? Also ohne jetzt z. B. eine who-Liste durchzugehen, und dann via su als der entsprechende User zu agieren? |
|
Back to top |
|
|
Max Steel Advocate
Joined: 12 Feb 2007 Posts: 2267 Location: My own world! I and Gentoo!
|
Posted: Tue Jun 06, 2023 9:21 am Post subject: |
|
|
Hmmmm.... Ich glaube da wirst du kaum Glück haben...
Du könntest versuchen ob du ein "user-suid" Skript ablegst das mit loginctl abcheckt ob dein User eine X-Session betreibt um dann bei diesem die entsprechenden Settings zu setzen... Aber viel besseres fällt mir gerade nicht ein. Ich hab leider keine User-xdg-sleep Einstellung auf die Schnelle gefunden.
elogind wurde ja als systemd-logind aus systemd rausgeschnitten... Also möglich dass es das nicht gibt (als teil von systemd weg geflogen)... aber auch möglich dass eine entsprechende User-Schnittstelle angefügt wurde. Aber ich habe dazu nichts gefunden.
Ich finds schade dass Plasma beispielsweise keine User-Skripte nach elogind hibernate/sleep ausführen lassen können... So wie ich das sehe. _________________ mfg
Steel
___________________
Heim-PC: AMD Ryzen 5950X, 64GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-1145G7, 16GB RAM, Intel Iris Xe Graphic (leider WSL2) |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Tue Jun 06, 2023 4:27 pm Post subject: |
|
|
Auch wenn es l3u vermutlich nicht helfen wird. Nur als allgemeine Info:
Mit systemd selbst scheint es möglich zu sein. Da kann man user "services" starten beim suspend oder resume.
https://wiki.archlinux.org/title/Power_management#Sleep_hooks _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Tue Jun 06, 2023 4:35 pm Post subject: |
|
|
Für kde plasma gäbe folgende alternative.
Man könnte ein script ausführen lassen beim "screen saver" "Screen unlocked"
Zu finden in den system settings -> Notifications
Application-specific settings: Configure... > System Services > Screen Saver > Configure Events
Hätte nur den nachteil das es dann immer laufen würde wenn auch so ein screen unlock passiert _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Tue Jun 06, 2023 4:40 pm Post subject: |
|
|
l3u wrote: | So, okay. Jetzt hab ich's endlich mal gestestet
Funktioniert so weit, wenn ich einfach ein entsprechendes Script in /lib64/elogind/system-sleep speichere. Aber das Problem ist, dass dieses Script von root ausgeführt wird.
Gibt es eine Möglichkeit, das pro angemeldetem User zu machen? Also ohne jetzt z. B. eine who-Liste durchzugehen, und dann via su als der entsprechende User zu agieren? |
Mit /lib64/elogind/system-sleep kann man auch mit sudo/su scripte als einen bestimmten nutzer starten lassen. Nur dadurch funktioniert keinerlei kommunikation mit einer aktiven X11-Session.
Wenn es nur ein fixer nutzer ist und im falle eines resumes immer nur eine X11 Session läuft könnte man da was hardcoden
https://unix.stackexchange.com/questions/697311/running-an-script-as-user-after-resuming-from-suspend/697426#697426 _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Sun Jun 11, 2023 7:22 pm Post subject: |
|
|
So ein Sch… mich würde ja vor allem interessieren, warum das jetzt auf einmal so ist, nachdem ich jahrelang glücklich suspendet und resumet habe, und der sch… Trackball seine Einstellungen eben NICHT vergessen hat … |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Mon Jun 19, 2023 11:17 am Post subject: |
|
|
Ich hab grad festgestellt, dass es gar nicht Suspend und Wakeup ist, was das Problem verursacht.
Es reicht schon, wenn der Rechner läuft, und der Bildschirm geht aus (resp. der Bildschirmschoner an). Hinterher geht die Einstellung zur Mauszeigergeschwindigkeit (xinput set-prop "Logitech USB Trackball" "libinput Accel Speed" 1.0) verloren und muss neu gesetzt werden.
Wo kommt denn das her?! Das war früher nicht so (TM) |
|
Back to top |
|
|
|