A lightweight, GUI-based HTTP file server built with Python 3 and GTK3.
Allows serving local directories over HTTP, with real-time server status, file filtering, and persistent configuration.
- Start/stop HTTP server with a GUI
- Browse and serve any local directory
- View real-time server status (connections, downloads)
- Filter displayed files and optionally show hidden files
- Persistent configuration across sessions
- Open served directory directly in browser
- Logs all GET requests in the GTK UI
- Python 3.8+
- PyGObject (GTK3 bindings)
- Standard Python libraries:
os,threading,http.server,configparser,datetime,pathlib
pip install PyGObjectOn Linux, you may need development packages:
# Ubuntu/Debian
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
# Fedora
sudo dnf install python3-gobject gtk3- Clone the repository:
git clone https://github.com/<your-username>/http-file-server-gtk.git
cd http-file-server-gtk- Run the server GUI:
python httpyserv-
Select the directory you want to serve using the Browse button.
-
Set host (default
0.0.0.0) and port (default8000). -
Click Start Server.
-
Open in browser using Open in Browser button.
-
Monitor real-time status of connections and downloads in the Server Status panel.
-
Use filters to quickly find files in the Directory Contents panel.
The server saves your settings in:
~/.config/httpfileserver/config.ini
Includes:
- Last served directory
- Host and port
- Show hidden files setting
All GET requests are logged in the GUI under Server Status, including:
- Client IP
- Requested file path
- Completion of download
Example log:
[12:34:56] 192.168.1.10 requested /example.txt
[12:34:57] 192.168.1.10 completed download /example.txt
httpyserv/
├── httpyserv # Main Python file
├── README.md # This file
└── .venv/ # Optional Python virtual environment
MIT License – see LICENSE for details.
(Optional: add screenshots of the GUI if desired)
- The server only handles GET requests for files.
- Directory listings are displayed in the GTK GUI but are not exposed over HTTP.
- Server must be stopped via GUI before exiting to save configuration properly.
