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.2.tar.gz (17.9 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.2-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

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

Hashes for terminalos-1.0.2.tar.gz
Algorithm Hash digest
SHA256 db9b41d4526f04d56dc6c4a49d0c10c9415b178f528ce09f70b03ec67821c207
MD5 08f9a2ea5d0b3ad349361fa24b8ebdc3
BLAKE2b-256 4a38b1f32030e1d477ee4b26e50b95e17a70cfb4402ef26c2f409fe03d9d90ce

See more details on using hashes here.

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

Hashes for terminalos-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 20248b6aade27aa39f455899c0d90ab2db4a771f47e812ec9ba2eb646a894234
MD5 baa94a17074e00aaea2ed67924a2c307
BLAKE2b-256 d1c24e34995120e4d1aabf177e74582f9999e0c16e6e1f1b0659fa1f20784f9a

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