[X-Unix] Hiding apps from the command line
Kirk McElhearn
kirklists at wanadoo.fr
Fri Mar 26 04:27:05 PST 2004
On 3/26/04 1:15 PM, "Eugene Lee" <list-themacintoshguy at fsck.net> wrote:
> : #! /bin/sh
>
> No spaces here, it should be "#!/bin/sh" (without the quotes).
OK. Didn't affect the script's running, though.
>
> : # hide an application in the Finder
> : osascript <<END
> : tell application "Finder"
> : if exists application process "$1" then
> : set visible of application process "$1" to false
> : end if
> : end tell
>
> To be a proper here document, you must include the ending "END" string.
> Otherwise, you cannot follow the AppleScript with more shell commands.
> For example, let's show the time when the app was hidden. This script
> hides an app but unexpectedly prints the string "date".
>
> #!/bin/sh
> osascript <<END
> tell application "Finder"
> if exists application process "$1" then
> set visible of application process "$1" to false
> end if
> end tell
>
> date
>
> The corrected script hides an app and then runs the "date" command to
> show the current time, which is what we intended.
>
> #!/bin/sh
> osascript <<END
> tell application "Finder"
> if exists application process "$1" then
> set visible of application process "$1" to false
> end if
> end tell
> END
> date
OK.
>
> : As usual, save this script, with a name such as hide, in a directory that's
> : in your PATH, make it executable by typing chmod 755 hide, then you can run
> : it as follows:
> :
> : hide [application name]
> :
> : You'll need to type the actual application name that the Finder recognizes;
> : move your cursor over the Dock to see: for example, Microsoft Word is the
> : full name of the Office word processor, and you need to use quotes around
> : any application name that contains spaces:
> :
> : hide "Microsoft Word"
> :
> : You don't need to respect case; this works even if you type hide safari, for
> : example.
> :
> : *********
> :
> : You'll not that I put END on the first line, and that you don't need to have
> : another END at the end.
>
> You really should. See above.
Done.
>
> : Can we take this further and find a way to hide all other applications from
> : this script?
>
> Yep. Here's the basic script.
>
> #!/bin/sh
> osascript <<END
> tell application "Finder"
> set visible of every process whose visible is true and name is not "Finder"
> and name is not "$1" to false
> end tell
> END
>
> Remove the 'and name is not "Finder"' string if you want to hide the
> Finder as well.
Cool!
>
> Of course with a bit more work, one could make an all-purpose shell
> script that could something like this:
>
> hide [-oaf] appname
>
> Without options, it will hide the application named "appname".
>
> The options might be like:
>
> -o Hide all applications other than "appname".
> -a Hide all applications.
> -f Hide the Finder.
>
> where -o and -a by default do *not* hide the Finder.
>
> Just an idea.
What if the script contained an if statement, like this:
if name is "o"
then
[hide others]
else if name is "a"
then
[hide all]
else if name is "f"
then
[hide Finder]
Could that be done?
If so, you'd have the following syntax:
hide o
hide a
hide f
hide [application name]
Doable?
Kirk
My latest book: How to Do Everything with Mac OS X Panther
http://www.mcelhearn.com/htde.html
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . kirk at mcelhearn.com | http://www.mcelhearn.com . . . . . .
. . Kirk McElhearn | Chemin de la Lauze | 05600 Guillestre | France . .
More information about the X-Unix
mailing list