Membuat mode malam dengan xrandr di Arch Linux


insert_invitation Tanggal: Senin, 25 Januari 2021. 08:40:17 WIB
perm_contact_calendar Penulis: selene
local_offer Tags: Linux, Programming, shell


Hai!
Selamat pagi teman-teman semua, semoga selalu sehat selalu ya…

Gunakan daftar isi diatas & shortcut CTRL+F untuk memudahkan pencarian konten.


Masalah

Pada malam hari biasanya saya mematikan lampu ruangan.

Ketika saya mengoperasikan komputer pada malam hari dengan kondisi lampu dimatikan rasanya brightness layar terlalu besar, panas dimata, padahal settingan brightness paling kecil di layar laptop sudah mentok.

Nah, akhirnya saya kepikiran membuat screen dimmer sederhana dengan xrandr, lebih jauh saya menemukan xrandr bisa set screen gamma, jadi juga bisa membuat overlay kemerahan seperti software - software mode malam / night mode lain pada umumnya.


Konsep

Seperti pada post sebelumnya tentang “Bermain-main dengan xrandr di Arch Linux” caranya kurang lebih sama.

Pertama saya cari device layar laptop terlebih dahulu:

% xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
DVI-0 disconnected primary (normal left inverted right x axis y axis)
LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1280x800      60.00*+  50.00  
   1280x720      59.97  
   1152x768      59.95  
   1024x768      59.95  
   800x600       59.96  
   848x480       59.94  
   720x480       59.94  
   640x480       59.94  
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)

Terlihat layar laptop saya di perangkat LVDS.
Selanjutnya saya bisa memodifikasi output di perangkat LVDS dengan xrandr.



Brightness
Demo menurunkan brightness dengan xrandr:

% xrandr --output LVDS --brightness 0.5

Demo menaikkan brightness dengan xrandr:

% xrandr --output LVDS --brightness 2.0

Demo reset brightness dengan xrandr:

% xrandr --output LVDS --brightness 1.0



Gamma
Demo dominan merah dengan xrandr (value 1):

% xrandr --output LVDS --gamma 2.0:0.5:0.5

Demo dominan hijau dengan xrandr (value 2):

% xrandr --output LVDS --gamma 0.5:2.0:0.5

Demo dominan biru dengan xrandr (value 3):

% xrandr --output LVDS --gamma 0.5:0.5:2.0

Demo reset gamma layar dengan xrandr:

% xrandr --output LVDS --gamma 1.0:1.0:1.0



Demo set gamma layar & set brightness dengan xrandr:

% xrandr --output LVDS --gamma 2.0:1.0:1.0 --brightness 0.8


Scripting program mode malam sederhana

Dari info konsep diatas, kita bisa membuat shell script sederhana untuk mengimplementasikan konsep tersebut.
Berikut shell script yang saya buat dengan nama modemalam.sh:

#!/bin/sh
# Shell script sederhana untuk mode malam otomatis dengan xrandr

# Mencari jam saat ini
jam=$(date +"%H")

# Ganti device LVDS sesuai device layar perangkat
xrandr_set() {
    xrandr --output LVDS --gamma $1 --brightness $2
}

if [[ "$1" == 'stop' ]];then
    echo "modemalam.sh reset"
    xrandr_set 1.0:1.0:1.0 1.0
    pgrep ${0##*/} | xargs kill
else
    echo "modemalam.sh berjalan"
    while true
    do
        if [ $jam -lt 16 ];then
            xrandr_set 1.0:1.0:1.0 1.0
        elif [ $jam -lt 18 ];then
            xrandr_set 1.0:1.0:0.95 1.0
        elif [ $jam -lt 20 ];then
            xrandr_set 1.0:1.0:0.90 1.0
        elif [ $jam -lt 22 ];then
            xrandr_set 1.0:0.9:0.60 0.9
        elif [ $jam -lt 23 ];then
            xrandr_set 1.2:0.80:0.45 0.75
        elif [ $jam -lt 1 ];then
            xrandr_set 1.4:0.60:0.25 0.55
        elif [ $jam -lt 2 ];then
            xrandr_set 1.2:0.80:0.55 0.75
        elif [ $jam -lt 3 ];then
            xrandr_set 1.0:0.80:0.65 0.8
        elif [ $jam -lt 5 ];then
            xrandr_set 1.0:0.70:0.55 0.75
        fi
        # refresh setiap 10 menit, tidak membebani CPU
        sleep 600
    done &
fi

Instalasi:

  1. Copy shell script tersebut
  2. Buat file baru dengan nama modemalam.sh
  3. Paste hasil copy ke file baru, lalu simpan
  4. Set file tersebut executable
% chmod +x modemalam.sh

Penggunaan:

  1. Menjalankan modemalam.sh
% ./modemalam.sh
  1. Menghentikan modemalam.sh
% ./modemalam.sh stop

Teman-teman bebas memodifikasi shell script tersebut, bisa disesuaikan device perangkat layar & set settingan xrandr sesuka hati. 😁😁😁


Penutup

Begitulah cara membuat mode malam sederhana dengan xrandr di Arch Linux, semoga isi post ini bisa bermanfaat buat teman-teman semua.


arrow_drop_up ke atas arrow_drop_up