Paradigm | Natural language programming, Scripting |
---|---|
Developer | Apple Inc. |
First appeared | 1993[1] |
Stable release | |
Typing discipline | Weak, dynamic |
OS | System 7, Mac OS 8, Mac OS 9, macOS |
License | Proprietary (parts available under APSL) |
Filename extensions | .scpt, .scptd, .applescript |
Website | developer |
Influenced by | |
Natural language, HyperTalk |
AppleScript is a scripting language created by Apple Inc. that facilitates automated control over scriptable Mac applications. First introduced in System 7, it is currently included in all versions of macOS as part of a package of system automation tools. [4] [5] The term "AppleScript" may refer to the language itself, to an individual script written in the language, or, informally, to the macOS Open Scripting Architecture that underlies the language. [4] [5]
AppleScript is primarily a scripting language developed by Apple to do inter-application communication (IAC) using Apple events. [4] [5] AppleScript is related to, but different from, Apple events. Apple events are designed to exchange data between and control other applications in order to automate repetitive tasks.
AppleScript has some processing abilities of its own, in addition to sending and receiving Apple events to applications. AppleScript can do basic calculations and text processing, and is extensible, allowing the use of scripting additions that add new functions to the language. Mainly, however, AppleScript relies on the functionality of applications and processes to handle complex tasks. As a structured command language, AppleScript can be compared to Unix shells, the Microsoft Windows Script Host, or IBM REXX but it is distinct from all three. Essential to its functionality is the fact that Macintosh applications publish "dictionaries" of addressable objects and operations.
AppleScript has some elements of procedural programming, object-oriented programming (particularly in the construction of script objects), and natural language programming tendencies in its syntax, but does not strictly conform to any of these programming paradigms. [5] : xxvi
In the late 1980s Apple considered using HyperCard's HyperTalk scripting language as the standard language for end-user development across the company and within its classic Mac OS operating system, and for interprocess communication between Apple and non-Apple products. [6] HyperTalk could be used by novices to program a HyperCard stack. Apple engineers recognized that a similar, but more object-oriented scripting language could be designed to be used with any application, and the AppleScript project was born as a spin-off of a research effort to modernize the Macintosh as a whole and finally became part of System 7. [1]
AppleScript was released in October 1993 as part of System 7.1.1 (System 7 Pro, the first major upgrade to System 7). [1] QuarkXPress (ver. 3.2) was one of the first major software applications that supported AppleScript. This in turn led to AppleScript being widely adopted within the publishing and prepress world, often tying together complex workflows. This was a key factor in retaining the Macintosh's dominant position in publishing and prepress, even after QuarkXpress and other publishing applications were ported to Microsoft Windows.
After some uncertainty about the future of AppleScript on Apple's next generation OS, the move to Mac OS X (around 2002) and its Cocoa frameworks greatly increased the usefulness and flexibility of AppleScript. Cocoa applications allow application developers to implement basic scriptability for their apps with minimal effort, broadening the number of applications that are directly scriptable. At the same time, the shift to the Unix underpinnings and AppleScript's ability to run Unix commands directly, with the do shell script
command, [7] allowed AppleScripts much greater control over the operating system itself. [5] : 863 AppleScript Studio, released with Mac OS X 10.2 as part of Xcode, and later AppleScriptObjC framework, released in Mac OS X 10.6, allowed users to build Cocoa applications using AppleScript. [5] : 969
In a 2006 article, Macworld included AppleScript among its rankings of Apple's 30 most significant products to date, placing it at #17. [8]
In a 2013 article for Macworld, veteran Mac software developer and commentator John Gruber concluded his reflection on "the unlikely persistence of AppleScript" by noting: "In theory, AppleScript could be much better; in practice, though, it's the best thing we have that works. It exemplifies the Mac's advantages over iOS for tinkerers and advanced users." [9]
In October 2016, longtime AppleScript product manager and automation evangelist Sal Soghoian left Apple when his position was eliminated "for business reasons". [10] Veterans in the Mac community such as John Gruber and Andy Ihnatko generally responded with concern, questioning Apple's commitment to the developer community and pro users. [11] Apple senior vice president of software engineering Craig Federighi responded in an email saying that "We have every intent to continue our support for the great automation technologies in macOS!", though Jeff Gamet at The Mac Observer opined that it did little to assuage his doubt about the future of Apple automation in general and AppleScript in particular. [12] For the time being, AppleScript remains one component of macOS automation technologies, along with Automator, Shortcuts, Services, and shell scripting.
AppleScript was designed to be used as an accessible end-user scripting language, offering users an intelligent mechanism to control applications, and to access and modify data and documents. AppleScript uses Apple events, a set of standardized data formats that the Macintosh operating system uses to send information to applications, roughly analogous to sending XPath queries over XML-RPC in the world of web services. [5] : xxvi Apple events allow a script to work with multiple applications simultaneously, passing data between them so that complex tasks can be accomplished without human interaction. [4] For example, an AppleScript to create a simple web gallery might do the following:
For the user, hundreds or thousands of steps in multiple applications have been reduced to the single act of running the script, and the task is accomplished in much less time and with no possibility of random human error. A large complex script could be developed to run only once, while other scripts are used again and again.
An application's scriptable elements are visible in the application's Scripting Dictionary (distributed as part of the application), which can be viewed in any script editor. Elements are generally grouped into suites, according to loose functional relationships between them. There are two basic kinds of elements present in any suite: classes and commands.
All scriptable applications share a few basic commands and objects, usually called the Standard Suite—commands to open, close or save a file, to print something, to quit, to set data to variables—as well as a basic application object that gives the scriptable properties of the application itself. Many applications have numerous suites capable of performing any task the application itself can perform. In exceptional cases, applications may support plugins which include their own scripting dictionaries.
AppleScript was designed with the ability to build scripts intuitively by recording user actions. Such AppleScript recordability has to be engineered into the app—the app must support Apple events and AppleScript recording; [13] as Finder supports AppleScript recording, it can be useful for reference. When AppleScript Editor (Script Editor) is open and the Record button clicked, user actions for recordable apps are converted to their equivalent AppleScript commands and output to the Script Editor window. The resulting script can be saved and re-run to duplicate the original actions, or modified to be more generally useful.
Comments can be made multiple ways. A one-line comment can begin with 2 hyphens (--). In AppleScript 2.0, first released in Mac OS X Leopard, it may also begin with a number sign (#). This permits a self-contained AppleScript script to be stored as an executable text file beginning with the shebang line #!/usr/bin/osascript
Example:
--This is a one line comment# So is this! (in Mac OS X Leopard or later)
For comments that take up multiple lines, AppleScript uses parentheses with asterisks inside. Example:
(* This is amultiplelinecomment *)
In AppleScript, the traditional "Hello, World!" program could be written in many different forms, including:
display dialog"Hello, world!"-- a modal window with "OK" and "Cancel" buttons-- ordisplay alert"Hello, world!"-- a modal window with a single "OK" button and an icon representing the app displaying the alert-- orsay"Hello, world!"-- an audio message using a synthesized computer voice
AppleScript has several user interface options, including dialogs, alerts, and list of choices. (The character ¬, produced by typing ⌥ Option+return in the Script Editor, denotes continuation of a single statement across multiple lines.)
-- DialogsetdialogReplytodisplay dialog"Dialog Text"¬defaultanswer"Text Answer"¬hiddenanswerfalse¬buttons{"Skip","Okay","Cancel"}¬defaultbutton"Okay"¬cancelbutton"Skip"¬withtitle"Dialog Window Title"¬withiconnote¬givingupafter15
-- Choose from listsetchosenListItemtochoose from list{"A","B","3"}¬withtitle"List Title"¬withprompt"Prompt Text"¬defaultitems"B"¬OKbuttonname"Looks Good!"¬cancelbuttonname"Nope, try again"¬multipleselectionsallowedfalse¬withemptyselectionallowed
-- AlertsetresultAlertReplytodisplay alert"Alert Text"¬aswarning¬buttons{"Skip","Okay","Cancel"}¬defaultbutton2¬cancelbutton1¬givingupafter2
Each user interaction method can return the values of buttons clicked, items chosen or text entered for further processing. For example:
display alert"Hello, world!"buttons{"Rudely decline","Happily accept"}settheAnswertobutton returnedoftheresultiftheAnsweris"Happily accept"thenbeep5elsesay"Piffle!"endif
Whereas Apple events are a way to send messages into applications, AppleScript is a particular language designed to send Apple events. In keeping with the objective of ease-of-use for beginners, the AppleScript language is designed on the natural language metaphor, just as the graphical user interface is designed on the desktop metaphor. A well-written AppleScript should be clear enough to be read and understood by anyone, and easily edited. The language is based largely on HyperCard's HyperTalk language, extended to refer not only to the HyperCard world of cards and stacks, but also theoretically to any document. To this end, the AppleScript team introduced the AppleEvent Object Model (AEOM), which specifies the objects any particular application "knows".
The heart of the AppleScript language is the use of terms that act as nouns and verbs that can be combined. For example, rather than a different verb to print a page, document or range of pages (such as printPage, printDocument, printRange), AppleScript uses a single "print" verb which can be combined with an object, such as a page, a document or a range of pages.
printpage1printdocument2printpages1thru5ofdocument2
Generally, AEOM defines a number of objects—like "document" or "paragraph"—and corresponding actions—like "cut" and "close". The system also defines ways to refer to properties of objects, so one can refer to the "third paragraph of the document 'Good Day'", or the "color of the last word of the front window". AEOM uses an application dictionary to associate the Apple events with human-readable terms, allowing the translation back and forth between human-readable AppleScript and bytecode Apple events. To discover what elements of a program are scriptable, dictionaries for supported applications may be viewed. (In the Xcode and Script Editor applications, this is under File → Open Dictionary.)
To designate which application is meant to be the target of such a message, AppleScript uses a "tell" construct:
tellapplication"Microsoft Word"quitendtell
Alternatively, the tell may be expressed in one line by using an infinitive:
tellapplication"Microsoft Word"toquit
For events in the "Core Suite" (activate, open, reopen, close, print, and quit), the application may be supplied as the direct object to transitive commands:
quitapplication"Microsoft Word"
The concept of an object hierarchy can be expressed using nested blocks:
tellapplication"QuarkXPress"telldocument1tellpage2telltextbox1setword5to"Apple"endtellendtellendtellendtell
The concept of an object hierarchy can also be expressed using either nested prepositional phrases or a series of possessives:
pixel7ofrow3ofTIFFimage"my bitmap"TIFFimage"my bitmap"'s 3rdrow's 7thpixel
which in another programming language might be expressed as sequential method calls, like in this pseudocode:
getTIFF("my bitmap").getRow(3).getPixel(7);
AppleScript includes syntax for ordinal counting, "the first paragraph", as well as cardinal, "paragraph one". Likewise, the numbers themselves can be referred to as text or numerically, "five", "fifth" and "5" are all supported; they are synonyms in AppleScript. Also, the word "the" can legally be used anywhere in the script in order to enhance readability: it has no effect on the functionality of the script.
A failsafe calculator:
tellapplication"Finder"-- Set variablessetthe1totext returnedof(display dialog"1st"defaultanswer"Number here"buttons{"Continue"}defaultbutton1)setthe2totext returnedof(display dialog"2nd"defaultanswer"Number here"buttons{"Continue"}defaultbutton1)trysetthe1tothe1asintegersetthe2tothe2asintegeronerrordisplay dialog"You may only input numbers into a calculator."withtitle"ERROR"buttons{"OK"}defaultbutton1returnendtry-- Add?ifthebutton returnedof(display dialog"Add?"buttons{"No","Yes"}defaultbutton2)is"Yes"thensetansto(the1+the2)display dialoganswithtitle"Answer"buttons{"OK"}defaultbutton1sayans-- Subtract? elseifthebutton returnedof(display dialog"Subtract?"buttons{"No","Yes"}defaultbutton2)is"Yes"thensetansto(the1-the2)display dialoganswithtitle"Answer"buttons{"OK"}defaultbutton1sayans-- Multiply? elseifthebutton returnedof(display dialog"Multiply?"buttons{"No","Yes"}defaultbutton2)is"Yes"thensetansto(the1*the2)display dialoganswithtitle"Answer"buttons{"OK"}defaultbutton1sayans-- Divide? elseifthebutton returnedof(display dialog"Divide?"buttons{"No","Yes"}defaultbutton2)is"Yes"thensetansto(the1/the2)display dialoganswithtitle"Answer"buttons{"OK"}defaultbutton1sayanselsedelay1say"You haven't selected a function. The operation has cancelled."endifendtell
A simple username and password dialog box sequence. Here, the username is John and password is app123:
tellapplication"Finder"setpassAnsto"app123"setuserAnsto"John"ifthetext returnedof(display dialog"Username"defaultanswer"")isuserAnsthendisplay dialog"Correct"buttons{"Continue"}defaultbutton1ifthetext returnedof(display dialog"Username : John"&return&"Password"defaultanswer""buttons{"Continue"}defaultbutton1withhiddenanswer)ispassAnsthendisplay dialog"Access granted"buttons{"OK"}defaultbutton1elsedisplay dialog"Incorrect password"buttons{"OK"}defaultbutton1endifelsedisplay dialog"Incorrect username"buttons{"OK"}defaultbutton1endifendtell
Script editors provide a unified programing environment for AppleScripts, including tools for composing, validating, compiling, running, and debugging scripts. They also provide mechanisms for opening and viewing AppleScript dictionaries from scriptable applications, saving scripts in a number of formats (compiled script files, application packages, script bundles, and plain text files), and usually provide features such as syntax highlighting and prewritten code snippets.
AppleScripts can be run from a script editor, but it is usually more convenient to run scripts directly, without opening a script editor application. There are a number of options for doing so:
Re-usable AppleScript modules (available since OS X Mavericks), written in AppleScript or AppleScriptObjC and saved as script files or bundles in certain locations, [28] that can be called from other scripts. When saved as a bundle, a library can include an AppleScript dictionary (sdef) file, [29] thus functioning like a scripting addition but written in AppleScript or AppleScriptObjC.
A framework for attaching Cocoa interfaces to AppleScript applications, part of the Xcode package in Mac OS X 10.4 and 10.5, now deprecated in favor of AppleScriptObjC. [30] : 438
A Cocoa development software framework, also called AppleScript/Objective-C or ASOC, [31] part of the Xcode package since Mac OS X Snow Leopard. [32] AppleScriptObjC allows AppleScripts to use Cocoa classes and methods directly. [33] The following table shows the availability of AppleScriptObjC in various versions of macOS: [34]
In Xcode | In applets | In AppleScript Libraries | In Script Editor | |
---|---|---|---|---|
10.6 | ||||
10.7 | ||||
10.8 | ||||
10.9 | ||||
10.10 | ||||
AppleScriptObjC can be used in all subsequent Mac OS X versions.
A graphical, modular editing environment in which workflows are built up from actions. It is intended to duplicate many of the functions of AppleScript without the necessity for programming knowledge. Automator has an action specifically designed to contain and run AppleScripts, for tasks that are too complex for Automator's simplified framework. [35]
These background-only applications, packaged with macOS, are used to allow AppleScript to access features that would not normally be scriptable. As of Mac OS X 10.6.3 they include the scriptable applications for:
Plug-ins for AppleScript developed by Apple or third parties. [36] They are designed to extend the built-in command set, expanding AppleScript's features and making it somewhat less dependent on functionality provided by applications. macOS includes a collection of scripting additions referred to as Standard Additions (StandardAdditions.osax) that adds a set of commands and classes that are not part of AppleScript's core features, including user interaction dialogs, reading and writing files, file system commands, date functions, and text and mathematical operations; without this OSAX, AppleScript would have no capacity to perform many basic actions not directly provided by an application.
While applications can define specialized classes (or data types), AppleScript also has a number of built-in classes. These basic data classes are directly supported by the language and tend to be universally recognized by scriptable applications. The most common ones are as follows:
tell application "Finder" …
).contents
property.pi
, tab
, and linefeed
.constant
.integer
and real
.text
class was distinct from string
and Unicode text
, and the three behaved somewhat differently; in 2.0 (10.5) and later, they are all synonyms and all text is handled as being UTF-16 (“Unicode”)-encoded. [37] square yards
, then converted to square feet
by casting between unit types (using the as
operator).Many AppleScript processes are managed by blocks of code, where a block begins with a command command and ends with an end command statement. The most important structures are described below.
AppleScript offers two kinds of conditionals.
-- Simple conditionalifx<1000thensetxtox+1-- Compound conditionalifxis greater than3then-- commandselse-- other commandsendif
The repeat loop of AppleScript comes in several slightly different flavors. They all execute the block between repeat and end repeat lines a number of times. The looping can be prematurely stopped with command exit repeat.
Repeat forever.
repeat-- commands to be repeatedendrepeat
Repeat a given number of times.
repeat10times-- commands to be repeatedendrepeat
Conditional loops. The block inside repeat while loop executes as long as the condition evaluates to true. The condition is re-evaluated after each execution of the block. The repeat until loop is otherwise identical, but the block is executed as long as the condition evaluates to false.
setxto5repeatwhilex>0setxtox-1endrepeatsetxto5repeatuntilx≤0setxtox-1endrepeat
Loop with a variable. When starting the loop, the variable is assigned to the start value. After each execution of the block, the optional step value is added to the variable. Step value defaults to 1.
-- repeat the block 2000 times, i gets all values from 1 to 2000repeatwithifrom1to2000-- commands to be repeatedendrepeat-- repeat the block 4 times, i gets values 100, 75, 50 and 25repeatwithifrom100to25by-25-- commands to be repeated endrepeat
Enumerate a list. On each iteration set the loopVariable to a new item in the given list
settotalto0repeatwithloopVariablein{1,2,3,4,5}settotaltototal+loopVariableendrepeat
Application targeting | Error handling |
---|---|
-- Simple formtellapplication"Safari"toactivate-- Compoundtellapplication"MyApp"-- commands for appendtell | try-- commands to be testedonerror-- error commands endtry |
One important variation on this block structure is in the form of on —end ... blocks that are used to define handlers (function-like subroutines). Handlers begin with on functionName() and ending with end functionName, and are not executed as part of the normal script flow unless called from somewhere in the script.
Function handler | Folder actions block | Run handler |
---|---|---|
onmyFunction(parameters...)-- subroutine commands endmyFunction | onaddingfolderitemstothisFolderafterreceivingtheseItems-- commands to apply to the folder or items endaddingfolderitemsto | onrun-- commandsendrun |
Handlers can also be defined using "to" in place of "on" and can be written to accept labeled parameters, not enclosed in parens.
Handler with labeled parameters | Handler using "to" and labeled parameters |
---|---|
onrockaroundtheclockdisplay dialog(clockas string)endrock-- called with:rockaroundthecurrent date | tocheckforyourNumberfrombottomthrutopifbottom≤yourNumberandyourNumber≤topthendisplay dialog"Congratulations! You scored."endifendcheck--called with:checkfor8from7thru10 |
There are four types of predefined handlers in AppleScript—run, open, idle, and quit—each of which is created in the same way as the run handler shown above.
onopentheItemsrepeatwiththisItemintheItemstellapplication"Finder"toupdatethisItemendrepeatendopen
When a script containing an "open handler' is saved as an applet, the applet becomes a droplet. A droplet can be identified in the Finder by its icon, which includes an arrow, indicating items can be dropped onto the icon. The droplet's open handler is executed when files or folders are dropped onto droplet's icon. References to the items dropped on the droplet's icon are passed to the droplet's script as the parameter of the open handler. A droplet can also be launched the same way as an ordinary applet, executing its run handler.
on idle--code to execute when the script's execution has completedreturn60-- number of seconds to pause before executing idle handler againend idle
An idle handler can be used in applets or droplets saved as stay-open applets, and is useful for scripts that watch for particular data or events. The length of the idle time is 30 seconds by default, [39] but can be changed by including a 'return x' statement at the end of the subroutine, where x is the number of seconds the system should wait before running the handler again.
onquit--commands to execute before the script quitscontinuequit-- required for the script to actually quitendquit
Script objects may be defined explicitly using the syntax:
scriptscriptName-- commands and handlers specific to the scriptendscript
Script objects can use the same 'tell' structures that are used for application objects, and can be loaded from and saved to files. Runtime execution time can be reduced in some cases by using script objects.
setvariable1to1-- create an integer variable called variable1setvariable2to"Hello"-- create a text variable called variable2copy{17,"doubleday"}tovariable3-- create a list variable called variable3set{variable4,variable5}tovariable3-- copy the list items of variable3 into separate variables variable4 and variable5setvariable6toscriptmyScript-- set a variable to an instance of a script
tellapplication"Finder"setxtomymyHandler()-- orsetxtomyHandler()ofmeendtellonmyHandler()--commandsendmyHandler
Using the same technique for scripting addition commands can reduce errors and improve performance.
tellapplication"Finder"setanyNumbertomy(random numberfrom5to50)endtell
An important aspect of the AppleScript implementation is the Open Scripting Architecture (OSA). [40] Apple provides OSA for other scripting languages and third-party scripting/automation products such as QuicKeys and UserLand Frontier, to function on an equal status with AppleScript. AppleScript was implemented as a scripting component, and the basic specs for interfacing such components to the OSA were public, allowing other developers to add their own scripting components to the system. Public client APIs for loading, saving and compiling scripts would work the same for all such components, which also meant that applets and droplets could hold scripts in any of those scripting languages.
One feature of the OSA is scripting additions, or OSAX for Open Scripting Architecture eXtension, [36] which were inspired by HyperCard's External Commands. Scripting additions are libraries that allow programmers to extend the function of AppleScript. Commands included as scripting additions are available system-wide, and are not dependent on an application (see also § AppleScript Libraries). The AppleScript Editor is also able to directly edit and run some of the OSA languages.
This section needs expansionwith: comparison of JXA and AppleScript scripting. You can help by adding to it. (May 2017) |
Under OS X Yosemite and later versions of macOS, the JavaScript for Automation (JXA) component remains the only serious OSA language alternative to AppleScript, [14] though the Macintosh versions of Perl, Python, Ruby, and Tcl all support native means of working with Apple events without being OSA components. [30] : 516
JXA also provides an Objective-C (and C language) foreign language interface. [14] Being an environment based on WebKit's JavaScriptCore engine, the JavaScript feature set is in sync with the system Safari browser engine. JXA provides a JavaScript module system and it is also possible to use CommonJS modules via browserify. [41]
The AppleScript scripting language excels in its ability to call on multiple applications, but was not designed to perform task-specific functions itself. So, for example, you cannot use AppleScript to efficiently perform intensive math operations or lengthy text processing. However, you can use AppleScript in combination with shell scripts, Perl scripts, and other scripting languages. This allows you to work with the most efficient language for the task at hand.
A file manager or file browser is a computer program that provides a user interface to manage files and folders. The most common operations performed on files or groups of files include creating, opening, renaming, copying, moving, deleting and searching for files, as well as modifying file attributes, properties and file permissions. Folders and files may be displayed in a hierarchical tree based on their directory structure.
HyperTalk is a discontinued high-level, procedural programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer's HyperCard hypermedia program by Bill Atkinson. Because the main target audience of HyperTalk was beginning programmers, HyperTalk programmers were usually called "authors" and the process of writing programs was known as "scripting". HyperTalk scripts resembled written English and used a logical structure similar to that of the Pascal programming language.
The Finder is the default file manager and graphical user interface shell used on all Macintosh operating systems. Described in its "About" window as "The Macintosh Desktop Experience", it is responsible for the launching of other applications, and for the overall user management of files, disks, and network volumes. It was introduced with the Macintosh 128K—the first Macintosh computer—and also exists as part of GS/OS on the Apple IIGS. It was rewritten completely with the release of Mac OS X in 2001.
In computing, a window is a graphical control element. It consists of a visual area containing some of the graphical user interface of the program it belongs to and is framed by a window decoration. It usually has a rectangular shape that can overlap with the area of other windows. It displays the output of and may allow input to one or more processes.
In user interface design, a modal window is a graphical control element subordinate to an application's main window.
In computer graphical user interfaces, drag and drop is a pointing device gesture in which the user selects a virtual object by "grabbing" it and dragging it to a different location or onto another virtual object. In general, it can be used to invoke many kinds of actions, or create various types of associations between two abstract objects.
File Explorer, previously known as Windows Explorer, is a file manager application and default desktop environment that is included with releases of the Microsoft Windows operating system from Windows 95 onwards. It provides a graphical user interface for accessing the file systems, as well as user interface elements such as the taskbar and desktop.
The taskbar is a graphical user interface element that has been part of Microsoft Windows since Windows 95, displaying and facilitating switching between running programs. The taskbar and the associated Start Menu were created and named in 1993 by Daniel Oran, a program manager at Microsoft who had previously collaborated on great ape language research with the behavioral psychologist B.F. Skinner at Harvard.
Aqua is the graphical user interface, design language and visual theme of Apple's macOS and iOS operating systems. It was originally based on the theme of water, with droplet-like components and a liberal use of reflection effects and translucency. Its goal is to "incorporate color, depth, translucence, and complex textures into a visually appealing interface" in macOS applications. At its introduction, Steve Jobs noted that "... it's liquid, one of the design goals was when you saw it you wanted to lick it".
In classic Mac OS System 7 and later, and in macOS, an alias is a small file that represents another object in a local, remote, or removable file system and provides a dynamic link to it; the target object may be moved or renamed, and the alias will still link to it. In Windows, a "shortcut", a file with a .lnk extension, performs a similar function.
Spotlight is a system-wide desktop search feature of Apple's macOS, iOS, iPadOS, and visionOS operating systems. Spotlight is a selection-based search system, which creates an index of all items and files on the system. It is designed to allow the user to quickly locate a wide variety of items on the computer, including documents, pictures, music, applications, and System Settings. In addition, specific words in documents and in web pages in a web browser's history or bookmarks can be searched. It also allows the user to narrow down searches with creation dates, modification dates, sizes, types and other attributes. Spotlight also offers quick access to definitions from the built-in New Oxford American Dictionary and to calculator functionality. There are also command-line tools to perform functions such as Spotlight searches.
Apple events are the message-based interprocess communication mechanism in Mac OS, first making an appearance in System 7 and supported by every version of the classic Mac OS since then and by macOS. Apple events describe "high-level" events such as "open document" or "print file", whereas earlier OSs had supported much more basic events, namely "click" and "keypress". Apple events form the basis of the Mac OS scripting system, the Open Scripting Architecture.
A menu bar is a graphical control element which contains drop-down menus.
SuperTalk is the scripting language used in SuperCard. SuperTalk is a descendant of HyperTalk.
Workbench is the desktop environment and graphical file manager of AmigaOS developed by Commodore International for their Amiga line of computers. Workbench provides the user with a graphical interface to work with file systems and launch applications. It uses a workbench metaphor for representing file system organisation.
In computing, the trash, also known by other names such as dustbin, wastebasket, and others, is a graphical user interface desktop metaphor for temporary storage for files set aside by the user for deletion, but not yet permanently erased. The concept and name is part of Mac operating systems, a similar implementation is called the Recycle Bin in Microsoft Windows, and other operating systems use other names.
The Control Strip is a user interface component introduced in the "classic" System 7 Macintosh operating system.
AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions of AmigaOS required the Motorola 68000 series of 16-bit and 32-bit microprocessors. Later versions, after Commodore's demise, were developed by Haage & Partner and then Hyperion Entertainment. A PowerPC microprocessor is required for the most recent release, AmigaOS 4.
A command-line interface (CLI) is a means of interacting with a computer program by inputting lines of text called command-lines. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user-friendly alternative to the non-interactive interface available with punched cards.