Metadata-Version: 2.4
Name: wifi-analyzer
Version: 0.1.19
Summary: WiFi Analyzer — GTK4/Adwaita app for WiFi network analysis
Author: Daniel Nylander
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/yeager/wifi-analyzer
Project-URL: Repository, https://github.com/yeager/wifi-analyzer
Project-URL: Bug Tracker, https://github.com/yeager/wifi-analyzer/issues
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

<p align="center">
  <img src="assets/wifi-analyzer-logo.png" width="220" alt="WiFi Analyzer logo">
</p>

# WiFi Analyzer

Wi-Fi signal analyzer, channel planner and local connection diagnostics tool.

Built with GTK4/Adwaita. Part of the [Danne L10n Suite](https://github.com/yeager/debian-repo).

## Features

- Scan access points through NetworkManager D-Bus; no privileged shell command is required.
- Filter results by network name, BSSID, channel or security type.
- Inspect 2.4, 5 and 6 GHz bands with a channel-overlap graph.
- Show NetworkManager's announced AP bandwidth when available, with a clearly
  marked estimate as a fallback.
- Mark 5 GHz DFS channels. Their availability depends on the local regulatory domain.
- Recommend less congested channels from observed signal overlap.
- Sort results by signal, channel, or security and group repeated SSIDs by access-point count.
- Export visible, filtered results as CSV, JSON, anonymized JSON or an HTML
  diagnostic report, with a user-selected file name and destination.
- Keep up to 100 local scan summaries for future history views. Scan data never leaves the device and can be cleared from the menu.
- Mark the active access point and use the actual channel width reported by `iw` for that radio when available.
- Identify Wi-Fi 4, 5, 6/6E and 7 for the active link from `iw` PHY markers.
  A generation is never guessed for an unconnected AP.
- Compare consecutive scans to identify new, missing, or materially changed access points.
- Create a self-contained HTML diagnostic report or an anonymized JSON export for safe sharing.
- Select an access point to identify the strongest overlapping neighbours.
- Show the active connection's gateway and DNS servers from local system diagnostics.
- Use optional 60-second monitoring and location profiles for private local scan history.

## Installation

### PyPI (Debian/Ubuntu)

GTK, libadwaita, PyGObject and Pycairo use native system libraries, so install
them from your distribution before installing the Python package:

```bash
sudo apt install python3-gi python3-cairo gir1.2-gtk-4.0 gir1.2-adw-1 network-manager iw pipx
pipx install --system-site-packages wifi-analyzer
```

### Debian/Ubuntu

`wifi-analyzer` is distributed through the [Danne L10n Suite APT repository](https://github.com/yeager/debian-repo), not the default Debian or Ubuntu repositories. Add the repository before installing:

```bash
wget -qO /tmp/yeager-repo-key.asc https://yeager.github.io/debian-repo/yeager-repo-key.asc
sudo install -m 0644 /tmp/yeager-repo-key.asc /usr/share/keyrings/yeager-repo.asc
echo 'deb [signed-by=/usr/share/keyrings/yeager-repo.asc] https://yeager.github.io/debian-repo ./' | sudo tee /etc/apt/sources.list.d/yeager.list
sudo apt update
sudo apt install wifi-analyzer
```

If APT still cannot find the package, check that the repository appears in
`apt update` and run `apt-cache policy wifi-analyzer`. The signed APT index may
lag behind the latest release. To install the current version, download the
`.deb` from [GitHub Releases](https://github.com/yeager/wifi-analyzer/releases/latest)
and install the downloaded file with `sudo apt install ./wifi-analyzer_*.deb`.

Source packages follow Debian policy and can be built with:

```bash
dpkg-buildpackage -us -uc -b
```

### Fedora/RPM distributions

The release includes an RPM built on Fedora 44. Download it from
[GitHub Releases](https://github.com/yeager/wifi-analyzer/releases/latest)
and install it on Fedora 44 with `sudo dnf install ./wifi-analyzer-*.rpm`.

Build the source RPM with:

```bash
rpmbuild -ba packaging/rpm/wifi-analyzer.spec
```

GitHub Actions builds both `.deb` and `.rpm` artifacts for releases and pull
requests.

## Translations

The user interface uses gettext catalogues for 20 languages. Swedish is
translated and reviewed; the remaining catalogues are ready for translation.
See [`po/README.md`](po/README.md) to contribute or validate a translation.
The Swedish manual page is installed as `wifi-analyzer(1)` and is maintained in
[`docs/man/sv`](docs/man/sv).

### Flatpak

Flatpak-paketet byggs från
[`build-aux/io.github.yeager.WifiAnalyzer.json`](build-aux/io.github.yeager.WifiAnalyzer.json).
Det kan installeras med Flatpak Builder tills paketet har publicerats på Flathub.

```bash
flatpak-builder --user --install --force-clean build-dir \
  build-aux/io.github.yeager.WifiAnalyzer.json
```

## License

GPL-3.0

## Author

Daniel Nylander — [danielnylander.se](https://danielnylander.se)
