Hello, new Manjaro user here. Really liking the distro.
I have a little linux experience mostly with headless installs using Raspberry PI’s and Proxmox VM’s. Linux as a desktop is all greek, trying to understand the different modules and how everything works together.
Anyway, I picked up a few low-end tablets and loaded Manjaro GNOME edition which appears to be working well. The tablets are intended to be used throughout my house as a touchscreen interface for home automation (Home Assistant). Chose this route of using Linux tablets so they can also run another package to triangulate BLE devices in the house. Network, touchscreen, and screen brightness all worked out of the box. Figured out how to customize the on-screen keyboard, how to make the volume buttons properly and how to load Chromium in full screen mode. That all works great.
The goal is to have the tablets display a webpage (Home Assistant interface) all the time. In Settings → Power, I’ve disabled automatic suspend and set Blank Screen to never. This keeps the tablet logged in and the webpage displayed all the time.
What I’m having a hard time with is lowering the screen brightness when the tablet is idle. I want the screen to stay on and logged in but would like the screen to dim when the tablet hasn’t been used for a few minutes.
I’ve found the following command sets the screen brightness.
echo 2000 | sudo tee /sys/class/backlight/intel_backlight/brightness
However, have not found a command that can print the user idle time in Manjaro GNOME edition. Tried xprintidle but it does not appear to be compatible. Not sure where to look, there doesn’t appear to be a GNOME extension.
Does anyone have an idea how to print the user idle time? Or is there a module that can run a command after X idle seconds?
Thank you for the help. Tried that in the past and couldn’t get the recommended steps to work.
Found a python script that can obtain the idle time and worked it into a crude auto run script.
nano ~/dimidle.py
#!/usr/bin/env python
import dbus
import subprocess
import os
import time
dim_time = 30 # time to wait before dimming the screen
now_idle = False # flag to indicate if user is currently idle
idle_brightness = 960 # dimmed screen brightness to set when idle
#brightness_before = "19200" # screen brightness before dimming
brightness_file = "/sys/class/backlight/intel_backlight/brightness"
while True:
session_bus = dbus.SessionBus()
bus_object = session_bus.get_object('org.gnome.Mutter.IdleMonitor', '/org/gnome/Mutter/IdleMonitor/Core')
bus_interface = dbus.Interface(bus_object, 'org.gnome.Mutter.IdleMonitor')
idle_time = bus_interface.GetIdletime() / 1000
# print(bus_interface.GetIdletime() / 1000)
# check if user has gone idle
if idle_time >= dim_time and now_idle == False:
# save current brightness
brightness_before = subprocess.run(["cat", brightness_file], capture_output=True, text=True)
# dim the screen
os.system("echo " + str(idle_brightness) + " | sudo tee " + brightness_file)
now_idle = True
# check if user has become active
elif idle_time < dim_time and now_idle == True:
# set brightness to the value before dimming
os.system("echo " + str(brightness_before.stdout.rstrip()) + " | sudo tee " + brightness_file)
now_idle = False
time.sleep(0.5)
nano ~/.config/autostart/dimidle.desktop
[Desktop Entry]
Type=Application
Exec=python ~/dimidle.py
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Autostart dimidle.py
Name=Autostart dimidle.py
Comment[en_US]=autostart dimidle.py to dim the screen when idle
Comment=autostart dimidle.py to dim the screen when idle