diff --git a/.config/dtfscripts/services/common.bash b/.config/dtfscripts/services/common.bash index 09af2568..efbfc8f8 100755 --- a/.config/dtfscripts/services/common.bash +++ b/.config/dtfscripts/services/common.bash @@ -8,6 +8,8 @@ service_name="unnamed_service" service_process="true" +service_kill_on_reload="true" +service_flags="" function svc_log() { if [ -z ${1+x} ]; then return 1; fi @@ -15,20 +17,27 @@ function svc_log() { } function prestart() { + if pgrep $service_proccess > /dev/null 2>&1; then + svc_log "Already running" + return 1 + fi if ! which $service_process > /dev/null 2>&1; then svc_log "Could not find process" return 1 fi + if ! prestart-extra; then + return 1 + fi + return 0 +} + +function prestart-extra() { return 0 } function start() { - if ! prestart; then - svc_log "Failed pre-start checks" - return 1 - fi svc_log "Starting" - $service_process > /dev/null 2>&1 & + $service_process $service_flags > /dev/null 2>&1 & return 0 } @@ -48,6 +57,11 @@ function stop() { function isup() { pgrep "$service_process" > /dev/null 2>&1 + isup-extra $? return $? } +function isup-extra() { + return $1 +} + diff --git a/.config/dtfscripts/services/compton.dtf b/.config/dtfscripts/services/compton.dtf index 6dd8c935..c9104da3 100755 --- a/.config/dtfscripts/services/compton.dtf +++ b/.config/dtfscripts/services/compton.dtf @@ -10,14 +10,11 @@ source $DTF_SERVICES_DIR/common.bash service_name="Compton" service_process="compton" -function start() { +function prestart-extra() { if [[ "$HOST" == "vm-*" ]]; then svc_log "Will not start: in a VM" - return 0 - else - svc_log "Starting" - $service_process > /dev/null 2>&1 & - return 0 + return 1 fi + return 0 } diff --git a/.config/dtfscripts/services/conky.dtf b/.config/dtfscripts/services/conky.dtf index 68d143c4..f4af4cb9 100755 --- a/.config/dtfscripts/services/conky.dtf +++ b/.config/dtfscripts/services/conky.dtf @@ -11,10 +11,6 @@ service_name="Conky" service_process="conky" function start() { - if ! prestart; then - svc_log "Failed pre-start checks" - return 1 - fi for file in $XDG_CONFIG_HOME/conky/*.conf; do svc_log "Starting with config $file" conky -c $file > /dev/null 2>&1 & diff --git a/.config/dtfscripts/services/dropbox.dtf b/.config/dtfscripts/services/dropbox.dtf new file mode 100755 index 00000000..ce1a8b80 --- /dev/null +++ b/.config/dtfscripts/services/dropbox.dtf @@ -0,0 +1,13 @@ +#! /usr/bin/env bash +# +# Simple wmstartup service +# Copyright (C) 2018 salt +# +# Distributed under terms of the MIT license. +# + +source $DTF_SERVICES_DIR/common.bash +service_name="Dropbox" +service_process="dropbox" +service_kill_on_reload="false" + diff --git a/.config/dtfscripts/services/polybar.dtf b/.config/dtfscripts/services/polybar.dtf index 04192543..5e8f55d3 100755 --- a/.config/dtfscripts/services/polybar.dtf +++ b/.config/dtfscripts/services/polybar.dtf @@ -11,10 +11,6 @@ service_name="Polybar" service_process="polybar" function start() { - if ! prestart; then - svc_log "Failed pre-start checks" - return 1 - fi export PB_MONITOR=$(xrandr -q | awk '/primary/{print $1}') svc_log "Starting primary on monitor $PB_MONITOR" polybar -r primary& > /dev/null 2>&1 diff --git a/.config/dtfscripts/services/redshift.dtf b/.config/dtfscripts/services/redshift.dtf new file mode 100755 index 00000000..63899c45 --- /dev/null +++ b/.config/dtfscripts/services/redshift.dtf @@ -0,0 +1,13 @@ +#! /usr/bin/env bash +# +# Simple wmstartup service +# Copyright (C) 2018 salt +# +# Distributed under terms of the MIT license. +# + +source $DTF_SERVICES_DIR/common.bash +service_name="Redshift" +service_process="redshift" +service_kill_on_reload="false" + diff --git a/.config/dtfscripts/services/sxhkd.dtf b/.config/dtfscripts/services/sxhkd.dtf index 086679d3..0fc486db 100755 --- a/.config/dtfscripts/services/sxhkd.dtf +++ b/.config/dtfscripts/services/sxhkd.dtf @@ -10,10 +10,7 @@ source $DTF_SERVICES_DIR/common.bash service_name="sxhkd" service_process="sxhkd" -function prestart() { - if ! which $service_process > /dev/null 2>&1; then - svc_log "Could not find process" - fi +function prestart-extra() { if ! pgrep bspwm > /dev/null 2>&1; then svc_log "Not under bspwm" return 1 diff --git a/.config/dtfscripts/services/syncthing.dtf b/.config/dtfscripts/services/syncthing.dtf new file mode 100755 index 00000000..59914f34 --- /dev/null +++ b/.config/dtfscripts/services/syncthing.dtf @@ -0,0 +1,14 @@ +#! /usr/bin/env bash +# +# Simple wmstartup service +# Copyright (C) 2018 salt +# +# Distributed under terms of the MIT license. +# + +source $DTF_SERVICES_DIR/common.bash +service_name="Syncthing" +service_process="syncthing" +service_kill_on_reload="false" +service_flags="--no-browser" + diff --git a/.config/dtfscripts/wmstartup.sh b/.config/dtfscripts/wmstartup.sh index 81b32a90..db17e726 100755 --- a/.config/dtfscripts/wmstartup.sh +++ b/.config/dtfscripts/wmstartup.sh @@ -72,10 +72,14 @@ fi for service in $DTF_SERVICES_DIR/*.dtf; do ( source $service - if isup; then - stop + if ! prestart; then + svc_log "Failed pre-start checks" + else + if isup && [[ "$service_kill_on_reload" == "true" ]] ; then + stop + fi + start fi - start ) done