feat: switch to XScreenSaver for less OLED burn-in

This commit is contained in:
dabruh 2024-02-29 12:30:23 +01:00
parent 80fe2b4c0a
commit 88a99772e0
5 changed files with 306 additions and 44 deletions

View File

@ -2,11 +2,12 @@
exec_always --no-startup-id xss-lock --transfer-sleep-lock -- i3exit lock
# lock screen after inactivity
exec_always --no-startup-id pgrep -x xscreensaver || xscreensaver &
exec --no-startup-id dmenuxautolock -t $lock_after_min -n $lock_notify_sec
bindsym $mod+Ctrl+Shift+l exec --no-startup-id dmenuxautolock -t 0 -n 0
# Run i3hwlock
exec_always --no-startup-id pgrep i3hwlock || i3hwlock
exec_always --no-startup-id pgrep -x i3hwlock || i3hwlock
# Start authentication agent
exec_always --no-startup-id $auth_agent

298
.config/xscreensaver/config Normal file
View File

@ -0,0 +1,298 @@
# XScreenSaver Preferences File
# https://www.jwz.org/xscreensaver/
timeout: 0:01:00
cycle: 0:01:00
lock: False
lockTimeout: 0:00:00
passwdTimeout: 0:00:30
visualID: default
installColormap: True
verbose: False
timestamp: True
splash: True
splashDuration: 0:00:05
demoCommand: xscreensaver-demo
prefsCommand:
nice: 10
memoryLimit: 0
fade: True
unfade: False
fadeSeconds: 0:00:02
fadeTicks: 20
captureStderr: True
ignoreUninstalledPrograms:False
font: *-medium-r-*-140-*-m-*
dpmsEnabled: False
dpmsQuickOff: False
dpmsStandby: 2:00:00
dpmsSuspend: 2:00:00
dpmsOff: 4:00:00
grabDesktopImages: False
grabVideoFrames: False
chooseRandomImages: False
imageDirectory:
mode: random
selected: 50
textMode: url
textLiteral: XScreenSaver
textFile:
textProgram: fortune
textURL: https://feeds.feedburner.com/ubuntu-news
programs: \
- maze -root \n\
- GL: sphereeversion -root \n\
- GL: superquadrics -root \n\
- attraction -root \n\
- blitspin -root \n\
- greynetic -root \n\
- helix -root \n\
- hopalong -root \n\
- imsmap -root \n\
- noseguy -root \n\
- pyro -root \n\
- qix -root \n\
- rocks -root \n\
- rorschach -root \n\
- decayscreen -root \n\
- flame -root \n\
- halo -root \n\
slidescreen -root \n\
- pedal -root \n\
- bouboule -root \n\
- braid -root \n\
- coral -root \n\
- deco -root \n\
- drift -root \n\
- fadeplot -root \n\
- galaxy -root \n\
- goop -root \n\
- grav -root \n\
- ifs -root \n\
- unicode -root \n\
- GL: jigsaw -root \n\
- julia -root \n\
- kaleidescope -root \n\
- GL: moebius -root \n\
- moire -root \n\
- GL: morph3d -root \n\
- mountain -root \n\
- munch -root \n\
- penrose -root \n\
- GL: pipes -root \n\
- rd-bomb -root \n\
- GL: rubik -root \n\
- sierpinski -root \n\
- slip -root \n\
- GL: sproingies -root \n\
- starfish -root \n\
- strange -root \n\
- swirl -root \n\
- triangle -root \n\
- xjack -root \n\
xlyap -root \n\
- GL: atlantis -root \n\
- bsod -root \n\
- GL: bubble3d -root \n\
- GL: cage -root \n\
- crystal -root \n\
- cynosure -root \n\
- discrete -root \n\
- distort -root \n\
- epicycle -root \n\
- flow -root \n\
- GL: glplanet -root \n\
- interference -root \n\
- kumppa -root \n\
- GL: lament -root \n\
- moire2 -root \n\
- GL: sonar -root \n\
- GL: stairs -root \n\
- truchet -root \n\
- vidwhacker -root \n\
- blaster -root \n\
- bumps -root \n\
- ccurve -root \n\
- compass -root \n\
- deluxe -root \n\
- demon -root \n\
- GL: extrusion -root \n\
- loop -root \n\
- penetrate -root \n\
- petri -root \n\
- phosphor -root \n\
- GL: pulsar -root \n\
- ripples -root \n\
- shadebobs -root \n\
- GL: sierpinski3d -root \n\
- spotlight -root \n\
- squiral -root \n\
- wander -root \n\
- webcollage -root \n\
- xflame -root \n\
- xmatrix -root \n\
- GL: gflux -root \n\
- nerverot -root \n\
- xrayswarm -root \n\
- xspirograph -root \n\
- GL: circuit -root \n\
- GL: dangerball -root \n\
- GL: engine -root \n\
- GL: flipscreen3d -root \n\
- GL: gltext -root \n\
- GL: menger -root \n\
- GL: molecule -root \n\
- rotzoomer -root \n\
scooter -root \n\
- speedmine -root \n\
- GL: starwars -root \n\
- GL: stonerview -root \n\
- vermiculate -root \n\
- whirlwindwarp -root \n\
- zoom -root \n\
- anemone -root \n\
- apollonian -root \n\
- GL: boxed -root \n\
- GL: cubenetic -root \n\
- GL: endgame -root \n\
- euler2d -root \n\
- fluidballs -root \n\
- GL: flurry -root \n\
- GL: glblur -root \n\
- GL: glsnake -root \n\
- halftone -root \n\
- GL: juggler3d -root \n\
- GL: lavalite -root \n\
- polyominoes -root \n\
- GL: queens -root \n\
- GL: sballs -root \n\
- GL: spheremonics -root \n\
- thornbird -root \n\
- twang -root \n\
- GL: antspotlight -root \n\
- apple2 -root \n\
- GL: atunnel -root \n\
- barcode -root \n\
- GL: blinkbox -root \n\
- GL: blocktube -root \n\
- GL: bouncingcow -root \n\
- cloudlife -root \n\
- GL: cubestorm -root \n\
- eruption -root \n\
- GL: flipflop -root \n\
- GL: flyingtoasters -root \n\
- fontglide -root \n\
- GL: gleidescope -root \n\
- GL: glknots -root \n\
- GL: glmatrix -root \n\
- GL: glslideshow -root \n\
- GL: hypertorus -root \n\
- GL: jigglypuff -root \n\
- metaballs -root \n\
- GL: mirrorblob -root \n\
- piecewise -root \n\
- GL: polytopes -root \n\
- pong -root \n\
- popsquares -root \n\
- GL: surfaces -root \n\
- xanalogtv -root \n\
- abstractile -root \n\
- anemotaxis -root \n\
- GL: antinspect -root \n\
- fireworkx -root \n\
- fuzzyflakes -root \n\
- interaggregate -root \n\
- intermomentary -root \n\
- memscroller -root \n\
- GL: noof -root \n\
- pacman -root \n\
- GL: pinion -root \n\
- GL: polyhedra -root \n\
- GL: providence -root \n\
- substrate -root \n\
- wormhole -root \n\
- GL: antmaze -root \n\
- GL: boing -root \n\
- boxfit -root \n\
- GL: carousel -root \n\
- celtic -root \n\
- GL: crackberg -root \n\
- GL: cube21 -root \n\
- fiberlamp -root \n\
- GL: fliptext -root \n\
- GL: glhanoi -root \n\
- GL: tangram -root \n\
- GL: timetunnel -root \n\
- GL: glschool -root \n\
- GL: topblock -root \n\
- GL: cubicgrid -root \n\
- cwaves -root \n\
- GL: gears -root \n\
- GL: glcells -root \n\
- GL: lockward -root \n\
m6502 -root \n\
- GL: moebiusgears -root \n\
- GL: voronoi -root \n\
- GL: hypnowheel -root \n\
- GL: klein -root \n\
- lcdscrub -root \n\
- GL: photopile -root \n\
- GL: skytentacles -root \n\
- GL: rubikblocks -root \n\
- GL: companioncube -root \n\
- GL: hilbert -root \n\
- GL: tronbit -root \n\
- GL: geodesic -root \n\
- hexadrop -root \n\
- GL: kaleidocycle -root \n\
- GL: quasicrystal -root \n\
- GL: unknownpleasures -root \n\
binaryring -root \n\
- GL: cityflow -root \n\
- GL: geodesicgears -root \n\
- GL: projectiveplane -root \n\
- GL: romanboy -root \n\
- tessellimage -root \n\
- GL: winduprobot -root \n\
- GL: splitflap -root \n\
- GL: cubestack -root \n\
- GL: cubetwist -root \n\
- GL: discoball -root \n\
- GL: dymaxionmap -root \n\
- GL: energystream -root \n\
- GL: hexstrut -root \n\
- GL: hydrostat -root \n\
- GL: raverhoop -root \n\
- GL: splodesic -root \n\
- GL: unicrud -root \n\
- GL: esper -root \n\
- GL: vigilance -root \n\
- GL: crumbler -root \n\
- filmleader -root \n\
- glitchpeg -root \n\
- GL: handsy -root \n\
- GL: maze3d -root \n\
- GL: peepers -root \n\
- GL: razzledazzle -root \n\
- vfeedback -root \n\
- GL: deepstars -root \n\
- GL: gravitywell -root \n\
- GL: beats -root \n\
- GL: covid19 -root \n\
- GL: etruscanvenus -root \n\
- GL: gibson -root \n\
- GL: headroom -root \n\
pointerPollTime: 0:00:05
pointerHysteresis: 10
windowCreationTimeout:0:00:30
initialDelay: 0:00:00
GetViewPortIsFullOfLies:False
procInterrupts: True
xinputExtensionDev: False
overlayStderr: True
authWarningSlack: 20

