You are not logged in.
Pages: 1
Not sure if this should go here or in scripting (the perils of assuming delineated categories and all that), but anyway...
A few days ago, I finally figured out how to control backlight brightness on my laptop (after a year of using Ubuntu, Crunchbang, and Arch on it), after which I spared no time setting up an event handler in ACPI so that brightness would switch between 50 and 976 (the maximum) when AC power was disconnected and connected respectively.
All of that went well, but unfortunately, there is a slight problem: If I boot with AC disconnected, the brightness stays at 976 and doesn't go down to 50 until either I connect and disconnect AC or alter the brightness file myself. The idea I had involved writing a small bash script which got current AC connection status (from /sys/class/power_supply/AC/online) and would change the brightness file to read 50 if online read 0 (script below). Good, that all worked well, I rebooted the computer and tested the script and it did what it was meant to do.
So... the next thing to do was to somehow execute that script automatically. I immediately thought of making either a cronjob or adding it .bashrc or something similar but in my case, this script only needs to be run once... at boot. Well, by pure chance, this was on the very same day that I updated the system only to find that alsa and syslog-ng failed at boot, prompting me to look into the recent updates and Arch init... long story short, I updated my entire system to use systemd natively and got rid of sysinit. Now all I had to do was write a script for systemd that would invoke the backlight script I made earlier (script below). In the interest of keeping this post from becoming any more lengthy (sorry about that), I will merely say: it fails at boot. I did #systemctl enable backlight.service so I assume I scripted something (in the systemd script) wrong.
/home/casey/bin/backlight
#!/bin/bash
BOOL = $(cat /sys/class/power_supply/AC/online) # 0 or 1
if [ $BOOL != 1 ]; then
$(cat /etc/backlight.value > /sys/class/backlight/intel_backlight/brightness) #backlight.value is merely a textfile which read "50"
fi
/etc/systemd/system/backlight.service (I pieced together what I thought was necessary from here)
[Unit]
Description=Determines if AC power exists at boot
[Service]
Type=oneshot
ExecStart=/home/casey/bin/backlight
[Install]
WantedBy=multi-user.target
(As an aside, I do have to say that I quite like systemd and that will probably only continue to increase as I learn more about it)
I do realize there may be a better way to do this, although my primary concern is just coming up with any solution.
Arch/dwm
Offline
I have my backlight set at boot with a udev rule. I tried tmpfiles.d first, but found it to be a bit racy. I would imagine that because udev is also aware of your system's a/c power status, you could also have it adjust your backlight when you [un]plug. Of course, if you are using acpid for other things, then it would make sense to simply use that. But I was able to rid myself of acpid altogether with various things.
Offline
I have my backlight set at boot with a udev rule. I tried tmpfiles.d first, but found it to be a bit racy. I would imagine that because udev is also aware of your system's a/c power status, you could also have it adjust your backlight when you [un]plug. Of course, if you are using acpid for other things, then it would make sense to simply use that. But I was able to rid myself of acpid altogether with various things.
Heh, maybe once I get everything running smoothly I'll look into optimizing it more. After all, if I make it as sleek as possible now, what do I do for fun later?
Care to share your udev rule for the backlight?
Arch/dwm
Offline
Try to add :
After=systemd-udevd.service
in the [Unit] section
Offline
ACTION=="add", KERNEL=="acpi_video0", SUBSYSTEM=="backlight", SUBSYSTEMS=="pci", DRIVERS=="i915", ATTR{brightness}="2"
Offline
Pages: 1