Features: - Beautiful system statistics display using IBM Plex Mono font - Direct framebuffer rendering without X11/Wayland - Multiple screens with automatic carousel rotation - Real-time system monitoring (CPU, memory, disk, network, processes) - Systemd service integration with install command - Clean architecture using uber/fx dependency injection Architecture: - Cobra CLI with daemon, install, status, and info commands - Modular design with separate packages for display, rendering, and stats - Font embedding for zero runtime dependencies - Layout API for clean text rendering - Support for multiple screen types (overview, top CPU, top memory) Technical details: - Uses gopsutil for cross-platform system stats collection - Direct Linux framebuffer access via memory mapping - Anti-aliased text rendering with freetype - Configurable screen rotation and update intervals - Structured logging with slog - Comprehensive test coverage and linting setup This initial version provides a solid foundation for displaying rich system information on resource-constrained devices like Raspberry Pis.
129 lines
2.7 KiB
YAML
129 lines
2.7 KiB
YAML
version: "2"
|
|
|
|
run:
|
|
go: "1.24"
|
|
tests: false
|
|
|
|
linters:
|
|
enable:
|
|
# Additional linters requested
|
|
- testifylint # Checks usage of github.com/stretchr/testify
|
|
- usetesting # usetesting is an analyzer that detects using os.Setenv instead of t.Setenv since Go 1.17
|
|
- tagliatelle # Checks the struct tags
|
|
- nlreturn # nlreturn checks for a new line before return and branch statements
|
|
- nilnil # Checks that there is no simultaneous return of nil error and an invalid value
|
|
- nestif # Reports deeply nested if statements
|
|
- mnd # An analyzer to detect magic numbers
|
|
- lll # Reports long lines
|
|
- intrange # intrange is a linter to find places where for loops could make use of an integer range
|
|
- gochecknoglobals # Check that no global variables exist
|
|
|
|
# Default/existing linters that are commonly useful
|
|
- govet
|
|
- errcheck
|
|
- staticcheck
|
|
- unused
|
|
- ineffassign
|
|
- misspell
|
|
- revive
|
|
- gosec
|
|
- unconvert
|
|
- unparam
|
|
|
|
linters-settings:
|
|
lll:
|
|
line-length: 120
|
|
|
|
mnd:
|
|
# List of enabled checks, see https://github.com/tommy-muehle/go-mnd/#checks for description.
|
|
checks:
|
|
- argument
|
|
- case
|
|
- condition
|
|
- operation
|
|
- return
|
|
- assign
|
|
ignored-numbers:
|
|
- '0'
|
|
- '1'
|
|
- '2'
|
|
- '8'
|
|
- '16'
|
|
- '40' # GPG fingerprint length
|
|
- '64'
|
|
- '128'
|
|
- '256'
|
|
- '512'
|
|
- '1024'
|
|
- '2048'
|
|
- '4096'
|
|
|
|
nestif:
|
|
min-complexity: 4
|
|
|
|
nlreturn:
|
|
block-size: 2
|
|
|
|
revive:
|
|
rules:
|
|
- name: var-naming
|
|
arguments:
|
|
- []
|
|
- []
|
|
- "upperCaseConst=true"
|
|
|
|
tagliatelle:
|
|
case:
|
|
rules:
|
|
json: snake
|
|
yaml: snake
|
|
xml: snake
|
|
bson: snake
|
|
|
|
testifylint:
|
|
enable-all: true
|
|
|
|
usetesting: {}
|
|
|
|
issues:
|
|
max-issues-per-linter: 0
|
|
max-same-issues: 0
|
|
exclude-rules:
|
|
- path: ".*_gen\\.go"
|
|
linters:
|
|
- lll
|
|
|
|
# Exclude unused parameter warnings for cobra command signatures
|
|
- text: "parameter '(args|cmd)' seems to be unused"
|
|
linters:
|
|
- revive
|
|
|
|
# Allow ALL_CAPS constant names
|
|
- text: "don't use ALL_CAPS in Go names"
|
|
linters:
|
|
- revive
|
|
|
|
# Exclude all linters for internal/macse directory
|
|
- path: "internal/macse/.*"
|
|
linters:
|
|
- errcheck
|
|
- lll
|
|
- mnd
|
|
- nestif
|
|
- nlreturn
|
|
- revive
|
|
- unconvert
|
|
- govet
|
|
- staticcheck
|
|
- unused
|
|
- ineffassign
|
|
- misspell
|
|
- gosec
|
|
- unparam
|
|
- testifylint
|
|
- usetesting
|
|
- tagliatelle
|
|
- nilnil
|
|
- intrange
|
|
- gochecknoglobals
|