diff --git a/bin/emacs_ctl b/bin/emacs_ctl new file mode 100755 index 0000000..b2ab6de --- /dev/null +++ b/bin/emacs_ctl @@ -0,0 +1,72 @@ +#!/bin/bash + +state=/tmp/emacs-use-dark-mode + +start_daemon () { + emacs --fg-daemon > /dev/null 2>&1 +} + +stop_daemon () { + emacsclient --eval "(kill-emacs)" 2> /dev/null +} + +kill_daemon () { + killall emacsclient 2> /dev/null + killall emacs 2> /dev/null +} + +restart_daemon () { + stop_daemon + start_daemon +} + +hard_restart_daemon () { + kill_daemon + start_daemon +} + +set_light () { + echo 0 > "$state" +} + +set_dark () { + echo 1 > "$state" +} + +if [[ -z "$1" ]]; then + echo "Need a command to perform" + exit 1 +elif [[ "$1" == "start" ]]; then + start_daemon & +elif [[ "$1" == "stop" ]]; then + stop_daemon +elif [[ "$1" == "kill" ]]; then + kill_daemon +elif [[ "$1" == "theme" ]]; then + if [[ "$2" == "toggle" ]]; then + # if no state file assume light theme + if [[ ! -f "$state" ]]; then + set_light + elif [[ "$(cat $state)" == 0 ]]; then + set_dark + else + set_light + fi + elif [[ "$2" == "light" ]]; then + set_light + elif [[ "$2" == "dark" ]]; then + set_dark + else + echo 'Invlalid theme command' + exit 1 + fi + if [ "$3" == "restart" ]; then + restart_daemon & + elif [ "$3" == "hard_restart" ]; then + hard_restart_daemon & + fi +else + echo 'Invalid command' + exit 1 +fi +