Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

41 changes: 40 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
[package]
name = "wiretray"
version = "0.1.0"
version = "0.2.0"
edition = "2024"
description = "A Linux Wi-Fi hotspot manager with a system tray interface"
license = "MIT"
readme = "README.md"

[[bin]]
name = "wiretray-settings"
Expand All @@ -23,3 +26,39 @@ uuid = { version = "1", features = ["v4"] }

image = "0.25"
gtk = { version = "0.11.3", package = "gtk4", features = ["v4_12"] }
fs2 = "0.4"

[package.metadata.deb]
maintainer = "Augusto Domingos <augustodomingosvasco@gmail.com>"
copyright = "2026, Augusto Domingos <augustodomingosvasco@gmail.com>"
name = "wiretray"
section = "net"
priority = "optional"
depends = "$auto, network-manager, libglib2.0-bin"
maintainer-scripts = "packaging/debian"
extended-description = """
Wiretray is a Linux Wi-Fi hotspot manager focused on quick and convenient hotspot control.

It allows hotspots to be managed directly from the system tray, making hotspot management feel like any other background service on Linux.
"""

assets = [
["target/release/wiretray", "usr/bin/", "755"],
["target/release/wiretray-settings", "usr/bin/", "755"],

["data/applications/io.github.AghastyGD.Wiretray.desktop",
"usr/share/applications/",
"644"],

["assets/icons/app/io.github.AghastyGD.Wiretray.png",
"usr/share/icons/hicolor/256x256/apps/io.github.AghastyGD.Wiretray.png",
"644"],

["data/io.github.AghastyGD.Wiretray.gschema.xml",
"usr/share/glib-2.0/schemas/",
"644"],

["README.md",
"usr/share/doc/wiretray/README.md",
"644"],
]
140 changes: 89 additions & 51 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@

# Wiretray

**A modern Wi-Fi hotspot manager for Linux.**
**A Wi-Fi hotspot manager for Linux.**

![CI](https://github.com/aghastygd/wiretray/actions/workflows/ci.yml/badge.svg)
![License](https://img.shields.io/github/license/aghastygd/wiretray)
![Issues](https://img.shields.io/github/issues/aghastygd/wiretray)
</div>
Wiretray is a Linux hotspot manager with system tray integration and a desktop configuration interface.

It integrates with NetworkManager to create and manage Wi-Fi hotspots.
Wiretray is a Linux Wi-Fi hotspot manager designed to make hotspot control available directly from the system tray.

Built around NetworkManager, it provides hotspot management, configuration, and automatic startup through a desktop interface.

## Motivation

Expand All @@ -22,52 +23,99 @@ I used it for a while and had a good experience with it, but one thing always bo

I wanted a solution that could stay in the system tray and make hotspot management available with a couple of clicks.

wiretray began as an experiment, but quickly evolved into a tool I use daily for managing hotspots on Linux.
Wiretray began as an experiment, but quickly evolved into a tool I use daily for managing hotspots on Linux.

The long-term goal is simple: make hotspot management feel like any other background service on Linux.

## Current Status

The project is still under active development.
## Features

Implemented so far:
Available today:

- [x] System tray integration

- [x] Desktop configuration interface

- [x] Wi-Fi device discovery

- [x] Hotspot creation and management

- [x] Hotspot status monitoring

- [x] Hotspot settings persistence


- [x] Autostart on login

- [x] Wi-Fi capability detection



Currently in progress:
- Better error reporting

- Better error reporting
- Concurrent AP + Client support

## Requirements

- Linux

- NetworkManager

- A Wi-Fi adapter with Access Point (AP) support

## Dependencies
- Linux
- NetworkManager
- A Wi-Fi adapter with Access Point (AP) support
- A desktop environment or panel with StatusNotifierItem/AppIndicator support

## Installation

### Debian / Ubuntu

Download the latest `.deb` package from the [Releases](https://github.com/AghastyGD/wiretray/releases) page and install it with:

```
sudo apt install ./wiretray_*.deb
```

You can also install it by double-clicking the `.deb` package from your file manager.

After installation, Wiretray can be opened from the application menu.

The application launcher opens the settings window and starts the tray process automatically if it is not already running.

## Autostart

Wiretray can start automatically after login.

Open the settings window and enable:

```
Start automatically on login
```

This creates an XDG autostart entry at:

```
~/.config/autostart/io.github.AghastyGD.Wiretray.desktop
```

When enabled, Wiretray starts the tray/background process automatically the next time you log in.

## Installed Binaries

The Debian package installs two binaries:

```
wiretray
wiretray-settings
```

`wiretray` starts the tray/background application.

`wiretray-settings` opens the desktop configuration interface.

Normally, users do not need to run these manually. The application launcher and autostart entry handle this automatically.

## Building from Source

Install the required development packages for your distribution.

### Debian / Ubuntu

```bash
```
sudo apt install \
libgtk-4-dev \
meson \
Expand All @@ -78,92 +126,82 @@ sudo apt install \

### Fedora

```bash
```
sudo dnf install \
gtk4-devel \
meson \
desktop-file-utils \
gcc \
glib-compile-resources \
gtk4-update-icon-cache \
update-desktop-database
glib2-devel \
gtk4-update-icon-cache
```

### Arch Linux

```bash
```
sudo pacman -S \
gtk4 \
meson \
desktop-file-utils \
gcc
```

## Building

Build all binaries:

```bash
```
cargo build
```

Or build a specific binary:

```bash
```
cargo build --bin wiretray
cargo build --bin wiretray-settings
```

## Running
## Running from Source

Start the tray application:

```bash
```
cargo run --bin wiretray
```

Launch the settings application directly:

```bash
```
cargo run --bin wiretray-settings
```

## Development

Format code:

```bash
```
cargo fmt
```

Run Clippy:

```bash
```
cargo clippy --all-targets --all-features -- -D warnings
```

Run tests:

```bash
```
cargo test
```

## Roadmap

Planned work includes:

- QR code generation

- Connected client monitoring

- Hotspot notifications

- Advanced hotspot configuration

- Concurrent AP + Client support

- Alternative hotspot backends

- QR code generation
- Connected client monitoring
- Hotspot notifications
- Advanced hotspot configuration
- Alternative hotspot backends

As with most side projects, priorities may change over time.

Expand All @@ -173,4 +211,4 @@ Issues, suggestions, and pull requests are welcome.

## License

This project is licensed under the MIT License.
This project is licensed under the MIT License.
9 changes: 9 additions & 0 deletions data/applications/io.github.AghastyGD.Wiretray.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
Name=Wiretray
Comment=Wi-Fi hotspot manager for Linux
Exec=wiretray-settings
Icon=io.github.AghastyGD.Wiretray
Terminal=false
Categories=Network;GTK;
StartupNotify=true
16 changes: 16 additions & 0 deletions packaging/debian/postinst
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/sh
set -e

if command -v glib-compile-schemas >/dev/null 2>&1; then
glib-compile-schemas /usr/share/glib-2.0/schemas || true
fi

if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database /usr/share/applications || true
fi

if command -v gtk-update-icon-cache >/dev/null 2>&1; then
gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor || true
fi

exit 0
Loading
Loading