Skip to main content

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. alt text alt text alt text

✨ 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: Help
  • F12: App Launcher
  • Ctrl+Q: Quit
  • ESC: Close current dialog/app
  • Tab: 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.0
  • rich>=13.0.0
  • click>=8.1.0
  • psutil>=5.9.0
  • pyfiglet>=0.8.0
  • pygments>=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

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

terminalos-1.0.1.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

terminalos-1.0.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file terminalos-1.0.1.tar.gz.

File metadata

  • Download URL: terminalos-1.0.1.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for terminalos-1.0.1.tar.gz
Algorithm Hash digest
SHA256 491c8bbc0fdc30eec9f19a0506376d8a28c3d4cc0e60cc5d78617f3646b6f4b9
MD5 6b648a91b3c8efafd4f8778df0b18a75
BLAKE2b-256 43d018ac29d58afd1efa9aa44f43cbf6d05be4417483d008dd716b47b95f95ce

See more details on using hashes here.

File details

Details for the file terminalos-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: terminalos-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for terminalos-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8b3be032efc96508f7aaca5c3e547242c30164034b8fb27936c9cd8513ffb86
MD5 aef2b4f2f1b118bee09ffbce84c2571b
BLAKE2b-256 6de4134d34ca9e0033eb4e4232c217aff0113193126b058b7fe2d5bdeb636b83

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page