Customizing the Appearance of Terminal Windows in macOS

The Mac Terminal app serves as a vital interface, providing users with a gateway into the UNIX foundations of macOS. In this article, we will explore how to effectively customize the appearance of Terminal to suit individual preferences and enhance user experience.
The roots of the UNIX operating system trace back to 1970, when it was developed at Bell Labs utilizing the C programming language. Over the decades, various iterations of UNIX have emerged, yet AT&T retains the patents and rights to what is now recognized as UNIX System V.
One significant variant of UNIX is the Berkeley Software Distribution (BSD), which originated from the University of California, Berkeley, in the 1980s. BSD contributed notably to the development of TCP/IP network sockets and libraries, laying the groundwork for the modern internet as we know it today.
FreeBSD, a variant of BSD, remains popular, with versions 3.3 and 4.2 being the most commonly used. Notably, macOS and iOS are built upon these versions, incorporating the mach microkernel from Carnegie Mellon University.
In the nascent days of UNIX, personal computers were nonexistent; instead, users connected to powerful UNIX mainframe computers through terminals. These terminals, often referred to as 'dumb' devices, included only a keyboard and a display, lacking any processing power on their own.
In fact, early mainframes did not even utilize terminals; they processed data stored on punch cards and relayed results through dot-matrix printers that printed on scrollable paper. Terminals served the essential function of transmitting UNIX commands and data back and forth between the user and the mainframe, which acted much like the central processing units (CPUs) in today's desktop computers.
As technology evolved, various terminal standards were established, leading to the introduction of dedicated desktop terminal devices. Companies such as Digital Equipment Corporation produced models like the VT100, making it easier to connect to mainframes.
With advancements came smaller servers known as minicomputers, which were significantly more compact than their mainframe predecessors but still occupied considerable space. As the personal computing revolution gained momentum in the late 1970s, minicomputers gave way to desktop PCs or microcomputers. However, UNIX did not see widespread adoption on personal computers until the 1980s, when Sun Microsystems launched its SPARC workstations targeted at universities and engineering fields.
AT&T also entered the market with its own UNIX PC around that time. Sun's Solaris operating system marked a turning point, being the first practical mainstream desktop UNIX variant, catapulting Sun to instant success in the tech industry.
For common computer users, however, personal computers predominantly ran either Microsoft Windows or early versions of Apple's Macintosh operating system, which would later be rebranded as Mac OS. This landscape shifted dramatically with the release of Mac OS X in 2000, which is now known simply as macOS.
The macOS Terminal application is a product of Apple's foresight, as the company and its predecessor, NeXT, ensured a Terminal app was bundled with their operating systems from the outset. Today, the Terminal app can be found in the /Applications/Utilities folder on every macOS installation.
Upon launching Terminal, users are greeted with a single window that mirrors the UNIX terminal environment of the minicomputer era. The Terminal starts a new shell whenever opened, allowing users to execute UNIX text commands. Additionally, multiple shell windows can be opened simultaneously, either in separate windows or tabs, enabling users to run different commands concurrently.
Users can also run shell scripts directly within Terminal by dragging and dropping the script files from Finder into the Terminal window and pressing Return. Shell scripts are essentially plain text files that contain a series of executable commands.
In macOS, users can choose between two primary shells: bash and zsh, both of which are variants of the standard UNIX command shell. Upon startup, Terminal seeks specific configuration files located in the users home directory, the typically hidden /private/etc directory, and several subdirectories within these locations.
To execute a UNIX command in Terminal, simply type it in (along with any required options or parameters) and press Return. By default, the macOS Terminal shell displays black text on a white background, but users can easily customize its appearance through the Terminal -> Settings menu. This opens a comprehensive Settings window filled with various customization options.
Within the Settings window, users will find four tabs, with the General and Profiles tabs being the most significant. The General tab allows users to select the default Profile for Terminal at startup, choose the shell to use, and set the behavior of new windows and tabs when they first open.
The Profiles tab grants users the ability to modify existing Profiles and other settings, such as:
- Default window size
- Text properties
- Keyboard options
- Shell behavior
- Hardware terminal emulation options
The Advanced tab provides access to hardware terminal options, allowing Terminal windows to mimic the behavior of real hardware terminals, such as those from the DEC VT series or X-Windows xterm, alongside options for text encoding.
Users can further personalize their terminal experience by adjusting terminal bell settings (either audible or visual), cursor behavior, and how input is interpreted. The Terminal app comes with several default profiles, with Basic (black on white) as the standard. To designate any Profile as the default, select it from the left-hand list and click the Default button below.
A particularly interesting feature of Terminal is the ability to export Profile settings to a .terminal file by clicking the small ... icon next to the Default button. This allows users to save their customized settings and transfer them to another Mac.
Users can also create unique custom Profiles by clicking the + button and configuring the settings to their preferences, ensuring that each Profile has a distinct name for easy identification.
Traditionally, early UNIX hardware terminals displayed text in white on black or green or amber hues on black backgrounds. The choice of color depended largely on the CRT phosphor used in the terminal's display rather than adjustable settings.
Terminal in macOS emulates the classic terminal aesthetics through its Pro Profile. For those seeking a nostalgic feel, there is a fascinating free application called cool-retro-term, which mimics the appearance of old CRT terminal displays. Users should note that they will need to bypass macOS's Gatekeeper security settings during the initial launch of the cool-retro-term app.
To modify the text and window appearance within Terminal, users can explore the Text and Window tabs. It is possible to alter the look of predefined Apple Profiles by selecting one and adjusting its options through the tabs on the right. Notably, there is no Save or Apply button for Terminal settings; instead, any changes made are applied immediately if an open window or tab is using the Profile being edited.
Under the Text tab, users will find crucial options such as:
- Background
- Font
- Antialias text
- ANSI colors
- Cursor
Later hardware terminals introduced the ability to display colored text, but they were limited to a predefined set of ANSI colors. Early UNIX terminals also showcased variations in the text cursor, with shapes ranging from an underscore to a block or vertical line character. Cursor blinking was an option on some models but not others. Users can customize these cursor settings in the "Cursor" section of the Text pane.
In the Window tab, key options include:
- Title
- Working directory
- Active process name
- Shell command name
- TTY name
- Dimensions and window size
The working directory, referred to as 'pwd' in UNIX terminology, signifies the local folder currently in use by Terminal on your Mac. The 'pwd' command, which stands for Present Working Directory, can be executed in any Terminal window to reveal the current folder. Notably, if the Working Directory option is enabled, the folder name appears on the left side of the Terminal window title bar, dynamically updating as the user navigates through directories using the 'cd' (change directory) command.
The Active Process Name checkbox allows users to view the currently running process in the title bars of their Terminal windows, listed alongside the working directory name. In the UNIX context, a process refers to a program currently executing in the Terminal, functioning without a graphical user interface (GUI). Users can terminate any active process by pressing Control-Z or the 'q' key.
Most UNIX commands consist of single binary applications stored on disk as part of the operating system. By default, the shell name appears as the process name in Terminal window title bars.
One intriguing setting within the Window tab is labeled TTY name. TTY stands for teletype, an electro-mechanical device used for remote text communication. Teletype devices gained popularity in the 1930s and remained prevalent until the late 1970s, when they were eclipsed by computer terminals and personal computers.
A brief history of the teletype reveals its roots in teleprinters that emerged in the mid to late 1800s, which themselves were derived from the telegraph system that utilized Morse code for communication. Telegrams, widely used in the 1940s and 1950s, were short printed messages delivered by hand, creating a niche industry before newer technologies took over. The text messaging of that era was slower, but it served a similar purpose.
Modern companies like iTelegram still offer users the ability to send hand-delivered paper telegrams over the internet for a fee.
The transition from teleprinters to teletypes occurred during the 1930s to the 1950s, eventually giving way to the teletype, which was subsequently replaced by computer terminals. In the late 1970s, these systems were supplemented by Telex, a standardized text transmission service that could send messages over traditional telephone lines. Telex operated at a notably slow speed of approximately sixty-six words per minute but offered the advantage of multiplexing, enabling messages to be sent from one source to multiple destinations simultaneously.
Most Telex machines resembled electronic typewriters but were equipped with telephones. Teletype and Telex terminals were often designated by sequential numbers within organizations for easy identification.
In todays macOS Terminal, enabling the TTY name setting allows users to see each tab labeled with sequential identifiers like ttys000, ttys001, and so forth.
Terminal window size can also be customized in the settings. By enabling the Dimensions checkbox, each Terminal window will display its actual size in the title bar. Users can adjust the window dimensions by clicking and dragging the corners or edges of the window, with the title bar dimensions updating in real time.
With these methods, users can tailor their Terminal windows to their liking. There are numerous other avenues for configuring Terminal display options, such as setting environment variables and modifying UNIX profile files, which may be explored in a future article.
For now, the built-in Terminal settings provided by Apple should suffice to help users customize their experience. To learn more, readers can check out our previous article on how to clear the command history in macOS Terminal.
For further reading on UNIX history, Brian Kernighan's book titled 'UNIX: A History and a Memoir' offers valuable insights.