Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

shelly_banner.png

Shelly Wiki

Search Standard Packages, AUR, and Flatpak in one place image image image

About

Shelly is a modern reimagination of the Arch Linux package manager, designed to be a more intuitive and user-friendly alternative to pacman and octopi. Unlike other Arch package managers, Shelly offers a modern, visual interface with a focus on user experience and ease of use; It IS NOT built as a pacman wrapper or front-end. It is a complete reimagination of how a user interacts with their Arch Linux system, providing a more streamlined and intuitive experience.

Quick Install

The recommended installation method for Shelly is for CachyOS or using CachyOS packages

sudo pacman -S shelly

This will download and install the latest release, including the UI and CLI tools.

To install with an AUR helper like yay or paru.

yay -S shelly

or

paru -S shelly

Uninstall

For standard package removal

sudo pacman -Rns shelly

If installed from AUR

yay -Rns shelly

or

paru -Rns shelly

Features

  • Modern-CLI: Provides a command-line interface for advanced users and automation, with a focus on ease of use.
  • Native Arch Integration: Directly interacts with libalpm for accurate and fast package management.
  • Native Wayland Support: Front end built using GTK4.
  • Package Management: Supports searching and filtering for, installing, updating, and removing packages.
  • Repository Management: Synchronizes with official repositories to keep package lists up to date.
  • AUR Support: Integration with the Arch User Repository for a wider range of software.
  • Flatpak Support: Manage Flatpak applications alongside native packages.

Roadmap

Upcoming features and development targets:

  • Trigger updates from Notifications: Allow users to trigger package updates from the notification system.
  • Repository Modification: Allow modification of supported repositories (In progress).
  • App Image Support: Further app image support similar to AppLever. (In progress)
  • Flatpak Overhaul: Improve Flatpak integration and management. Allow for management of flatpak app stream locations. (In progress)
  • Package Import: Allow for import of a previously existing package list to bring the system back to a saved package state. (Not yet started)
  • Icons for Standard Packages: Allow icons for standard package applications to be viewed while searching for packages. (Architecting)

Prerequisites

  • Arch Linux (or an Arch-based distribution)
  • .NET 10.0 SDK (for building)
  • libalpm (provided by pacman)

Optional Prerequisites

  • Flatpak: Can be installed via shelly inside settings by turning flatpak on.

Installation

Using PKGBUILD

Since Shelly is designed for Arch Linux, you can build and install it using the provided PKGBUILD:

git clone https://github.com/ZoeyErinBauer/Shelly-ALPM.git cd Shelly-ALPM makepkg -si

Manual Build

You can also build the project manually using the .NET CLI:

dotnet publish Shelly.Gtk/Shelly.Gtk.csproj -c Release -o publish/shelly-ui dotnet publish Shelly-CLI/Shelly-CLI.csproj -c Release -o publish/shelly-cli dotnet publish Shelly-CLI/Shelly-CLI.csproj -c Release -o publish/shelly-notifications

alternatively, you can run

sudo ./local-install.sh

This will build and perform the functions of install.sh

The binary will be located in the /opt/shelly directory.

Usage

Run the application from your terminal:

For ui:

shelly-ui

For cli:

shelly

Notifications will be started with the ui, or it can be configured to launch at startup using your systems startup configuration to run:

shelly-notifications

Shelly-CLI

Shelly also includes a command-line interface (shelly-cli) for users who prefer terminal-based package management. The CLI provides the same core functionality as the UI but in a scriptable, terminal-friendly format.

CLI Commands

Package Management

CommandDescription
syncSynchronize package databases
list-installedList all installed packages
list-availableList all available packages
list-updatesList packages that need updates
install <packages>Install one or more packages
install-localInstall a local package file
remove <packages>Remove one or more packages
update <packages>Update one or more packages
upgradePerform a full system upgrade

Keyring Management (keyring)

