Elk Native is a nimble Mastodon web client designed for efficient social media management. It offers real-time notifications, an intuitive user interface, and support for dark mode to enhance comfort during extended use. Elk also provides customization options for themes and layouts, allowing users to tailor their experience.
Ideal for Mastodon users seeking a streamlined and privacy-focused platform, Elk Native enables seamless posting, engagement, and content discovery. By prioritizing simplicity and efficiency, it helps users stay connected while maintaining control over their digital presence. Installation is available via winget.
README
Elk Native
> [!WARNING]
> Elk Native is no longer maintained. Elk can be used a PWA instead.
Native version of Elk, a nimble Mastodon web client.
Elk Native is even more early alpha than the web version, but we would love your feedback and contributions. If you would like to help us with testing, feedback, or contributing, join our discord and get involved.
Contributing
We're really excited that you're interested in contributing to Elk! Please read through the small guide below to get started:
> Note:
>
> This repo only holds the code necessary for the native app and just git-submodules the frontend from https://github.com/elk-zone/elk so please submit Issues and PRs concerning the frontend there!
Local Setup
First you will need to install Rust and other system dependencies required for developing a Tauri app, you can follow this guide.
Next, you need to install the Tauri CLI which is used to orchestrate the build and package up the final app:
cargo install tauri-cli
# or
npm install -g @tauri-apps/cli
# or
pnpm install -g @tauri-apps/cli
# or
yarn add -g @tauri-apps/cli
Now clone the submodule in the elk folder.
git submodule update --init elk
Next install the frontend dependencies:
cd elk && pnpm i
Then you can run the app in development mode:
cargo tauri dev
To create a production build of the app:
cargo tauri build
Logging
This app uses a unified logging stream that encompasses both logs from the Rust Core as well as from the frontend. Log levels and filters can be set through the environment variable (this also works in a release mode app).