Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ################################################################################
- ################################################################################
- # Name: start_kde_activities.sh
- # Usage:
- # Description:
- # Created: 2018-04-27
- # Copyright 2014, Victor Mendonca - http://wazem.org
- # - https://github.com/victorbrca
- # License: Released under the terms of the GNU GPL license v3
- ################################################################################
- ################################################################################
- # set -x
- #-------------------------------------------------------------------------------
- # Sets variables
- #-------------------------------------------------------------------------------
- log="${HOME}/bin/var/log/start_kde_activities-${HOSTNAME}.log"
- #-------------------------------------------------------------------------------
- # Functions
- #-------------------------------------------------------------------------------
- _logMe () {
- echo -e "$(date)\t-\t${1}" >> "$log"
- }
- _getActivities () {
- activities="$(qdbus org.kde.ActivityManager /ActivityManager/Activities ListActivities)"
- }
- _getActivitiesNames () {
- for activity in $(qdbus org.kde.ActivityManager /ActivityManager/Activities ListActivities) ; do
- echo "${activity} - $(qdbus org.kde.ActivityManager /ActivityManager/Activities ActivityName $activity)"
- done
- }
- _getRunningApps () {
- # Gets a X id for all running apps
- _logMe "Getting running apps"
- running_apps="$(xwininfo -root -tree | sed 's/ \+/ /g; s/ //; s/ .*//g; /x/!d; /xwinin/d')"
- }
- _getRunningAppsActivity () {
- for app_id in $running_apps ; do
- app_activity=$(xprop _KDE_NET_WM_ACTIVITIES -id "$app_id" 2> /dev/null | grep -v "not found" | awk '{print $NF}' | tr -d '"')
- if [ "$app_activity" ] ; then
- if [[ "$app_activity" != "00000000-0000-0000-0000-000000000000" ]] ; then
- app_name=$(xwininfo -root -tree | grep "$app_id" | awk -F'"' '{print $2}' )
- running_apps_activities="$running_apps_activities
- $app_name $app_activity"
- fi
- fi
- done
- }
- _notifyAudio () {
- notify-send "$1" "$2"
- paplay /usr/share/sounds/freedesktop/stereo/device-added.oga
- }
- _main () {
- # Matches running app to activities and stops empty activities
- for activity_id in $activities ; do
- activity_name="$(_getActivitiesNames | grep $activity_id | awk '{print $3}')"
- echo -e "$running_apps_activities" | grep -q "$activity_id"
- if [[ $? -eq 0 ]] ; then
- activity_state=$(qdbus org.kde.ActivityManager /ActivityManager/Activities ActivityState "$activity_id")
- if [[ $activity_state -eq 4 ]] ; then
- _logMe "There's an app running for the $activity_name activity. Starting it"
- qdbus org.kde.ActivityManager /ActivityManager/Activities StartActivity "$activity_id"
- _notifyAudio "KDE Activites" "Started $activity_name"
- fi
- continue
- else
- # echo "$(_getActivitiesNames | grep $activity_id | awk '{print $3}') is empty"
- activity_state=$(qdbus org.kde.ActivityManager /ActivityManager/Activities ActivityState "$activity_id")
- if [[ $activity_state -ne 4 ]] ; then
- sleep 7
- if [[ $activity_state -ne 4 ]] ; then
- _logMe "Stopping activity $activity_name"
- qdbus org.kde.ActivityManager /ActivityManager/Activities StopActivity "$activity_id"
- _notifyAudio "KDE Activites" "Stopped $activity_name"
- fi
- fi
- fi
- done
- }
- _cleanUp() {
- unset activities running_apps app_activity app_name running_apps_activities \
- activity_name activity_state activity_id
- }
- #-------------------------------------------------------------------------------
- # Starts script
- #-------------------------------------------------------------------------------
- while true ; do
- _getActivities
- _getRunningApps
- _getRunningAppsActivity
- _main
- _cleanUp
- sleep 1
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement