Skip to content

TerminalOS is a full desktop-like experience within your terminal.

License

Notifications You must be signed in to change notification settings

000xs/terminalos

Repository files navigation

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

[downloade](https://github.com/000xs/terminalos/releases/tag/v1.0.0)

and run

terminalos.exe

πŸ“‹ 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
pip install -e .
terminalos  

or

tos

πŸ“– 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

About

TerminalOS is a full desktop-like experience within your terminal.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors