A desktop environment simulator inside your terminal, built with Textual.
Simulates a full GUI experience — windows, taskbar, start menu, and apps inside a terminal. Also supports pty and multiplex via the patty terminal (Linux only).
TextTop is a text-based desktop environment (?) built for the terminal. It provides a simulated OS experience — a window manager, start menu, apps, and dynamic layouts.
- Windowed GUI in the terminal
- Windows OS / Linux WM Layout Styles
- Mouse & keyboard navigation
- Virtual File System (VFS) for sandbox access
- Extensible modular architecture
- Floating Mode - move windows freely on the terminal.
- Tiling Mode - automatically snap windows to layouts (supports:
vstack,hstack,bsp,bsp_alt,ultra_wide,ultra_tall) - Windows - adds border, title bar, and controls to programs
- Window controls - move, resize, minimize, maximize, close
- Focus handling - Cycle focus, swap windows (tiled)
- Flyouts - popup menus, context menus
- Taskbar - widgets (clock, app launchers, start menu, window manager layout display)
- Start Menu - lists supported programs in the
/bindirectory - Notifications
- textual-dark
- textual-light
- nord
- gruvbox
- catpuccin-mocha
- dracula
- tokyo-night
- monokai
- flexoki
- catpuccin-latte
- solarized-light
- Most programs built with textual
- Most programs that run on the terminal (Linux)
- Clock - digital clock widget
- Notepad - minimalist text editor
- Snake - classic terminal snake game
- Patty - xterm-based terminal emulator (Linux only)
- Dustty - command dispatcher
- Python 3.11+
- Textual v6.5.0
- Unix-like terminal (Linux, macOS, or WSL)
- or Windows cli (cmd/powershell; not fully supported yet)
Clone the repository
git clone https://github.com/l4xp/textop.git
cd textopUse a virtual environment (optional, but recommended)
pip -m venv .venv
.venv/Scripts/activate # use the script compatible with your terminalInstall dependencies
pip install -r requirements.txtTo run the program:
python boot.pyor
textual run boot.pyctrl+p→keysto list all keys in the current context
| Key | Action |
|---|---|
Alt + Tab |
Switch active window |
Ctrl + ↑/↓/←/→ |
Move window directionally |
Ctrl + p |
Toggle Command Palette |
| Category | Feature | Status |
|---|---|---|
| General System & Display | Windows z-levels (layers) | [~] |
| Popup/expandable mini windows (flyouts system) | [x] |
|
| Desktop icons for applications (glyphs system) | [~] |
|
| Installer/setup mode for initial configuration | [ ] |
|
| Animations? (heavy) | [ ] |
|
| Simulated filesystem and OS folder structure (bin, home, etc.) (vfs) | [~] |
|
| Window Management | Workspaces / multiple desktops | [ ] |
| Window Basics (open, minimize, maximize, close, move, resize) | [x] |
|
| App switcher (Alt+Tab / activewindowlist) | [x] |
|
| Window states (runtime) | [x] |
|
| Window states (memory) | [ ] |
|
| Dynamic Layouts (float, vstack, hstack, uwide, utall, bsp, bsp_alt) | [x] |
|
| Desktop | Notification/toast system | [x] |
| State persistence (snapshots) | [ ] |
|
| User system (login/logout/switch/create/delete) | [ ] |
|
| Security (privileges, passwords, encrypt, decrypt system, hide/show) | [ ] |
|
| Global 'cursor', kb/mouse controlled | [ ] |
|
| Status Bar | Launchers (terminal, notepad, debug) | [x] |
| Dynamic launcher pinning | [ ] |
|
| Taskbar widgets (battery, volume, etc.) | [x] |
|
| Active Window feedback + switcher | [x] |
|
| Start menu populated from an application directory | [x] |
|
| Start Menu | [~] |
|
| Search functionality | [ ] |
|
| Apps | Notepad, terminal/s, snake game | [x] |
| Calculator, browser, media viewer/player, file manager, settings | [ ] |
|
| QOL | Screenshot (copy a selection to clipboard) | [ ] |
| Module-specific configs (taskbar, windows, wm) | [ ] |
|
| CSS override configs (taskbar, windows, wm, desktop) | [ ] |
|
| Compatibility | Command Pallette (in place of hotkeys) | [ ] |
| Use Ctrl+[A-Z, @], Enter, Esc, Tab, Backspace, Arrow keys, Function keys, Printable ASCII characters, UTF-8 text input only | [ ] |
This project is licensed under the MIT License — see the LICENSE file for details.
- Built with Textual
- Inspired by windows, komorebi, linux, sway, vtm, dvtm, desqview