Created
December 12, 2021 05:44
-
-
Save OKsign/4dfb3f182eb45fce848e09a06e8bba83 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- user options | |
set KillWindows_User to {"app1", "app2"} | |
set KillWindows_with_window to {"BCompare", "app2"} | |
set output_volume_before_shutdown_and_restart to "off" -- "on" or "off" | |
set output_volume to 0 -- you can set from 0 - 100 | |
-- end of user options | |
----------------------------------------------- | |
set input_list_choose to {"Kill and Shut Down", "Kill and Restart", "Kill All Windows"} | |
set user_input to (choose from list input_list_choose with prompt "" with title "Script 23.9") | |
if user_input is not false then | |
delay 0.5 | |
try | |
if (count KillWindows_User) is not 0 then | |
repeat with i from 1 to (count KillWindows_User) | |
try | |
set the_pid to (do shell script "ps -A | grep -m1 " & (quoted form of (item i of KillWindows_User)) & " | awk '{print $1}'") | |
delay 0.3 | |
if the_pid is not "" then | |
try | |
do shell script ("kill -9 " & the_pid) | |
end try | |
end if | |
end try | |
end repeat | |
repeat with i from 1 to (count KillWindows_User) | |
try | |
set the_pid2 to (do shell script "ps ax | grep -m1 " & (quoted form of (item i of KillWindows_User)) & " | awk '{print $1}'") | |
delay 0.3 | |
if the_pid2 is not "" then | |
try | |
do shell script ("kill -9 " & the_pid2) | |
end try | |
end if | |
end try | |
end repeat | |
end if | |
end try | |
-- s23.4 - 2020-08-23_21.46.24 | |
repeat 2 times | |
tell application "System Events" | |
tell application "Finder" | |
set windowCount to count of windows | |
end tell | |
end tell | |
if windowCount > 0 then | |
tell application "System Events" | |
tell process "Finder" | |
set frontmost to true | |
delay 0.3 | |
end tell | |
end tell | |
repeat windowCount times | |
tell application "System Events" | |
keystroke "w" using {command down, option down} | |
end tell | |
end repeat | |
end if | |
delay 1 | |
end repeat | |
-- end - s23.4 - 2020-08-23_21.46.24 | |
try | |
tell application "System Events" | |
set foregroundapps to get the name of every process whose background only is false | |
delay 0.3 | |
end tell | |
-- s 23.5 | |
repeat with i from 1 to (count foregroundapps) | |
if (item i of foregroundapps) contains "FreeFileSync" then | |
try | |
set the_pid to (do shell script "ps -A | grep -m1 " & (quoted form of (item i of foregroundapps)) & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
end try | |
exit repeat | |
end if | |
end repeat | |
-- end - s 23.5 | |
-- kill windows of special apps | |
-- added - s 23.3 --2019-12-10_03.38.45 | |
if "Audacity" is in foregroundapps then | |
tell application "System Events" | |
set activeApp to "Audacity" | |
set the_pid to (do shell script "ps ax | grep -m1 " & activeApp & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
delay 2 | |
tell application "System Events" | |
set foregroundapps to get the name of every process whose background only is false | |
delay 0.3 | |
end tell | |
if "Audacity" is in foregroundapps then | |
set the_pid to (do shell script "ps ax | grep -m1 " & activeApp & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
end if | |
end tell | |
end if | |
-- end - added - s 23.3 --2019-12-10_03.38.45 | |
-- added - s23.2 - 2019-09-18_15.22.00 | |
if "wine" is in foregroundapps then | |
tell application "System Events" | |
set activeApp to "wine" | |
set the_pid to (do shell script "ps -A | grep -m1 " & activeApp & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
end tell | |
end if | |
if "wine-preloader" is in foregroundapps then | |
tell application "System Events" | |
set activeApp to "wine-preloader" | |
set the_pid to (do shell script "ps -A | grep -m1 " & activeApp & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
end tell | |
end if | |
-- end - added - s23.2 - 2019-09-18_15.22.00 | |
-- Atom | |
if "Atom" is in foregroundapps then | |
tell application "System Events" | |
tell process "Atom" | |
set frontmost to true | |
delay 0.8 | |
tell application "System Events" | |
key code 53 -- cancle dialog | |
delay 0.8 | |
keystroke "q" using command down | |
end tell | |
end tell | |
end tell | |
tell application "System Events" | |
set activeApp to "Atom" | |
set the_pid to (do shell script "ps -A | grep -m1 " & activeApp & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
end tell | |
end if | |
if (count KillWindows_with_window) is not 0 then | |
repeat with i from 1 to (count KillWindows_with_window) | |
try | |
set the_pid to (do shell script "ps -A | grep -m1 " & (quoted form of (item i of KillWindows_with_window)) & " | awk '{print $1}'") | |
delay 0.3 | |
if the_pid is not "" then | |
try | |
do shell script ("kill -9 " & the_pid) | |
end try | |
end if | |
end try | |
end repeat | |
repeat with i from 1 to (count KillWindows_with_window) | |
try | |
set the_pid2 to (do shell script "ps ax | grep -m1 " & (quoted form of (item i of KillWindows_with_window)) & " | awk '{print $1}'") | |
delay 0.3 | |
if the_pid2 is not "" then | |
try | |
do shell script ("kill -9 " & the_pid2) | |
end try | |
end if | |
end try | |
end repeat | |
end if | |
-- end - kill windows of special apps | |
tell application "System Events" | |
set foregroundapps to get the name of every process whose background only is false | |
delay 0.3 | |
end tell | |
set tar_app_list to {} | |
set ignored_list to {"Finder", "soffice", "Atom"} | |
if (count foregroundapps) is greater than 1 then | |
repeat with i from 1 to (count foregroundapps) | |
if (item i of foregroundapps) is not in ignored_list then | |
if (item i of foregroundapps) is not in KillWindows_with_window then | |
tell application "System Events" | |
tell process (item i of foregroundapps) | |
if menu bar item "Window" of menu bar 1 exists then | |
copy (item i of foregroundapps) to the end of tar_app_list | |
delay 0.2 | |
end if | |
end tell | |
end tell | |
end if | |
end if | |
end repeat | |
end if | |
set c_tar_app_list to count tar_app_list | |
set hang_quit_saving_no to {"TextMate"} -- 'quit saving no' > asking for saving dialog > killing process not work | |
if c_tar_app_list > 0 then | |
repeat with i from 1 to c_tar_app_list | |
if (item i of tar_app_list) is not in hang_quit_saving_no then | |
tell application (item i of tar_app_list) | |
try | |
quit saving no | |
end try | |
delay 0.5 | |
end tell | |
end if | |
end repeat | |
end if | |
end try | |
delay 1 | |
tell application "System Events" | |
set foregroundapps to get the name of every process whose background only is false | |
delay 0.5 | |
end tell | |
if (count foregroundapps) is greater than 1 then | |
repeat with i from 1 to (count foregroundapps) | |
if (item i of foregroundapps) is not "Finder" then | |
try | |
set the_pid to (do shell script "ps -A | grep -m1 " & (quoted form of (item i of foregroundapps)) & " | awk '{print $1}'") | |
if the_pid is not "" then do shell script ("kill -9 " & the_pid) | |
end try | |
end if | |
end repeat | |
end if -- if (count foregroundapps) is greater than 1 then | |
tell application "System Events" | |
set foregroundapps to get the name of every process whose background only is false | |
delay 0.5 | |
end tell | |
if (count foregroundapps) is greater than 1 then | |
repeat with i from 1 to (count foregroundapps) | |
if (item i of foregroundapps) is not "Finder" then | |
set tar_app to (item i of foregroundapps) | |
try | |
set the_pid2 to (do shell script "ps ax | grep -m1 " & (quoted form of (tar_app)) & " | awk '{print $1}'") | |
if the_pid2 is not "" then | |
do shell script ("kill -9 " & the_pid2) | |
end if | |
end try | |
end if | |
end repeat | |
end if | |
if (item 1 of user_input) is "Kill and Shut Down" then | |
if output_volume_before_shutdown_and_restart is "on" then | |
set volume output volume output_volume | |
delay 0.5 | |
end if | |
delay 0.5 | |
tell application "Finder" | |
shut down | |
end tell | |
return | |
end if | |
if (item 1 of user_input) is "Kill and Restart" then | |
if output_volume_before_shutdown_and_restart is "on" then | |
set volume output volume output_volume | |
delay 0.5 | |
end if | |
tell application "Finder" | |
restart | |
end tell | |
return | |
end if | |
if (item 1 of user_input) is "Kill All Windows" then | |
tell application "Finder" | |
display notification "Done!" with title "Kill All Windows without Saving." | |
end tell | |
end if | |
end if -- if user_input is not false then |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment