Skip to content

A shell for multiplatform and available for plugins. You can either create your very own plugin or try plugins online! (Beta)

Notifications You must be signed in to change notification settings

lucheshidi/DuckShell

Repository files navigation

🦆 DuckShell (DUCKSHELL)

Windows Build Linux Build macOS Build

English | 简体中文

DuckShell is a lightweight, cross-platform, and highly extensible modern shell. It aims to provide developers with a simple yet feature-rich command-line environment through a powerful C++ plugin system.

🌟 Key Features

  • Extremely Lightweight: The core program is only about 20 MB, starting up in an instant.
  • Truly Cross-platform: Native support for Windows (x86_64, ARM64), Linux, and macOS.
  • Powerful Plugin System: Supports writing custom plugins in C++ for infinite functionality expansion.
  • Automated Build: Based on CMake FetchContent, achieving "zero manual dependency" installation by automatically handling zlib and minizip.
  • Open Source Spirit: Fully open source, community contributions are welcome.

📥 Installation Guide

You can download the pre-compiled binaries for your platform from the Latest Release page.

Supported Architectures

  • Windows: x86_64 (MinGW), ARM64 (Clang)
  • Linux: amd64, arm64
  • macOS: Intel, Apple Silicon (Universal .dmg)

🛠️ Compilation Instructions

DuckShell now implements automated dependency management; you don't need to manually install zlib or minizip.

Prerequisites

  • CMake (>= 3.15)
  • C++17 compatible compiler (GCC, Clang, or MSYS2 MinGW)
  • (Linux/macOS only) libcurl development library

Build Steps

# Clone the repository
git clone https://github.com/lucheshidi/DuckShell.git
cd DuckShell

# Configure and build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

🚀 Usage

  • Windows: Run DuckShell.exe directly.
  • Unix-like: Run ./DuckShell.

Common Commands

  • help: Display help information.
  • cls / clear: Clear the screen.
  • plugin: Enter plugin management mode.

🔌 Plugin System

The essence of DuckShell lies in its plugins.

  • Installing Plugins: Place compiled plugins (.dll / .so / .dylib) into the ~/duckshell/plugins/ directory.
  • Remote Download: Supports automatic download and extraction of plugins from configured repositories (relying on automated minizip integration).
  • Writing Plugins: Refer to the ExamplePlugins/HelloWorld example, use the interface defined in plugins_interface.h to get started quickly.

🤝 Contributing

We welcome any form of contribution!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

DuckShell - Making the command line simple again.

About

A shell for multiplatform and available for plugins. You can either create your very own plugin or try plugins online! (Beta)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages