Membuat LightDM Berjalan pada External Monitor
Problem
Setup laptop ThinkPad saya sekarang lebih banyak dalam keadaan lid-closed (layar tertutup). Secara default, LightDM akan ditampilkan pada primary monitor, karena laptop saya dalam keadaan tertutup, saya ingin menampilkannya pada external monitor. Sehingga lid akan tetap menutup ketika login.
Solusi
Saya menggunakan display manager atau session manager seperti LightDM, yang masih mendukung Xorg. Xorg diperlukan karena saya akan menjalankan script yang berisi perintah Xrandr untuk memodifikasi display output antar monitor. Karena pada LightDM sendiri tidak terdapat pengaturan display output.
Strategi
Saya membagi proses login menjadi dua tahap.
- pre-login, adalah proses dimana LightDM akan ditampilkan.
- post-login, adalah proses setelah login dan masuk ke desktop.
Pre-login
Proses ini adalah proses dimana LightDM perlu dikonfigurasi untuk diarahkan mau dikeluarkan di external monitor.
1. Daftarkan script pada konfigurasi LightDM
Untuk mendaftarkan script pada LightDM, saya perlu mengubah isi dari /etc/lightdm/lightdm.conf
.
Cari properti display-setup-script=
pada section [Seat:*]
dan isi valuenya dengan path dari script.
1...2...34[Seat:*]5...6...7display-setup-script=/etc/lightdm/display-setup.sh89...10...
Saya akan membuat script pada direktori /etc/lightdm/
dengan nama display-setup.sh
.
2. Pastikan nama interface output
Sebelum membuat script display-setup.sh
, pastikan terlebih dahulu nama interface external monitor yang akan digunakan. Apakah mengandung simbol dash atau tidak? HDMI-1
atau HDMI1
.
Jalankan perintah berikut ini untuk mengetahui jumlah dan nama interface monitor.
$ xrandr --listmonitors
Monitors: 2
0: +*eDP1 1920/280x1080/160+0+0 eDP1
1: +HDMI2 1920/480x1080/260+0+0 HDMI2
Saya memiliki 2 buah monitor.
eDP1
adalah interface display dari laptop saya.
HDMI2
adalah interface display dari external monitor.
Setelah mengetahui nama interface dari external monitor, saatnya membuat script.
3. Buat script display-setup.sh
Masuk ke direktori /etc/lightdm
.
$ cd /etc/lightdm
Buat file baru dengan nama display-setup.sh
.
$ sudo touch display-setup.sh
Buat jadi executable.
$ sudo chmod +x display-setup.sh
Sekarang buka dan isi scriptnya akan seperti ini.
1#!/bin/bash23EXTERNAL=$(xrandr | grep " connected" | grep -E "DVI-I|HDMI|DisplayLink" | cut -d" " -f1 | head -n1)4if [ -n "$EXTERNAL" ]; then5 xrandr --output "$EXTERNAL" --primary --auto --output eDP1 --off6fi
Pada script di atas,
- saya mendefinisikan variable
EXTERNAL
untuk external monitor yang mengandung kata “DVI-I”, “HDMI”, atau “DisplayLink”. - jika
EXTERNAL
valuenya exist, maka jalankanxrandr
command untuk membuat outputEXTERNAL
sebagai primary monitor dan mematikan output dari internal monitor.
Selesai.
Dengan begini, tidak perlu membuka lid laptop untuk login.
Post Login
Proses ini adalah proses setelah login dan akan memasuki desktop. Saya perlu mengarahkan desktop agar menampilkan gambar pada external monitor.
1. Tambahkan command xrandr pada .xprofile
Pada LightDM command pada post-login akan dibaca dari $HOME/.xprofile
. Maka dari itu, saya akan menambahkan command xrandr yang mengatur tampilan external monitor.
1...2...34# external monitor5EXTERNAL=$(xrandr | grep " connected" | grep -E "DVI-I|HDMI|DisplayLink" | cut -d" " -f1 | head -n1)6if [ -n "$EXTERNAL" ]; then7 sleep 58 xrandr --output "$EXTERNAL" --primary --auto --output eDP1 --off9fi
Dengan begini, setelah login dari LightDM, ketika masuk desktop akan dibawa ke external monitor.
Selesai.
Opsional: Cara mencegah jika laptop jatuh pada kondisi standby saat lid-closed pada waktu login
Jika lid-closed membuat sistem menjadi standby pada saat login, perlu juga dilakukan konfigurasi pada file /etc/systemd/logind.conf
.
Rubah value dari properti HandleLidSwitch
jadi ignore
.
1...2...34[Login]5...6...7HandleLidSwitch=ignore
Kemudian restart servicenya.
$ sudo systemctl restart systemd-logind
Selesai.