-- Drive Visibility Toggler
-- BP 2010
-- Toggles the desktop visibility of an individual drive
-- Finder prefs for visibility are preserved, simply superceded by this lower level flag.
-- Will not work on boot partition
-- If you use it on a network drive, visibility changes will affect all users.
-- You must manually target the drive by inserting its name correctly in the next line of code.
------------------------------------------------------------------------------------
----------- user settable variables
set drivename to "Betelgeuse" -- **** Set this to the name of the drive you want to act on. ****
----------- end of user settable variables
if drivename is equal to "Betelgeuse" then -- Make it hard for people who don't know what they're doing to mess up.
beep (3)
say "You have to type in the name of the drive you want to work with. Please reed the documentation before proceeding"
return
end if
-----------
set vizstate to false -- needs a default value
set findersdriveprefs to getFindersShowDrivePrefs_(me) -- preserve Finder prefs
try
tell application "System Events" to set vizstate to visible of disk drivename
on error
beep 1
return
end try
setFindersShowDrivePrefs_({false, false, false, false}) -- this gets reset at end of function -- every time
try
if vizstate is equal to false then
tell application "System Events" to set visible of disk drivename to true
else
tell application "System Events" to set visible of disk drivename to false
end if
tell application "System Events" to set vizstate to visible of disk drivename
-- do shell script "killall Finder" -- Restart the Finder to show changed visibility This is not necessary as long as I toggle the Finder's vis prefs.
on error
beep 1
end try
delay 1.2 -- finder needs a little wait in here or it will somtimes display icon incorrectly
setFindersShowDrivePrefs_(findersdriveprefs) --restore Finder prefs
return vizstate
------------------------------------------------------------------- Utility Functions
on getFindersShowDrivePrefs_(sender)
set findersdriveprefs to {}
tell application id "com.apple.finder"
try
set end of findersdriveprefs to desktop shows hard disks of Finder preferences as boolean
set end of findersdriveprefs to desktop shows external hard disks of Finder preferences as boolean
set end of findersdriveprefs to desktop shows removable media of Finder preferences as boolean
set end of findersdriveprefs to desktop shows connected servers of Finder preferences
on error
set findersdriveprefs to {true, true, true, true}
beep 1
--log "There was an error in getFindersShowDrivePrefs_"
end try
end tell
return findersdriveprefs
end getFindersShowDrivePrefs_
on setFindersShowDrivePrefs_(findersdriveprefs)
tell application id "com.apple.finder"
try
set desktop shows hard disks of Finder preferences to item 1 of findersdriveprefs
set desktop shows external hard disks of Finder preferences to item 2 of findersdriveprefs
set desktop shows removable media of Finder preferences to item 3 of findersdriveprefs
set desktop shows connected servers of Finder preferences to item 4 of findersdriveprefs
on error
--log "There was an error in setFindersShowDrivePrefs_"
beep 1
end try
end tell
end setFindersShowDrivePrefs_