Metadata-Version: 2.4
Name: netmango
Version: 0.1.0
Summary: A user-friendly Linux network emulator.
Project-URL: Homepage, https://github.com/MenggeZhang/netmango
Project-URL: Issues, https://github.com/MenggeZhang/netmango/issues
Project-URL: Source, https://github.com/MenggeZhang/netmango
Author: Mengge Zhang
License: MIT License
        
        Copyright (c) 2026 Mengge Zhang
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: emulator,linux,netem,network,network_simulator,pyside6,qt,remote_control,tc,traffic
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Networking :: Monitoring
Requires-Python: >=3.9
Requires-Dist: psutil>=5.9
Requires-Dist: pyqtgraph>=0.13
Requires-Dist: pyside6>=6.5
Description-Content-Type: text/markdown

<p align="center">
  <img src="assest/Netmango_fullname.png" alt="Netmango" width="420">
</p>

<p align="center">
  <em>A user-friendly Linux Network Emulator.</em>
</p>

---

## Why Netmango?

This started back when I was a fresh ICT master's student, helping out on a
remote-controlled vehicle project. The robot talked to its operator over
Wi-Fi, and on paper everything worked great. However, but the moment we drove it a
little further away, or around an obstacle, the robot started behaving
funny.

To make the control loop more robust, we needed a way to **reproduce those
messy links on demand**. Although Linux has a
`netem` for this, but it turns out very unfriendly to use:
long commands, easy to mistype, and if you forget to undo your rule your
Wi-Fi just stays broken.

So I built **Netmango**: a small, friendly Python app that lets you
emulate and monitoring the messy real-world network conditions your device will actually
face out in the wild 🥭. With it you can:

- pick the interface you want to mess with,
- add delay, jitter, packet loss, and corruption with a few clicks,
- watch your link quality and throughput live while you test,
- and just close the window when you're done — Netmango cleans up after
  itself, no leftover rules.

Say goodbye to wrestling with `netem`.

---

## APP Screenshot
<p align="center">
  <img src="assest/Software_ui.png" alt="Netmango_app" width="420">
</p>

---

## Quick start

### Option A — install from PyPI (recommended)

```bash
pip install netmango
sudo netmango        # tc/netem requires root
```

### Option B — run from a clone

```bash
# Clone the repo
cd netmango
./start.sh
```

That's it. `start.sh` will:

1. Create `.venv/` if it doesn't exist.
2. Install the project in editable mode on the first run.
3. Launch the GUI (`python -m netmango`).

To stop, just click the **×**. Netmango automatically removes any rule it
applied.

---

## Prerequisites

Netmango runs on Linux and relies on a few common system packages.

### System packages

On Debian / Ubuntu:

```bash
sudo apt update
sudo apt install -y \
    python3 python3-venv python3-pip \
    iproute2 iputils-ping \
    libxcb-cursor0 libxcb-xinerama0
```

### Sudo

Netmango uses `tc`, which is a Linux kernel feature and needs root, so it
will prompt for your sudo password the first time you apply a rule.

---

## Author

I'm **Mengge Zhang**, an ICT master's student at KU Leuven. Netmango
is a personal project, fully open source. I like to use what I learned to solve realworld challenges. Happy shaping! 🥭

I'm currently looking for opportunities to pursue a PhD, so feel free to get in touch!
