Runtime Dependencies
These packages must be installed for WireGuird to run properly.WireGuard Tools
Package:wireguard-tools
Purpose: Provides the wg and wg-quick command-line utilities that WireGuird uses to manage WireGuard tunnels.
Installation:
wg- Configuration utility for WireGuardwg-quick- Script for quickly bringing up/down WireGuard interfaces
WireGuird does not directly interface with the kernel module. It uses
wg-quick as a subprocess to manage tunnels, which is why this package is essential.resolvconf
Package:resolvconf
Purpose: Manages DNS resolver configuration. Required by wg-quick to set DNS servers specified in tunnel configurations.
Installation:
- Updates
/etc/resolv.confwhen tunnels connect/disconnect - Manages DNS nameserver priorities
- Restores original DNS settings when tunnel is disabled
[Interface] section:
wg-quick calls resolvconf to apply these settings. Without it, you’ll see:
systemd-resolved(on systemd-based systems)openresolv
GTK+ 3 Runtime
Package:libgtk-3-0
Purpose: The GTK+ 3 toolkit provides the graphical interface components.
Installation:
- Window management
- UI widgets (buttons, text fields, etc.)
- Dialog boxes
- CSS styling support
Ayatana AppIndicator
Package:libayatana-appindicator3-1
Purpose: Provides the system tray icon functionality.
Installation:
- System tray indicator support
- Menu for the tray icon (Show/Quit options)
- Desktop environment integration
- ✅ Ubuntu/Unity
- ✅ GNOME (with AppIndicator extension)
- ✅ XFCE
- ✅ MATE
- ✅ Cinnamon
- ⚠️ KDE Plasma (limited support)
Build Dependencies
These packages are only needed when compiling WireGuird from source.Go Programming Language
Package:golang-go
Purpose: Go compiler and toolchain for building the application.
Installation:
go.mod)
What’s included:
- Go compiler (
go build) - Go modules support (
go mod) - Code generation tools (
go generate)
GTK+ 3 Development Files
Package:libgtk-3-dev
Purpose: Header files and pkg-config metadata for building against GTK+ 3.
Installation:
- C header files for GTK+ 3
- pkg-config
.pcfiles - Development documentation
gotk3 Go package uses cgo to interface with GTK+ C libraries.
Ayatana AppIndicator Development Files
Package:libayatana-appindicator3-dev
Purpose: Development headers for building applications with AppIndicator support.
Installation:
- C header files for AppIndicator library
- pkg-config metadata
- Required for compiling the tray icon functionality
Go Module Dependencies
WireGuird uses several Go packages, defined ingo.mod:
GUI and Graphics
- GTK widget wrappers
- Signal/event handling
- UI construction from Glade files
- System tray indicator creation
- Tray menu management
- Icon status updates (red when connected, black when disconnected)
- Colored console output
- Improved log readability
WireGuard Management
- Read WireGuard device information
- Parse configuration
- Query peer statistics (handshake time, data transfer)
wgtypes.Device- Represents a WireGuard interfacewgtypes.Peer- Represents a WireGuard peer
Logging
main.go:21
Configuration Parsing
- Parsing WireGuard
.conffiles - Reading
[Interface]and[Peer]sections
Utilities
- Formatting data transfer amounts (MB, GB)
- Time duration formatting
- File I/O helpers
- String manipulation utilities
- Embedding
wireguird.glade(UI definition) - Embedding icon files
- Creating the
static/ab0x.gofile
fileb0x.toml
Dependency Installation Scripts
Quick Install (Recommended)
For Ubuntu/Debian systems:Manual Installation
If you prefer to install dependencies manually: Runtime + Build:Verifying Dependencies
Check Installed Packages
Check Go Version
Check WireGuard Tools
Check GTK Version
Verify Go Modules
After cloning the repository:Distribution-Specific Notes
Ubuntu 18.04 LTS
- Uses AppIndicator (not Ayatana variant)
- Install
libappindicator3-devinstead - Go version may need manual update
Ubuntu 22.04+ / Debian 11+
- Uses Ayatana AppIndicator by default
- All packages available in main repositories
- Recommended for easiest setup
Fedora (Planned Support)
The equivalent packages on Fedora would be:Fedora support is mentioned in the source but not yet fully implemented. Contributions welcome!
Troubleshooting Dependency Issues
See the Troubleshooting page for solutions to common dependency-related problems. Common issues:- Missing GTK libraries
- AppIndicator not showing
- resolvconf command not found
- Go build errors related to cgo
Next Steps
- Build from source with these dependencies
- Troubleshoot issues if dependencies fail
- Configure WireGuird settings after installation