View File

@ -1,12 +1,12 @@
pacman-base:acpi wget curl # Required for setup_system.sh
pacman-any:i3-gaps feh i3status network-manager-applet pasystray xautolock inotify-tools xss-lock noto-fonts-emoji
pacman-any:i3-gaps feh i3status network-manager-applet pasystray xscreensaver xautolock inotify-tools xss-lock noto-fonts-emoji
pacman-any:arandr code dunst flameshot kitty ranger scrot thunar tmux ufw vim zsh
pacman-any:gst-libav phonon-qt5-gstreamer gst-plugins-good qt5-quickcontrols qt5-graphicaleffects qt5-multimedia
pacman-type-hasbattery:brightnessctl
aur-any:picom-git sddm-theme-aerial-git
apt-base:acpi wget curl ca-certificates gnupg lsb-release # Required for setup_system.sh
apt-any:i3 feh i3status nm-tray pasystray xautolock inotify-tools xss-lock fonts-noto-color-emoji fonts-hack-ttf xclip
apt-any:i3 feh i3status nm-tray pasystray xscreensaver xautolock inotify-tools xss-lock fonts-noto-color-emoji fonts-hack-ttf xclip
apt-any:docker-ce docker-ce-cli containerd.io docker-compose-plugin
apt-any:arandr chromium-browser codium dunst flameshot kitty ranger scrot thunar tmux ufw vim zsh
apt-any:libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libxcb-glx0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libpcre3-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev meson

