```
▖▖▄▖▄ ▄▖ ▌ ▄▖▖▖▄▖
▌▌▚ ▙▘▌ ▌▌▀▌▛▘▛▌ ▐ ▌▌▐
▙▌▄▌▙▘▙▌▙▌█▌▌ ▙▌ ▐ ▙▌▟▖
```
[](go.mod)
[](https://github.com/anotherhadi/usbguard-tui/releases)
[](LICENSE)
[](https://goreportcard.com/report/github.com/anotherhadi/usbguard-tui)
# USBGuard TUI
A terminal UI for managing USB devices via [usbguard](https://usbguard.github.io/).
USBGuard is a software framework for implementing a USB device authorization policy (allowlisting/blocklisting). It protects your system against rogue USB devices by scanning them and checking their parameters against a set of rules.
Built with [bubbletea](https://github.com/charmbracelet/bubbletea) & Golang!
## Features
- List all connected USB devices with their current status (allowed, blocked, rejected)
- Allow, block, or reject devices: temporarily or permanently
- Action popup with mouse support for quick device management
- Filter devices by name with `/`
- Auto-refresh
- Keyboard shortcuts for all actions (`a`/`A`, `b`/`B`, `e`/`E`)
## Requirements
- usbguard installed and the daemon running
- Sufficient privileges to communicate with the usbguard daemon socket
## Installation
Go install
```sh
go install github.com/anotherhadi/usbguard-tui@latest
```
Build from source
```sh
git clone https://github.com/anotherhadi/usbguard-tui
cd usbguard-tui
go build -o usbguard-tui .
```
Nix run
```sh
nix run github:anotherhadi/usbguard-tui
```
NixOS: system installation
Add the flake input and include the package in your configuration:
```nix
# flake.nix
inputs.usbguard-tui.url = "github:anotherhadi/usbguard-tui";
# configuration.nix / home.nix
environment.systemPackages = [ inputs.usbguard-tui.packages.${system}.default ];
```