CommandDescription
keyring initInitialize the pacman keyring
keyring populate [keyring]Reload keys from keyrings in /usr/share/pacman/keyrings
keyring recv <keys>Receive keys from a keyserver
keyring lsign <keys>Locally sign the specified key(s)
keyring listList all keys in the keyring
keyring refreshRefresh keys from the keyserver

AUR Management (aur)

CommandDescription
aur search <query>Search for AUR packages
aur listList installed AUR packages
aur list-updatesList AUR packages that need updates
aur install <packages>Install AUR packages
aur update <packages>Update specific AUR packages
aur upgradeUpgrade all AUR packages
aur remove <packages>Remove AUR packages

Flatpak Management (flatpak)

CommandDescription
flatpak search <query>Search flatpak
flatpak listList installed flatpak apps
flatpak list-updatesList flatpak apps with updates
flatpak install <apps>Install flatpak app
flatpak update <apps>Update flatpak app
flatpak uninstall <apps>Remove flatpak app
flatpak run <app>Run flatpak app
flatpak runningList running flatpak apps
flatpak search <app>search flathub
flatpak sync-remote-appstreamSync remote appstream
flatpak get-remote-appstreamReturns remote appstream json
flatpak upgradeUpgrade all flatpak apps

Shelly Utility (utility)

CommandDescription
utility exportExport sync file
utility updatescheck for updates as non-root

CLI Configuration

Shelly-CLI uses a JSON configuration file to customize its behavior. On the first run, it automatically creates a default configuration file at:

~/.config/shelly/config.json

Configuration Options

OptionDescription
FileSizeDisplayControls how file sizes are displayed.
Possible values: "Bytes", "Megabytes", "Gigabytes".
Default: "Bytes"
DefaultExecutionDetermines which command is executed when shelly is run without any arguments (the default command).
Possible values: "UpgradeStandard", "UpgradeFlatpak", "UpgradeAur", "UpgradeAll", "Sync", "SyncForce", "ListInstalled".
Default: "UpgradeAll"

Example config.json

{ "FileSizeDisplay": "Bytes", "DefaultExecution": "UpgradeAll" }

CLI Options

Global options:

  • --help - Display help information
  • --version - Display version information

sync command:

  • -f, --force - Force synchronization even if databases are up to date

install, remove, update commands:

  • --no-confirm - Skip confirmation prompt

upgrade command:

  • --no-confirm - Skip confirmation prompt

CLI Examples

# Synchronize package databases shelly sync # Force sync even if up to date shelly sync --force # List all installed packages shelly list-installed # List packages needing updates shelly list-updates # Install packages shelly install firefox vim # Install without confirmation shelly install firefox --no-confirm # Remove packages shelly remove firefox # Update specific packages # This should not be done unless you know what you're doing shelly update firefox vim # Perform full system upgrade # Preferred way to update your system shelly upgrade # System upgrade without confirmation shelly upgrade --no-confirm

Development

Shelly is structured into several components:

  • Shelly.Gtk: The main GUI desktop application.
  • Shelly-CLI: Command-line interface for terminal-based package management.
  • Shelly-Notifications: Tray service to manage notifactions the Shelly-UI.
  • PackageManager: The core logic library providing bindings and abstractions for libalpm.
  • PackageManager.Tests: Comprehensive tests for the package management logic.

Building for Development

dotnet build

Running Tests

dotnet test

License

This project is licensed under the GPL-3.0 License – see the LICENSE file for details.

关于 About

Pacman alternative for ArchLinux, designed with you in mind.
archlinuxarchlinux-communityarchlinux-packagearchlinuxguicachyosclidotnetgaruda-linuxgtkgtk4linuxpackage-managementpackage-managerpacmanshellyshelly-clishelly-uivisual

语言 Languages

C#96.3%
Shell3.5%
CSS0.2%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
1196
Total Commits
峰值: 141次/周
Less
More

核心贡献者 Contributors