Skip to content

Instantly share code, notes, and snippets.

@ccstone
Last active December 8, 2023 22:15
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ccstone/5823998 to your computer and use it in GitHub Desktop.
Save ccstone/5823998 to your computer and use it in GitHub Desktop.
An Applescript to sweep your desktop.Creates a dated folder inside ~/Documents/Sweep Desktop/ with newly swept items.Items may be grouped using their file extension (examples provided in the script).Items may be excluded by name, and items labeled with green, gray, or red are automatically excluded.
------------------------------------------------------------------------------------------------
# 2015/10/03 10:42
# NOTE: El Capitan breaks the whose clauses in this.
# They still work but take 30+ seconds instead of 3-4.
# I will update this with ASObjC when I get the chance.
------------------------------------------------------------------------------------------------
# Auth: Christopher Stone <junksieve@thestoneforge.com>
# dCre: 2012-09-30 : 16:51
# dMod: 2013-06-20 : 10:35
# Appl: Finder
# Task: Sweep Stuff off the desktop in an organized fashion.
# Deps: Only OSX components used.
# Tags: @Applescript, @Finder, @Sweep, @Desktop
# Vers: 1.0
------------------------------------------------------------------------------------------------
property exlusionList : items 1 thru -2 of {¬
"Action_List.txt", ¬
"Aliases to Directories", ¬
"Catch-All", ¬
"Desktop Notes.rtf", ¬
"Duplicates", ¬
"FILE!", ¬
"Meta-Research.txt", ¬
"Sweep Desktop", ¬
"Working Items (Current)", ¬
"Working Scripts", ¬
""}
------------------------------------------------------------------------------------------------
# Separation between file-extensions & folder name must be at least 5 spaces.
# Multiple file-extensions MUST be separated by one space.
property fileExtFilters : text 2 thru -2 of "
dmg Disk_Images
flv mov mp4 Movie_Files
gif jpg png Image_Files
rtf rtfd RTF_Files
scpt Script_Files
sit zip Compressed_Archives
txt Text_Files
textClipping Clipping_Files
webarchive Web_Archives
webbookmark webloc Web_Bookmarks
worksheet BBEdit_Worksheets
"
------------------------------------------------------------------------------------------------
try
set desktopFolder to path to desktop folder
set cleanupFolder to ("" & (path to documents folder) & "Sweep Desktop:")
set cleanList to {}
try
alias cleanupFolder
on error
do shell script "mkdir " & (quoted form of (POSIX path of cleanupFolder))
end try
set usefileExtFilters to do shell script "sed -E 's![ ]{5,}! !' <<< " & quoted form of fileExtFilters
set AppleScript's text item delimiters to tab
tell application "Finder"
tell desktop
# Create move-to record with file-extension filters.
repeat with i in (paragraphs of usefileExtFilters)
set _temp to {words of first text item, last text item} of contents of i
set itemsToMove to (items whose kind is not "Volume" and name is not in exlusionList and ¬
name does not start with "Cleaned-" and name extension is in (item 1 of _temp) and ¬
label index is not in {2, 6, 7}) as alias list
if itemsToMove ≠ {} then
set end of cleanList to {File_List:itemsToMove, Sub_Folder:item 2 of _temp}
end if
end repeat
# Add folders to move-to record if appropriate.
set itemsToMove to (folders whose kind is not "Volume" and name is not in exlusionList and ¬
name does not start with "Cleaned-" and label index is not in {2, 6, 7}) as alias list
if itemsToMove ≠ {} then
set end of cleanList to {File_List:itemsToMove, Sub_Folder:"Folders"}
end if
# return cleanList
if cleanList ≠ {} then
# Make new Clean-up Folder
set dateTimeString to do shell script "date \"+%Y%m%d-%H%M%S\""
set newFolderName to "Cleaned-" & dateTimeString
set newFolder to make new folder at (cleanupFolder as alias) with properties {name:newFolderName}
set label index of newFolder to 2
set _alias to make alias to newFolder at it
set label index of _alias to 2
# Move items in move-to record.
repeat with ndx in cleanList
set _folder to (make new folder at newFolder with properties {name:Sub_Folder of ndx}) as alias
move File_List of ndx to _folder
end repeat
# Move left-over (miscellaneous) items.
set itemsToMove to (items whose kind is not "Volume" and name is not in exlusionList and ¬
name does not start with "Cleaned-" and label index is not in {2, 6, 7}) as alias list
if itemsToMove ≠ {} then
set _folder to (make new folder at newFolder with properties {name:"Miscellaneous_Files"}) as alias
move itemsToMove to _folder
end if
open newFolder
tell application "Finder"'s front window to if its bounds ≠ {0, 44, 844, 1196} ¬
then set its bounds to {0, 44, 844, 1196}
else
beep
end if
end tell
end tell
on error e number n
set e to e & return & return & "Num: " & n
tell current application to set dDlg to display dialog e with title "ERROR!" buttons {"Cancel", "Copy", "OK"} default button "OK"
if button returned of dDlg = "Copy" then set the clipboard to e
end try
------------------------------------------------------------------------------------------------
@jordanst3wart
Copy link

I use this script run every two weeks on a calendar event:

# change directory to desktop
# select file that are over two weeks old
# create directory %d = day, %b = Jan
mkdir cd ~/Documents/Delete_desktop_stuff/$(date '+%d_%b_Clean_Up')
# move files
# find and copy files to new directory
# you need to create a file called "Delete_desktop_stuff"
find ~/Desktop -maxdepth 1 -mtime +14 -exec mv "{}" ~/Documents/Delete_desktop_stuff/$(date '+%d_%b_Clean_Up') \;

@fyodorovich
Copy link

I've added "sh zsh bash fish Shell_Scripts" to the set of things to remove from my desktop. The fish files get left behind.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment