chairlift

module
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2026 License: GPL-3.0

README ΒΆ

ChairLift

A modern system management tool for Snow Linux

Manage your Homebrew packages, monitor system health, and maintain your system with ease.


Screenshots

ChairLift Home Page


Features

πŸ“¦ Homebrew Package Management

  • View Installed Packages: Browse all installed formulae and casks in organized expandable lists
  • Search & Install: Search the Homebrew repository and install packages with one click
  • Update & Upgrade: Keep Homebrew up-to-date and upgrade outdated packages individually
  • Pin Packages: Pin packages to prevent accidental upgrades
  • Curated Bundles: Install pre-configured package bundles for common use cases

πŸ₯ System Health Monitoring

  • System Performance: Quick access to Mission Center for detailed system monitoring
  • Health Overview: Check system diagnostics and health status

πŸ”§ Updates & Maintenance

  • Homebrew Updates: Check for and install package updates
  • Outdated Packages: View and upgrade packages that have newer versions available
  • System Maintenance: Keep your system running smoothly

Installation

Building from Source

ChairLift uses the Meson build system:

# Clone the repository
git clone https://github.com/frostyard/chairlift.git
cd chairlift

# Build and install
meson setup build
meson compile -C build
sudo meson install -C build

Dependencies

  • Python 3.x
  • PyYAML (python3-yaml)
  • GTK4
  • libadwaita
  • Homebrew (for package management features)
  • Mission Center (optional, for system performance monitoring)

Usage

Launch ChairLift from your application menu or run:

chairlift

Main Sections

  1. System: Monitor system health and performance
  2. Updates: Manage Homebrew updates and outdated packages
  3. Applications: View installed packages, search for new ones, and install curated bundles
  4. Maintenance: System maintenance tools (coming soon)
  5. Help: Documentation and support resources (coming soon)

Managing Packages

  • Browse Installed: Navigate to Applications β†’ Brew Packages to see all installed formulae and casks
  • Search: Use the search box to find packages by name or keyword
  • Install: Click the install button next to search results or bundle items
  • Pin/Unpin: Click the pin icon to lock/unlock a package version
  • Remove: Click the trash icon to uninstall a package
  • Upgrade: Click upgrade button next to outdated packages

Bundle Installation

ChairLift supports installing curated package bundles (Brewfiles) located in /usr/share/snow/bundles. Each bundle is a pre-configured set of packages for specific use cases.


Configuration

ChairLift is highly configurable and can be adapted for different Linux distributions. The application uses a YAML configuration file to control which features are displayed and which applications are launched for various system management tasks.

Making ChairLift Portable

While ChairLift was designed for Snow Linux, it can be easily customized for other distributions by:

  • Disabling Snow-specific features: Hide Homebrew package management if your distribution doesn't use it
  • Customizing system tools: Configure which applications to launch for system monitoring, Flatpak management, etc.
  • Setting help resources: Point users to your distribution's documentation, issue tracker, and community chat

Configuration File

See CONFIG.md for detailed documentation on:

  • Available configuration options
  • How to show/hide specific feature groups
  • Customizing application launchers
  • Setting up help resource URLs
  • Example configurations for non-Snow distributions

Configuration files are searched in the following locations (in order):

  1. /etc/chairlift/config.yml (system-wide - highest priority)
  2. /usr/share/chairlift/config.yml (package maintainer defaults)
  3. chairlift/config.yml (development/source directory)

Development

Project Structure

chairlift/
β”œβ”€β”€ chairlift/           # Main application code
β”‚   β”œβ”€β”€ core/           # Core functionality (homebrew.py)
β”‚   β”œβ”€β”€ views/          # UI views (user_home.py)
β”‚   β”œβ”€β”€ gtk/            # GTK UI templates
β”‚   └── assets/         # Application assets
β”œβ”€β”€ data/               # Desktop files and icons
β”œβ”€β”€ po/                 # Translation files
└── meson.build         # Build configuration

Key Components

  • chairlift/core/homebrew.py: Python library for Homebrew integration

    • Package listing and searching
    • Installation and removal
    • Pin/unpin functionality
    • Bundle management
    • Update and upgrade operations
  • chairlift/views/user_home.py: Main UI implementation

    • GTK4/Adwaita interface
    • Async operations with threading
    • Toast notifications for user feedback

Development Environment

ChairLift includes a preconfigured development environment using Distrobox and Just for easy setup:

Using Just

Just is a command runner that provides convenient shortcuts for common development tasks. Available commands:

just setup    # Create and configure the distrobox development container
just enter    # Enter the development container
just build    # Build the project with meson
just local    # Build and install to ./install directory
just run      # Run the application in development mode
just clean    # Clean build artifacts
just pot      # Generate translation template
Using Distrobox

The project includes a distrobox.ini configuration that sets up a Debian Trixie container with all required dependencies. This ensures a consistent development environment across different host systems.

To get started:

# Create the development container
just setup

# Enter the container
just enter

# Inside the container, build and run
just build
just run

The distrobox configuration automatically mounts:

  • /home/linuxbrew - for Homebrew integration testing
  • /usr/share/snow/bundles - for bundle management testing

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.


Credits

ChairLift is adapted from Vanilla OS First Setup.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.

See LICENSE for details.


Made with ❀️ for Snow Linux

Directories ΒΆ

Path Synopsis
cmd
chairlift command
ChairLift - A modern GTK4/Libadwaita system management tool Written in Go using puregotk bindings
ChairLift - A modern GTK4/Libadwaita system management tool Written in Go using puregotk bindings
chairlift-updex-helper command
chairlift-updex-helper is a privileged helper binary for updex write operations.
chairlift-updex-helper is a privileged helper binary for updex write operations.
internal
app
Package app provides the main ChairLift application
Package app provides the main ChairLift application
config
Package config provides YAML configuration loading for ChairLift
Package config provides YAML configuration loading for ChairLift
flatpak
Package flatpak provides an interface to the Flatpak package manager
Package flatpak provides an interface to the Flatpak package manager
homebrew
Package homebrew provides an interface to the Homebrew package manager
Package homebrew provides an interface to the Homebrew package manager
nbc
Package nbc provides an interface to the nbc bootc container installer
Package nbc provides an interface to the nbc bootc container installer
snap
Package snap provides an interface to the Snap package manager via the snapd REST API
Package snap provides an interface to the Snap package manager via the snapd REST API
updex
Package updex provides an interface to system feature management via the updex API.
Package updex provides an interface to system feature management via the updex API.
version
Package version provides build version information
Package version provides build version information
views
Package views provides the page content for the ChairLift application
Package views provides the page content for the ChairLift application
window
Package window provides the main application window
Package window provides the main application window

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL