diff --git a/README.md b/README.md index 411e925..8da0803 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,19 @@ ``` -▖▖▄▖▄ ▄▖ ▌ ▄▖▖▖▄▖ -▌▌▚ ▙▘▌ ▌▌▀▌▛▘▛▌ ▐ ▌▌▐ -▙▌▄▌▙▘▙▌▙▌█▌▌ ▙▌ ▐ ▙▌▟▖ + _ _ ____ ____ ____ _ _____ _ _ ___ +| | | / ___|| __ ) / ___|_ _ __ _ _ __ __| | |_ _| | | |_ _| +| | | \___ \| _ \| | _| | | |/ _` | '__/ _` | | | | | | || | +| |_| |___) | |_) | |_| | |_| | (_| | | | (_| | | | | |_| || | + \___/|____/|____/ \____|\__,_|\__,_|_| \__,_| |_| \___/|___| ``` -[![Go Version](https://img.shields.io/github/go-mod/go-version/anotherhadi/usbguard-tui)](go.mod) -[![Release](https://img.shields.io/github/v/release/anotherhadi/usbguard-tui)](https://github.com/anotherhadi/usbguard-tui/releases) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) -[![Go Report Card](https://goreportcard.com/badge/github.com/anotherhadi/usbguard-tui)](https://goreportcard.com/report/github.com/anotherhadi/usbguard-tui) +![GitHub Stars](https://www.shieldcn.dev/github/stars/anotherhadi/usbguard-tui.svg?variant=outline&theme=violet) +![Release](https://www.shieldcn.dev/github/release/anotherhadi/usbguard-tui.svg?variant=outline&theme=violet) +![CI](https://www.shieldcn.dev/github/ci/anotherhadi/usbguard-tui.svg?variant=outline&theme=violet) +[![Ko-fi](https://www.shieldcn.dev/badge/Ko--fi-sponsor-FF5E5B.svg?logo=kofi&variant=secondary&theme=violet)](https://ko-fi.com/anotherhadi) # USBGuard TUI -A terminal UI for managing USB devices via [usbguard](https://usbguard.github.io/). +> 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. @@ -21,6 +23,8 @@ Built with [bubbletea](https://github.com/charmbracelet/bubbletea) & Golang! Colors and styles can be customized using [ilovetui](https://github.com/anotherhadi/ilovetui), which applies theme changes across all compatible TUI applications at once. +> This project is NOT affiliated with, endorsed by, or connected to "Red Hat, Inc" in any way. It is an unofficial, community-driven tool. + ## Features - List all connected USB devices with their current status @@ -28,7 +32,7 @@ Colors and styles can be customized using [ilovetui](https://github.com/anotherh - Action popup for quick device management - Filter devices by name with `/` - Auto-refresh -- Keyboard shortcuts for all actions (`a`/`A`, `b`/`B`, `e`/`E`, ...) +- Keyboard shortcuts for all actions (`a`/`A`, `b`/`B`, `e`/`E`, ...) & Mouse support ## Requirements @@ -52,7 +56,7 @@ go install github.com/anotherhadi/usbguard-tui@latest ```sh git clone https://github.com/anotherhadi/usbguard-tui cd usbguard-tui -go build -o usbguard-tui . +go build -o usbguard-tui ./cmd/usbguard-tui ``` @@ -95,4 +99,4 @@ The device list refreshes automatically every 2 seconds. github | gitlab (mirror) | gitea (mirror) - diff --git a/ui/actionmodal.go b/ui/actionmodal.go index 3336910..428f389 100644 --- a/ui/actionmodal.go +++ b/ui/actionmodal.go @@ -93,7 +93,7 @@ func (a actionModal) View() tea.View { hintStyle := lipgloss.NewStyle().Foreground(style.S.Muted) parts := []string{a.list.View(), ""} if a.rulesManaged { - parts = append(parts, hintStyle.Render(fmt.Sprintf("[NixOS: perm rules queued — press %s to copy]", listKeys.CopyRules.Help().Key))) + parts = append(parts, hintStyle.Render(fmt.Sprintf("[NixOS: perm rules queued, press %s to copy]", listKeys.CopyRules.Help().Key))) } parts = append(parts, hintStyle.Render("↑↓ navigate enter confirm esc cancel")) return tea.NewView(strings.Join(parts, "\n")) diff --git a/ui/delegate.go b/ui/delegate.go index e0bc694..2c5059a 100644 --- a/ui/delegate.go +++ b/ui/delegate.go @@ -14,8 +14,6 @@ import ( "github.com/anotherhadi/usbguard-tui/internal/guard" ) -// deviceZoneID returns the bubblezone marker ID used to detect mouse clicks -// on a given device's row in the list. func deviceZoneID(dev guard.Device) string { return "device-" + strconv.Itoa(dev.ID) } @@ -97,8 +95,6 @@ func (d actionDelegate) Height() int { return 1 } func (d actionDelegate) Spacing() int { return 0 } func (d actionDelegate) Update(_ tea.Msg, _ *list.Model) tea.Cmd { return nil } -// actionZoneID returns the bubblezone marker ID used to detect mouse clicks -// on a given row of the action modal's list. func actionZoneID(index int) string { return "action-" + strconv.Itoa(index) }