Χαιρετώ την ωραία παρέα! Καλή και ευλογημένη χρονιά σε όλους!
Χρήστης που του αρέσουν οι αυτοματισμοί ακόμη και αν έχουν μικρο-εφαρμογές και κοστίζουν πολύ παπαράνω χρονικά σε σχέση με μία απλή πεζή λύση… Αλλά εντάξει όταν πρόκειται για καθημερινά επαναλαμβανόμενες δουλειές, νομίζω ότι αξίζει η αυτοματοποίησή τους.
Επίσης, είμαι πολύωρος χρήστης των υπολογιστών καθημερινά και κάτοχος γυαλιών οράσεως από ηλικία νηπιαγωγείου, με γενικότερη ευαισθησία στα μάτια (και σίγουρα στις μεταβολές του φωτός και στις κακές αντιθέσεις)
Έτσι λοιπόν όσον αφορά το κομμάτι οθόνες, eye strain, night light κλπ το έχω ψάξει ΠΟΛΥ! Φοράω και blue light filter στα γυαλιά μου (και ναι κάνει διαφορά όταν χρησιμοποιείς πολλές ώρες το PC). Στο παρόν άρθρο πρόκειται να σας δείξω τα softwarικά πράγματα που μπορεί να κάνει κανείς για να βελτιώσει την εμπειρία χρήσης τον οθονών του υπολογιστή καθώς και κάποια άλλα προγραμματισμένα task που μπορούν να γίνονται αυτόματα σε συγκεκριμένες ώρες τις ημέρας.
Ο λόγος γίνεται για το λογισμικό ονόματι gammastep
. Το gammastep
λοιπόν δίνει την δυνατότητα να τρέχει scripts ανάλογα με τις ώρες της ημέρας και την κίνηση του ήλιου. Αυτό μπορεί να γίνει είτε με μια fix τοποθεσία, είτε να τρέχουμε κάποιον daemon στο background για να βρίσκει αυτόματα την τοποθεσία μας και να αναπροσαρμόζει τις ώρες κάθε φορά. (Ανάλογα με τη χρήση που θέλει να κάνει ο καθείς. Αν το βάλεις σε σταθερό που δεν αλλάζει ποτέ θέση, απλά βάζεις custom τοποθεσία και τελειώνεις. Αν από την άλλη είσαι ταξιδιάρης, setάρεις το laptop έτσι ώστε να τραβάει αυτόματα την τοποθεσία και να είναι πάντα σωστά ρυθμισμένο.)
Αντιλαμβάνεστε ότι εφόσον πρόκειται για εκτέλεση script οι δυνατότητες είναι άπειρες.
Πάμε να δούμε ένα πολύ απλό configuration πως μοιάζει. Το αρχείο είναι το ~/.config/gammastep/config.ini
[general]
temp-night=3600
fade=1
gamma=0.8
location-provider=manual
[manual]
lat=40.62
lon=22.94
Οι παρούσες συντεταγμένες είναι της Θεσσαλονίκης
Και το επόμενο βήμα είναι να “ξεκινάμε” το gammastep
στην εκκίνηση του συστήματος. Προσωπικά χρησιμοποιώ sway Window Manager, οπότε στο config του sway απλά προσθέτω την παρακάτω γραμμή.
gammastep-indicator &
(φυσικά είτε έχοντας μπροστά τη λέξη exec
είτε φτιάχνοντας ένα exec {}
block και βάζοντας εκεί μέσα ότι θέλουμε να εκτελεστεί)
Το night light είναι ρυθμισμένο και από εδώ και πέρα θα δουλεύει για τις ώρες ανατολής και δύσης του ηλίου για την τοποθεσία Θεσσαλονίκη.
Το επόμενο που ήθελα να αλλάζω αυτόματα ήταν τα themes. Το πρωί χρησιμοποιώ light themes και το βράδυ χρησιμοποιώ dark themes. (και ψυχολογική η εναλλαγή και βοηθητική για τα μάτια φυσικά) (σπάει λίγο η μονοτονία ρε παιδί μου τόσες ώρες!)
Χρησιμοποιώντας το gammastep
είναι πολύ εύκολο καθώς έχει έναν φάκελο που τον ονομάζει hooks και εκτελεί ό,τι βρει εκεί μέσα δίνοντας τα κατάλληλα ορίσματα στο script.
Εγώ προσωπικά χρησιμοποιώ άλλη μία εντολή, τη run-parts
ώστε σε κάθε αλλαγή να τρέχω ένα σύνολο από scripts. Έτσι ο φάκελος του gammastep μοιάζει κάπως έτσι
gammastep
├── config.ini
├── day.d
│ ├── brightness
│ └── themes
├── hooks
│ └── change
└── night.d
├── brightness
└── themes
Το script change περιέχει τον παρακάτω κώδικα:
#!/bin/bash
if [ $1 == "period-changed" ]; then
case $3 in
daytime)
/usr/bin/run-parts ~/.config/gammastep/day.d;;
night)
/usr/bin/run-parts ~/.config/gammastep/night.d;;
transition)
sudo light -S 30;;
*)
exit 1;;
esac
fi
Αν έχει έρθει η ώρα της ημέρας, τρέχω τον φάκελο day.d
και αντίστοιχα για τη νύχτα, τον φάκελο night.d
. Αν βρίσκεται απλά σε ώρα αλλαγής (transition) αλλάζω μόνο τη φωτεινότητα της οθόνης του laptop) (θα εξηγήσω σε άλλο άρθρο πως τρέχει αυτή η εντολή με sudo χωρίς να δοθεί κωδικός)
Τα θέματα μπορούν να αλλαχτούν σε ένα gnome περιβάλλον την εντολή
gsettings set org.gnome.desktop.interface blah blah blah
Ανάλογα με το τι θέλουμε να πειράξουμε. Εγώ λοιπόν αλλάζω τις ρυθμίσεις στέλνοντας την εκάστοτε εντολή, αλλά αλλάζω και το κομμάτι των θεμάτων στον window manager μου, ώστε αν γίνει επανεκίννηση του wm στο ενδιάμεσο να παραμείνουν τα ίδια θέματα. Επίσης επειδή είμαι σε Wayland ρυθμίζω τα θέματα του Xwayland με το xsettingsd
Το αρχείο λοιπόν μοιάζει κάπως έτσι
#!/bin/env bash
theme="Fluent-grey-light"
icon="Surfn-Numix"
cursor="Simp1e-Breeze"
font="Open Sans"
gsettings set org.gnome.desktop.interface gtk-theme "${theme}"
gsettings set org.gnome.desktop.interface icon-theme "${icon}"
gsettings set org.gnome.desktop.interface cursor-theme "${cursor}"
gsettings set org.gnome.desktop.interface color-scheme prefer-light
echo "# vim:ft=config
exec_always {
gsettings set org.gnome.desktop.interface gtk-theme \"${theme}\"
gsettings set org.gnome.desktop.interface icon-theme \"${icon}\"
gsettings set org.gnome.desktop.interface font-name\"${font}\"
gsettings set org.gnome.desktop.interface cursor-theme \"${cursor}\"
gsettings set org.gnome.desktop.interface color-scheme prefer-light
}
" > ~/.config/sway/themes.conf
# Xsettings
xsettingsd_pid=$(pgrep xsettingsd)
[ -z "${xsettingsd_pid}" ] || kill "${xsettingsd_pid}"
echo "Gtk/CursorTheme \"${cursor}\"
Net/IconThemeName \"${icon}\"
Net/ThemeName \"${theme}\"
" > ~/.config/xsettingsd/xsettingsd.conf
/usr/bin/xsettingsd &
Σημείωση Από τη στιγμή που το gtk4 δεν υποστηρίζει αλλαγή θέματος, η εντολή για την αλλαγή από light σε dark είναι η παρακάτω:
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
και prefer-light
για το ανάποδο.
Σε επόμενο άρθρο χρωστώ (για όποιον δεν θέλει να το ψάξει μόνος του):
- Αυτόματη ρύθμιση τοποθεσίας (hint
geoclue2
) - Ρύμθιση φωτεινότητας εξωτερικής οθόνης που είναι συνδεδεμένη με HDMI ή DP (γενικά με ψηφιακό και όχι αναλογικό τρόπο για να μπορεί να “μιλήσει” με DPMS με την οθόνη) (hint
ddcutil
) - Αλλαγές φόντου (αν και αυτό ποικείλει ανάλογα με το τι περιβάλλον χρησιμοποιούμε)
- Πως μπορεί να ρυθμιστεί ένα plug in που παίζει σε browsers (dark reader) ώστε να αλλάζει ανάλογα με τις αλλαγές των θεμάτων (και πως μπορεί να προστεθούν εξαιρέσεις για συγκεκριμένα site)
Μέχρι τότε, παρατηρήσεις, βελτιώσεις και γόνιμη κουβέντα ευπρόσδεκτα!