User Interface Look
The Appearance > Look > User Interface Look preference selects the overall look of Wing's user interface. It is shown as the Look switch at the top of the Appearance page of Preferences, and the looks can also be selected from the menu button at the right end of the toolbar.
Modern has flat controls, a single user interface font on all OSes, and more room around rows and tabs. This is the default. Settings from an older version of Wing that used another look are switched to Modern once, the first time this version starts, along with its themes unless you chose others, and the dark display mode unless you set one. To go back, select the previous look here.
Classic is the look of earlier versions of Wing. It uses the OS's font for the user interface.
Emulate Windows or Emulate macOS uses the OS's own style and colors. It follows the OS's light or dark setting, except on Windows 10 and earlier, where it is always light. It has the Modern look's toolbar, status bar, and breadcrumbs, drawn in the OS's style at the Classic look's sizes. This look is not offered on Linux.
The editor, tools, and menus work the same way in all looks. The differences are described below. The colors used in all looks are set by the display mode and themes, as described in Display Style and Colors.
Density, Font, and Icons
The Appearance > Spacing and Scaling > Density preference sets how much room the Modern look leaves in rows, tabs, toolbars, and controls. Comfortable is the default. Compact matches the density of the Classic look.
The Modern look uses the Inter font that Wing bundles, so text looks the same on every OS. The font and its size are changed with the Appearance > Text > UI Font and Appearance > Text > UI Font Size preferences. See Text Font and Size for details.
The Appearance > Colors > Icons preference selects the icons used in the Modern look: Wing's Classic icons, tinted with the display theme's icon colors, or Modern Line Icons. The Classic look always uses the Classic icons.
The Toolbar
In the Modern and Emulate looks, the toolbar shows the tool groups selected with the Layout > Toolbar > Groups Shown preference at its left, followed by any custom items. When the window is too narrow, the tools that do not fit are placed in an overflow menu. Right-clicking on the toolbar displays a menu for changing icon size and style, the groups shown, and custom items.
When the menu bar is hidden, the project button at the left of the toolbar shows the name of the current project. Clicking on it displays a menu for creating, opening, saving, and closing projects, and for opening Project Properties. On macOS, this button is always shown.
When the project directory is under version control, the branch button shows the name of the current branch. Its tooltip also shows the number of changesets that have not yet been pushed to the default remote repository, if any. Its menu shows the project's status or log, commits the project, pulls changes from or pushes them to the default remote repository, switches or creates branches, and merges another branch into the current one. Committing and creating a branch are done in a dialog. Choosing a branch from Switch Branch switches to it; for a repository with many branches, a dialog is shown instead. Pushing to or pulling from other repositories is done in the version control tool. This button is hidden by unchecking the VCS Status group in Groups Shown.
The search field at the right of the toolbar searches the current file as you type, and finds files, commands, tools, preferences, and documentation pages by name. Ctrl-K, or Command-K on macOS, moves the keyboard focus to it in the default keyboard personality. The key binding is shown in the field when it is empty. For other keyboard personalities, bind a key to the command-palette command.
As you type, the search field selects the next match in the current file and lists the best matches, with the key binding for each command. The first row is selected, so Enter goes to the next match in the current file and Shift-Enter to the previous one. Use the arrow keys to select another match and press Enter to open the file, run the command, show the tool, open Preferences at the preference, or open the documentation page. Esc clears the field and returns to the editor.
- When the field is empty, it lists recently opened files.
- Starting with > lists only commands.
- Text that contains / matches file paths relative to the project directory, and directories can be completed with Tab.
- The last rows search for the text in many files, with Search in Files.
The magnifier icon at the left of the field selects what it searches. This is also set with the Layout > Toolbar > Search Field Searches preference. While the field searches Current File, the toolbar's own search area is hidden. Unchecking the Search Filenames & Commands group in Groups Shown hides the field.
The run buttons follow the search field. The first button shows the main entry point, or the current file if no main entry point is set. Its menu selects what to run, sets the current file as the main entry point, and opens the Debug Environment. Accept Debug Connections at the end of the menu controls whether Wing listens for externally launched debug processes in the current project, and the button's tooltip shows whether Wing is listening and on which hosts and ports. The button is followed by three icons, named in their tooltips: Run runs the entry point without debugging, Debug starts debugging it or continues a paused debug process, and Stop ends the debug process.
The other tools in the Debug group, such as stepping and pausing, appear after the run buttons. Unchecking the Debug group in Groups Shown hides them along with the run buttons.
When the project is set up for AI agents, the Tasks area after the debug tools shows counts of running tasks, tasks waiting for answers, tasks to review, and questions. Clicking on a count displays its menu, or shows the Tasks tool's Questions tab for questions. See The Tasks Tool for details.
The menu button at the right end of the toolbar selects the look and display mode, and sets some commonly changed preferences. When the menu bar is hidden with the Layout > Show Menubar preference, this button also contains the menu bar's menus.
The Status Bar
In the Modern and Emulate looks, the status bar at the bottom of the window shows these items from left to right, each with a tooltip:
- The caret position, as Ln and Col, or the range of selected lines.
- The current file's encoding, when it is set by the file, and its line endings.
- The version of Python used by the project.
- The version control branch of the current file's directory.
- The current perspective, after one other than the default has been used.
- While debugging, the state of the debug process, for example Running or Paused, followed by the file, line, and function where it is stopped. Clicking on the state displays a menu for continuing, pausing, or stopping the debug process.
- Messages, and the editor's modes such as read-only files and selection modes.
Tabs
In the Modern look, tabs are flat, and the selected tab is underlined in the theme's accent color. Collapsing tools and reaching tabs that do not fit work the same way in all looks, as described in User Interface Layout.
Options Menus
Most tools have an Options menu with settings and actions for that tool. In the Modern look, this menu is displayed by the ⋯ button, which has the tooltip Options. In the other looks, the button is labeled Options.
Breadcrumbs
In the Modern and Emulate looks, the editor shows breadcrumbs for the scopes around the caret, in place of the source index menus. See Navigating Source for details.
Tasks
In the Modern look, each task in the Tasks tool's Plan, Execute, and Review tabs is shown as a card. The first line shows the task's name and a colored chip for its state, such as Running, Needs Review, or Completed. The task's buttons, such as Cancel, Mark Complete, and Reset, are on a second line. The icons for deleting the task, queuing it, and adding a task before it are shown only while the mouse is over the card. See Executing Tasks for details.