나는 다음 사용자입니다리눅스 민트. 제가 Linux에 자주 갖고 싶었던 기능 중 하나는 macOS 및 모바일 장치에서와 마찬가지로 시간에 따라 밝은 모드와 어두운 모드 사이를 전환하는 기능입니다.
밝은 모드에서 어두운 모드로 전환하기 위해 다음 스크립트를 작성했습니다.
#!/bin/bash
notify-send "Switching to dark mode"
gsettings set org.cinnamon.desktop.wm.preferences theme Mint-Y-Dark
gsettings set org.cinnamon.desktop.interface gtk-theme Mint-Y-Dark
gsettings set org.cinnamon.theme name Mint-Y-Dark
반대 방향으로 가는 또 하나가 있습니다.
#!/bin/bash
gsettings set org.cinnamon.desktop.wm.preferences theme Mint-Y
gsettings set org.cinnamon.desktop.interface gtk-theme Mint-Y
gsettings set org.cinnamon.theme name Mint-Y
현재 저는 두 테마 사이를 전환하고 싶을 때 수동으로 실행합니다.
대부분의 프로그램은 운영 체제 전체의 테마를 존중합니다. 이는 이 접근 방식이 놀라울 정도로 잘 작동한다는 것을 의미합니다! 그러나 이 접근 방식으로 해결하고 싶은 세 가지 문제가 있습니다.
- 시간에 따라 밝은 모드/어두운 모드 사이를 자동으로 전환합니다(macOS에서처럼). 나는 사용해 보았지만
cron
이anacron
목적으로는 잘 작동하지 않습니다. 컴퓨터를 잠시 꺼두었다가 다시 켜면 전환 시간이 지났음을 인식하고 모드 전환을 수행하도록 하고 싶습니다(macOS 및 다양한 모바일 장치에서와 마찬가지로). - 내 터미널(GNOME 터미널, Cinnamon 기본값)을 밝은 테마에서 어두운 테마로(또는 그 반대로) 전환하고 싶습니다.
- 내 텍스트 편집기(Emacs)에 밝은/어두운 테마를 로드하고 싶습니다.
(1)만 있어도 훌륭하게 작동합니다!
답변1
밝은 모드나 어두운 모드를 강제하는 모든 명령이 포함된 스크립트를 사용하는 것이 더 좋습니다. 예는 다음과 같습니다.
#!/bin/bash
function set_light_mode () {
echo "setting light mode"
}
function set_dark_mode () {
echo "setting dark mode"
}
case "$1" in
light)
set_light_mode
;;
dark)
set_dark_mode
;;
*)
light_time="0800"
dark_time="1700"
d="$(date +"%H%M")"
if [ "$d" -ge "$light_time" ] && [ "$d" -lt "$dark_time" ]; then
set_light_mode
else
set_dark_mode
fi
;;
esac
이제 다음을 수행할 수 있습니다.
- 명령을 사용하고 싶을 때마다 실행할 수 있습니다. 첫 번째 인수를 제공하거나
dark
시간light
에 관계없이 X를 설정하십시오. 또는 매개변수를 제공하지 않고 현재 시간에 따라 달라집니다. - 위의 시간(매개변수 없이) 또는 언제든지 crontab에 2개의 항목을 추가하세요. 노트북을 켜면 현재 시간을 기준으로 X 설정이 적용됩니다.
- GUI를 사용하여 즐겨찾는 DE의 "자동 시작 응용 프로그램"에 스크립트(인수 없이)를 실행하는 명령을 추가하세요.이것, 프로세스는 Xfce, Kde, Gnome 등과 유사하며 모두 일부 표준을 따릅니다.사양. 콘솔을 통해서도 이 작업을 수행할 수 있습니다.
send-notify
참고: 위의 X가 실행 중인지 확인하지 않습니다. 귀하의 명령 에는 X가 필요하지 않은 것 같습니다.
DE 또는 일부 프로그램의 테마, 모드 등을 전환하기 위해 위 기능에서 더 많은 명령을 찾아 추가할 수 있으며, 콘솔을 통해 수행할 수 있는 모든 작업은 잘 문서화되어 있습니다.