Skip to main content

Unofficial arch-agnostic thin client for Slack

Project description

Flufy

Unofficial arch-agnostic thin client for Slack, built with PyQt6 and QtWebEngine.

Motivation

Slack does not provide a native Linux client for ARM-based laptops. The official Slack desktop app ships only as an x86_64 Electron binary, leaving users of ARM64 devices (such as Qualcomm Snapdragon X Elite laptops) without a first-class experience. Running the x86_64 build through emulation layers is slow and unreliable.

Flufy solves this by wrapping the Slack web client in a lightweight QtWebEngine-based browser window that runs natively on any architecture supported by Qt, including aarch64 and x86_64.

Features

  • Native performance on ARM64 and x86_64 Linux
  • Chrome User-Agent spoofing (Slack blocks non-Chrome browsers)
  • System tray icon with unread message indicators
  • Desktop notifications via notify-send
  • slack:// deep-link protocol handler for magic login links
  • Single-instance enforcement via Unix domain socket IPC
  • Persistent sessions (cookies survive restarts)
  • User-configurable settings via TOML config file

Requirements

  • Python 3.12+
  • PyQt6 and PyQt6-WebEngine (6.7.0+)
  • Linux desktop environment with a system tray
  • notify-send (libnotify) for desktop notifications
  • libminizip system library (required by QtWebEngine)

Installing system dependencies

On Ubuntu/Debian:

# Ubuntu 24.04+
sudo apt install libminizip1t64

# Ubuntu 22.04 and earlier
sudo apt install libminizip1

Installation

From PyPI (recommended)

pipx install flufy

# Or with pip
pip install flufy

From source

git clone https://github.com/igoropaniuk/flufy.git
cd flufy
poetry install

Post-install

On first launch, Flufy automatically creates a .desktop file and registers the slack:// protocol handler so it appears in your application launcher and handles magic login links. To manually re-register if needed:

flufy --install

Usage

flufy

Configuration

Flufy reads an optional TOML config file from ~/.config/flufy/config.toml. Supported keys:

Key Type Default
target_url string https://app.slack.com/client
window_title string Flufy
window_width int 1200
window_height int 800
chrome_full_version string 136.0.7103.114
unread_poll_ms int 3000

Development

# Install dev dependencies
poetry install

# Run linter and formatter
poetry run ruff check flufy/ tests/
poetry run ruff format flufy/ tests/

# Run type checker
poetry run mypy

# Run tests
poetry run pytest

License

This project is licensed under the MIT License. See LICENSE for details.

Disclaimer

Flufy is an unofficial Slack client and is not affiliated with or endorsed by Slack Technologies, LLC. Slack is a registered trademark of Slack Technologies, LLC.

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

flufy-0.0.1.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flufy-0.0.1-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file flufy-0.0.1.tar.gz.

File metadata

  • Download URL: flufy-0.0.1.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.17.0-19-generic

File hashes

Hashes for flufy-0.0.1.tar.gz
Algorithm Hash digest
SHA256 74873878cc482c7d99dceb89778e03612bce06ba7fd13f87400d5f2fb502e522
MD5 02e724211fe333da2a04513d09a127fc
BLAKE2b-256 48dc3666c94c9eada384b3562c5711e3961358c0a9a8d44edcbeff0eb0accda2

See more details on using hashes here.

File details

Details for the file flufy-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: flufy-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.17.0-19-generic

File hashes

Hashes for flufy-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f22aca7619cae17b401c1655985b190a6b0709903564d793bcc5ff9309a6c1f3
MD5 d01edad35ef4906edb1887dfd167ddfc
BLAKE2b-256 2cd0d059d6279363d1b7dfd8a725e7a6b152d408dc3ff6c9c4453693a89fd1d9

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