ตั้งค่า Dark Theme สำหรับสาย Tilling Window Manager: darkman

siamstr Apr 04, 2025

darkman คืออะไร

Darkman เป็นโปรแกรมที่ช่วยควบคุมการเปลี่ยนโหมดสีของเดสก์ท็อประหว่างโหมดมืดและโหมดสว่างบนระบบปฏิบัติการ Unix-like. โปรแกรมนี้จะทำงานในเบื้องหลัง(background process) และสามารถตั้งค่าให้เปลี่ยนไปใช้โหมดมืดเมื่อพระอาทิตย์ตก หรือเปลี่ยนกลับไปใช้โหมดสว่างเมื่อพระอาทิตย์ขึ้นได้

การทำงานของ Darkman

เรียกใช้ผ่าน systemd service หรือคำสั่ง darkman run โดยตรงได้เลย

  1. การตั้งค่าโหมด: Darkman สามารถตั้งค่าโหมดปัจจุบันเป็นโหมดมืดหรือโหมดสว่างได้ด้วยคำสั่ง darkman set <light|dark>.
  2. การตรวจสอบโหมดปัจจุบัน: สามารถตรวจสอบโหมดปัจจุบันได้ด้วยคำสั่ง darkman get.
  3. การสลับโหมด: สามารถสลับโหมดระหว่างโหมดมืดและโหมดสว่างได้ด้วยคำสั่ง darkman toggle.
  4. การทำงานอัตโนมัติ: Darkman จะทำงานอัตโนมัติโดยใช้ข้อมูลตำแหน่งที่ตั้งของระบบเพื่อกำหนดเวลาพระอาทิตย์ขึ้นและตก.
  5. การปรับแต่ง: สามารถเพิ่มสคริปต์เพื่อปรับแต่งการทำงานของโปรแกรมให้เข้ากับแอปพลิเคชันต่างๆ ได้.

การตั้งค่า darkman

  1. สร้างไฟล์ config.yaml ในโฟลเดอร์ ~/.config/darkman/
lat: 13.7563
lng: 100.5018 # ตำแหน่งกรุงเทพ
usegeoclue: false
dbusserver: true
portal: true
  1. การตั้งค่า 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 และปรับเปลี่ยนตามที่กำหนด.

  1. Custom executables

ใน Darkman สามารถเพิ่มการทำงานเพิ่มเติมเมื่อมีการเปลี่ยนโหมดสีของเดสก์ท็อป โดยการวางสคริปต์หรือโปรแกรมที่ต้องการในไดเรกทอรีที่กำหนด

ไดเรกทอรีสำหรับ Custom executables:

  • $XDG_DATA_DIRS/dark-mode.d/: สำหรับสคริปต์ที่ต้องการรันเมื่อเปลี่ยนไปใช้โหมดมืด
  • $XDG_DATA_DIRS/light-mode.d/: สำหรับสคริปต์ที่ต้องการรันเมื่อเปลี่ยนไปใช้โหมดสว่าง

ตัวอย่างการใช้งาน Custom executables:

  1. สร้างสคริปต์สำหรับโหมดมืด:
    • สร้างไฟล์ 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"
  1. สร้างสคริปต์สำหรับโหมดสว่าง:
    • สร้างไฟล์ 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"
  1. ตั้งค่าสิทธิ์การรันสคริปต์:
    • ตั้งค่าสิทธิ์ให้สคริปต์สามารถรันได้:
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/

คุณสามารถสร้างไดเรกทอรีเหล่านี้และเพิ่มสคริปต์ของคุณได้ตามนี้:

  1. สร้างไดเรกทอรี:
    • สร้างไดเรกทอรีสำหรับโหมดมืดและโหมดสว่าง:
mkdir -p ~/.local/share/dark-mode.d
mkdir -p ~/.local/share/light-mode.d

ตัวอย่าง Script ที่ผมใช้

  1. ทำการ export XDG_DATA_DIRS:

โดยทั่วไปเราสามารถตั้งตัวแปร Environments ต่าง ๆ ได้ที่ ~/.profile และตัวแปรทั้งหมดจะถูกโหลดหลังจากเรา Login

export XDG_DATA_DIRS=$HOME/.local/share:/usr/local/share:/usr/share:$XDG_DATA_DIRS

Source: darkman

This post and comments are published on Nostr.

Tags

VΔz

Vin Jakkaphat Linux User👾 FOSS Dev👨‍💻 🍻 Permaculture🌳🌞🐂🐓 Full-time System Engineer Life-time Farmer เป็นเกษตรกรที่เขียนโค้ดได้นิดหน่อย Discord SiamDev: https://discord.gg/x9PHDE249n blog : https://blog.siamstr.com เช่า Server 👉 https://bangmod.cloud