laptop Dell saya mengalami bug ini dengan kernel 3.14. Sebagai solusinya saya menulis naskah sederhana
/ usr / bin / fix-fix:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(dan membuat executable: chmod +x /usr/bin/brightness-fix
)
dan layanan systemd memanggilnya yang dijalankan saat startup:
/etc/systemd/system/brightness-fix.service
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=forking
ExecStart=/usr/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
#RemainAfterExit=yes
#SysVStartPriority=99
[Install]
WantedBy=multi-user.target
dan diaktifkan: systemctl enable /etc/systemd/system/brightness-fix.service
Itu berfungsi seperti pesona dan saya dapat mengontrol kecerahan layar saya seperti yang diinginkan. Masalahnya muncul ketika laptop melanjutkan setelah masuk ke mode tidur (misalnya ketika menutup bibir laptop): kontrol kecerahan tidak berfungsi lagi kecuali saya secara manual menjalankan skrip fisrt saya di atas:/usr/bin/brightness-fix
Bagaimana saya bisa membuat layanan systemd lain seperti milik saya di atas yang akan dieksekusi pada waktu resume?
EDIT:
Menurut komentar di bawah ini saya telah memodifikasi saya brightness-fix.service
seperti ini:
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=oneshot
ExecStart=/usr/local/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=multi-user.target sleep.target
juga saya telah menambahkan echo "$1 $2" > /home/luca/br.log
ke skrip saya untuk memeriksa apakah itu benar-benar dieksekusi. Script itu sebenarnya dieksekusi juga di resume ( post suspend
) tetapi tidak berpengaruh (backlit 100% dan tidak dapat diubah). Saya juga mencoba masuk $DISPLAY
dan $USER
dan, pada waktu resume, semuanya kosong. Jadi tebakan saya adalah bahwa skrip dieksekusi terlalu dini ketika bangun dari tidur. Ada petunjuk?
WantedBy=sleep.target
.../usr/local/bin
tidak/usr/bin
. direktori itu dicadangkan untuk manajer paket saja.sleep.target
akan menjalankan unit saat komputer tidur, bukan ketika itu dilanjutkan. Lihat jawaban saya di bawah untuk file unit yang bekerja untuk saya dengan masalah yang sama.Jawaban:
Saya tahu ini adalah pertanyaan lama, tetapi file unit berikut ini berfungsi agar saya menjalankan skrip setelah melanjutkan dari tidur:
Saya percaya itu
After=suspend.target
yang membuatnya berjalan pada resume, bukan ketika komputer pergi tidur.sumber
After=suspend.target
di Unit danWantedBy=multi-user.target sleep.target
di Instal .Sebagai alternatif untuk menulis dan mengaktifkan file unit, Anda juga dapat memasukkan skrip shell (atau symlink ke skrip Anda)
/lib/systemd/system-sleep/
.Ini akan dipanggil sebelum tidur / hibernasi, dan pada waktu melanjutkan.
Dari
man systemd-suspend.service
:Uji dengan ini:
sumber
/usr/lib
tetapi semua contoh Anda merujuk ke file di bawah/lib
system-sleep
direktori tersebut tampaknya berada di/lib/systemd/
, dan/usr/lib/systemd
berisi hal-hal lain.Tindak lanjuti jawaban mivk, di mana saya menghindari mucking dengan file unit baru (lihat pertanyaan saya di sini Bagaimana bereaksi terhadap peristiwa tutup laptop? ). Inilah solusi saya; itu tidak 100% langsung ( menghela nafas ) karena sistem tidak stabil ketika keluar dari tidur:
Pada kotak Fedora 26 saya menaruh symlink di sini:
/usr/lib/systemd/system-sleep/sleepyhead
yang menunjuk di sini/root/bin/sleepyhead
:, yang berisi:The
/root/bin/trackpoint
Script berikut. Perhatikan bahwa tidur pertama sangat penting. Perangkat diatur setiap kali tutupnya dibuka, sehingga tidak ada pada awalnya. Jika saya mencoba melakukan sesuatu selain tidur, skrip "sleepyhead" membutuhkan waktu sangat lama untuk keluar dan pointer saya akan dibekukan selama setidaknya 60 detik. Selain itu, perhatikan bahwa Anda tidak dapat menempatkan/root/bin/trackpoint
skrip di latar belakang disleepyhead
atas. Jika Anda melakukannya, prosesnya akan mati ketikasleepyhead
keluar.sumber