A complete operating system experience in your terminal
Project description
TerminalOS
🖥️ Overview
TerminalOS is a full desktop-like experience within your terminal. Built using Python and the Textual framework, it offers a responsive and visually appealing TUI (Text User Interface) with multiple applications, window management, theme support, and keyboard navigation—all running inside a terminal window.
✨ Features
🖥️ Desktop Environment
- Beautiful ASCII desktop with real-time clock and system info
- Window management with modals and multiple screen support
- Theme support: Dark, Light, Matrix, Cyberpunk
- Keyboard shortcuts for quick navigation
📱 Built-in Applications
| App | Description | Status | Shortcut |
|---|---|---|---|
| 📁 File Manager | Browse directories and file info | ✅ Ready | 1 in launcher |
| 📝 Text Editor | Syntax-highlighted file editing | ✅ Ready | 2 in launcher |
| 🔢 Calculator | Scientific calculator with history | ✅ Ready | 3 in launcher |
| 📊 System Monitor | CPU, memory, and disk usage | ✅ Ready | 4 in launcher |
| 💻 Terminal | Built-in CLI emulator | 🚧 Coming Soon | 5 in launcher |
| 🎵 Music Player | Playlist and audio playback | 🚧 Coming Soon | 6 in launcher |
🎨 Themes & Customization
- Dark, Light, Matrix, and Cyberpunk themes
- Persistent configuration settings
- Responsive layout for different terminal sizes
- ASCII art and Unicode icons
⌨️ Keyboard Shortcuts
F1: HelpF12: App LauncherCtrl+Q: QuitESC: Close current dialog/appTab: Move between UI elements
🚀 Quick Start
Installation
git clone https://github.com/000xs/terminalos.git
cd terminalos
pip install -r requirements.txt
pip install -e .
terminalos
📋 Requirements
- Python 3.8+
- Unicode-supported terminal
- Minimum 80x24 (120x40 recommended)
- Cross-platform (Windows, Linux, macOS)
Dependencies
textual>=0.41.0rich>=13.0.0click>=8.1.0psutil>=5.9.0pyfiglet>=0.8.0pygments>=2.14.0
🛠️ Installation Methods
Method 1: Direct Launcher
git clone https://github.com/000xs/terminalos.git
cd terminalos
python start_terminalos.py
Method 2: Package Install
git clone https://github.com/000xs/terminalos.git
cd terminalos
pip install -e .
terminalos
📖 Usage Guide
Start TerminalOS
terminalos
# Optional flags:
--debug
--no-boot
--version
Navigation
- Boot screen:
Enter - App launcher:
F12 - Return to desktop:
ESC - Help:
F1
📚 Application Guide
📁 File Manager
- Browse using arrow keys
- View metadata in sidebar
📝 Text Editor
- Syntax highlighting
- Real-time line/word/char count
- Tabs and file operations
🔢 Calculator
- Arithmetic + scientific functions
- Keyboard/mouse input
📊 System Monitor
- Live CPU, memory, and disk usage
🎨 Theme System
Available Themes
- Dark (Default)
- Light
- Matrix
- Cyberpunk
Change Theme
terminalos --theme matrix
⚙️ Configuration File
Located at:
- Windows:
%USERPROFILE%\.config\terminalos\ - Linux/macOS:
~/.config/terminalos/
Example config.json:
{
"theme": "dark",
"debug": false,
"auto_save": true,
"appearance": {
"show_boot": true,
"animations": true,
"font_size": 12
},
"file_manager": {
"show_hidden": false,
"default_path": "~",
"sort_by": "name"
},
"text_editor": {
"syntax_highlighting": true,
"line_numbers": true,
"tab_size": 4
}
}
🧩 Architecture
terminalos/
├── core/ # App framework
├── desktop/ # Desktop and taskbar
├── apps/ # Built-in apps
├── config/ # Settings and themes
└── utils/ # Helpers and logging
🔧 Development Guide
Setup
git clone https://github.com/000xs/terminalos.git
cd terminalos
pip install -e .
Create Custom App
from textual.screen import Screen
from textual.widgets import Header, Footer, Static
class MyCustomApp(Screen):
def compose(self):
yield Header()
yield Static("Hello from my custom app!")
yield Footer()
def on_key(self, event):
if event.key == "escape":
self.dismiss()
Add to launcher in desktop/desktop.py:
from ..apps.my_app import MyCustomApp
self.dismiss()
self.app.push_screen(MyCustomApp())
🤝 Contributing
- Bug reports: Include Python version, OS, steps
- Features: Describe use case + mockup if possible
- Pull requests: Follow PEP8, type hints, test coverage
📝 Changelog
v1.0.0
- Initial release
- Desktop, file manager, editor, calculator, system monitor
- 4 themes
v1.1.0 (Planned)
- Terminal emulator
- Music player
- Plugin system
- More themes
🐛 Troubleshooting
ModuleNotFoundError: Use direct launcher- Python conflict: Use correct Python version
- Missing deps:
pip install textual rich click psutil pyfiglet pygments - Terminal display issues:
echo $TERM
🏆 Credits
- Textual, Rich
- Terminalcraft slack channel, josia idea
📄 License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file terminalos-1.0.2.tar.gz.
File metadata
- Download URL: terminalos-1.0.2.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db9b41d4526f04d56dc6c4a49d0c10c9415b178f528ce09f70b03ec67821c207
|
|
| MD5 |
08f9a2ea5d0b3ad349361fa24b8ebdc3
|
|
| BLAKE2b-256 |
4a38b1f32030e1d477ee4b26e50b95e17a70cfb4402ef26c2f409fe03d9d90ce
|
File details
Details for the file terminalos-1.0.2-py3-none-any.whl.
File metadata
- Download URL: terminalos-1.0.2-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20248b6aade27aa39f455899c0d90ab2db4a771f47e812ec9ba2eb646a894234
|
|
| MD5 |
baa94a17074e00aaea2ed67924a2c307
|
|
| BLAKE2b-256 |
d1c24e34995120e4d1aabf177e74582f9999e0c16e6e1f1b0659fa1f20784f9a
|