On Wednesday 04 August 2021 11:13:56 am Slávek Banko wrote:
Dne st 4. srpna 2021 Michael napsal(a):
Is there a dcop, or other way, to have KMail gracefully shutdown from a bash script?
I want to turn it off while nightly backups are running…
dcop kmail MainApplication-interface quit
On Wednesday 04 August 2021 11:18:09 am dep wrote:
said Michael: | What was the name of the dcop GUI thingy?
kdcop
Thanks Slávek and dep!
Maybe a difference in language pack(s) installed (or an upper/lower case typo?)?, but between dep giving the GUI program and Slávek's command I worked out this:
dcop kmail MainApplication-Interface quit
Note: "dcop kmail.MainApplication-Interface.quit()" as implied by the kdcop GUI does not work on the command line...
I always liked dcop, if you can figure it out you can do amazing things with it (e.g. programmatically add contacts to KMail)
Since I ultimately didn’t want to quit KMail (messes up its location in the panel), I had it suspend operations until the backup was complete. Here’s the two pieces of code for anyone who’s interested:
Best All, Michael
# # KMail, stop checking mail # Don't want to quit KMail as that changes its place in the taskbar # dcop kmail MainApplication-Interface quit # To check mail # dcop kmail KMailIface checkMail # To 'pause' KMail, run both # dcop kmail KMailIface stopNetworkJobs # dcop kmail KMailIface pauseBackgroundJobs KMailOn=1 dcop kmail KMailIface stopNetworkJobs EXITCODE="$?" if [ $EXITCODE -eq 0 ] ; then dcop kmail KMailIface pauseBackgroundJobs CurrDateTime=$(date +"%y-%m-%d %H:%M:%S") echo "$CurrDateTime: KMail set offline" else CurrDateTime=$(date +"%y-%m-%d %H:%M:%S") echo "$CurrDateTime: KMail was not running?" KMailOn=0 fi
# # KMail, re-start checking mail # If KMail wasn't running, don't start it. # nice -n 2 /opt/trinity/bin/kmail & >/dev/null 2>/dev/null if [ $KMailOn -eq 1 ] ; then dcop kmail KMailIface resumeNetworkJobs dcop kmail KMailIface resumeBackgroundJobs CurrDateTime=$(date +"%y-%m-%d %H:%M:%S") echo "$CurrDateTime: KMail set online" fi