View File

@ -7,49 +7,13 @@
# with openrc use loginctl
[[ $(cat /proc/1/comm) == "systemd" ]] && logind=systemctl || logind=loginctl
LOCK_SCREEN_BLUR=${LOCK_SCREEN_BLUR:-false}
LOCK_SCREEN_COLOR=${LOCK_SCREEN_COLOR:-29414f}
I3LOCK_RE="i3lock -(c|i) "
_lock() {
i3lock -c "$LOCK_SCREEN_COLOR"
}
_unlock() {
pkill -u "$USER" -f "$I3LOCK_RE"
}
is_locked() {
pgrep -u "$USER" -f "$I3LOCK_RE" >/dev/null
}
lock() {
local abort=false screen=/tmp/screenshot.png blurred=/tmp/screenshotblur.png
$LOCK_SCREEN_BLUR && sleep 0.25 && scrot -q 100 $screen # Take screenshot
_lock # Lock immediately
if [ -f $screen ]; then
# Blur screenshot
scrot -q 100 $screen || abort=true # Larger file size, but faster
convert -scale 10% -blur 0x1.25 -resize 1000% $screen $blurred || abort=true
rm $screen
$abort && return 1
# Now try to replace the solid color with the blurred image.
_unlock
i3lock -i $blurred || _lock
fi
# Add a small delay to prevent possible race conditions with suspend
sleep 1
function lock() {
xscreensaver-command -lock
}
case "$1" in
lock)
is_locked || lock
lock
;;
logout)
i3-msg exit
@ -58,11 +22,9 @@ case "$1" in
dm-tool switch-to-greeter
;;
suspend)
export LOCK_SCREEN_BLUR=false
lock && $logind suspend
;;
hibernate)
export LOCK_SCREEN_BLUR=false
lock && $logind hibernate
;;
reboot)

1
.xscreensaver Symbolic link
View File

@ -0,0 +1 @@
.config/xscreensaver/config