ตั้งค่า Dark Theme สำหรับสาย Tilling Window Manager: darkman
darkman คืออะไร
Darkman เป็นโปรแกรมที่ช่วยควบคุมการเปลี่ยนโหมดสีของเดสก์ท็อประหว่างโหมดมืดและโหมดสว่างบนระบบปฏิบัติการ Unix-like. โปรแกรมนี้จะทำงานในเบื้องหลัง(background process) และสามารถตั้งค่าให้เปลี่ยนไปใช้โหมดมืดเมื่อพระอาทิตย์ตก หรือเปลี่ยนกลับไปใช้โหมดสว่างเมื่อพระอาทิตย์ขึ้นได้
การทำงานของ Darkman
เรียกใช้ผ่าน systemd service หรือคำสั่ง darkman run
โดยตรงได้เลย
- การตั้งค่าโหมด: Darkman สามารถตั้งค่าโหมดปัจจุบันเป็นโหมดมืดหรือโหมดสว่างได้ด้วยคำสั่ง
darkman set <light|dark>
. - การตรวจสอบโหมดปัจจุบัน: สามารถตรวจสอบโหมดปัจจุบันได้ด้วยคำสั่ง
darkman get
. - การสลับโหมด: สามารถสลับโหมดระหว่างโหมดมืดและโหมดสว่างได้ด้วยคำสั่ง
darkman toggle
. - การทำงานอัตโนมัติ: Darkman จะทำงานอัตโนมัติโดยใช้ข้อมูลตำแหน่งที่ตั้งของระบบเพื่อกำหนดเวลาพระอาทิตย์ขึ้นและตก.
- การปรับแต่ง: สามารถเพิ่มสคริปต์เพื่อปรับแต่งการทำงานของโปรแกรมให้เข้ากับแอปพลิเคชันต่างๆ ได้.
การตั้งค่า darkman
- สร้างไฟล์
config.yaml
ในโฟลเดอร์~/.config/darkman/
lat: 13.7563
lng: 100.5018 # ตำแหน่งกรุงเทพ
usegeoclue: false
dbusserver: true
portal: true
- การตั้งค่า portal สำหรับ Darkman
จะช่วยให้โปรแกรมสามารถเปลี่ยนโหมดสีของเดสก์ท็อปได้โดยใช้ XDG settings portal API.
2.1 สร้างไฟล์ portals.conf ในโฟลเดอร์ ~/.config/xdg-desktop-portal/
[preferred]
org.freedesktop.impl.portal.Settings=darkman
2.1 รีสตาร์ท service xdg-desktop-portal เพื่อให้การตั้งค่าใหม่มีผล:
systemctl --user restart xdg-desktop-portal
การตั้งค่านี้จะช่วยให้แอปพลิเคชันต่างๆ บนเดสก์ท็อปสามารถอ่านค่าโหมดสีจาก Darkman และปรับเปลี่ยนตามที่กำหนด.
- Custom executables
ใน Darkman สามารถเพิ่มการทำงานเพิ่มเติมเมื่อมีการเปลี่ยนโหมดสีของเดสก์ท็อป โดยการวางสคริปต์หรือโปรแกรมที่ต้องการในไดเรกทอรีที่กำหนด
ไดเรกทอรีสำหรับ Custom executables:
$XDG_DATA_DIRS/dark-mode.d/
: สำหรับสคริปต์ที่ต้องการรันเมื่อเปลี่ยนไปใช้โหมดมืด$XDG_DATA_DIRS/light-mode.d/
: สำหรับสคริปต์ที่ต้องการรันเมื่อเปลี่ยนไปใช้โหมดสว่าง
ตัวอย่างการใช้งาน Custom executables:
- สร้างสคริปต์สำหรับโหมดมืด:
- สร้างไฟล์
set_dark_mode.sh
ในไดเรกทอรี$XDG_DATA_DIRS/dark-mode.d/
- เพิ่มเนื้อหาดังนี้:
- สร้างไฟล์
#!/bin/bash
# ตัวอย่างสคริปต์สำหรับโหมดมืด
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
notify-send "Dark Mode Activated"
- สร้างสคริปต์สำหรับโหมดสว่าง:
- สร้างไฟล์
set_light_mode.sh
ในไดเรกทอรี$XDG_DATA_DIRS/light-mode.d/
- เพิ่มเนื้อหาดังนี้:
- สร้างไฟล์
#!/bin/bash
# ตัวอย่างสคริปต์สำหรับโหมดสว่าง
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
notify-send "Light Mode Activated"
- ตั้งค่าสิทธิ์การรันสคริปต์:
- ตั้งค่าสิทธิ์ให้สคริปต์สามารถรันได้:
chmod +x $XDG_DATA_DIRS/dark-mode.d/set_dark_mode.sh
chmod +x $XDG_DATA_DIRS/light-mode.d/set_light_mode.sh
เมื่อ Darkman เปลี่ยนโหมด สคริปต์เหล่านี้จะถูกเรียกใช้งานตามที่กำหนด
การแก้ไขหากไม่พบ XDG_DATA_DIRS
หากไม่พบตัวแปร XDG_DATA_DIRS
คุณสามารถสร้างไดเรกทอรีที่จำเป็นเองได้ตามต้องการ โดยปกติแล้ว XDG_DATA_DIRS
จะประกอบด้วยไดเรกทอรีเหล่านี้:
~/.local/share/
/usr/local/share/
/usr/share/
คุณสามารถสร้างไดเรกทอรีเหล่านี้และเพิ่มสคริปต์ของคุณได้ตามนี้:
- สร้างไดเรกทอรี:
- สร้างไดเรกทอรีสำหรับโหมดมืดและโหมดสว่าง:
mkdir -p ~/.local/share/dark-mode.d
mkdir -p ~/.local/share/light-mode.d
- ทำการ export XDG_DATA_DIRS:
โดยทั่วไปเราสามารถตั้งตัวแปร Environments ต่าง ๆ ได้ที่ ~/.profile
และตัวแปรทั้งหมดจะถูกโหลดหลังจากเรา Login
export XDG_DATA_DIRS=$HOME/.local/share:/usr/local/share:/usr/share:$XDG_DATA_DIRS
Source: darkman