Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

i3 Hotkey Viewer

A desktop application for visualizing and analyzing i3wm keyboard shortcuts.

i3 Hotkey Viewer

Features

  • Interactive keyboard — color-coded keys show binding density at a glance
  • Inspector — click any key to see all its bindings, commands, source locations, and conflicts
  • Binding table — sortable, filterable, exportable list of every shortcut
  • Search — live regex or plain-text search across keys, commands, and modes
  • Modifier filter — check Ctrl/Shift/Alt/Super to isolate a chord layer
  • Mode filter — switch between default, resize, stats, and other i3 modes
  • Statistics — total bindings, unique keys, modes, conflicts, release bindings, variables
  • Live reload — watches the config file and re-parses automatically on save
  • Conflict detection — highlights duplicate bindings (same key + modifiers + mode, different command)
  • Source navigation — double-click any binding to open it in your $EDITOR
  • Export — save visible bindings as CSV or JSON from the context menu

Color Legend

Color Meaning
Gray No binding
Green One binding
Yellow Multiple bindings
Blue Mode-specific binding
Red Conflicting bindings
Purple Release binding
Cyan Selected

Requirements

  • Python 3.10+
  • PySide6
pip install PySide6

Usage

# Open with a config file directly
python3 main.py ~/.config/i3/config

# Or open the file picker on launch
python3 main.py

Keyboard shortcuts

Action Shortcut
Open file Ctrl+O
Reload F5
Zoom in/out Scroll wheel
Pan Click and drag

Supported Config Syntax

  • set $variable value — variable definitions, resolved before parsing
  • bindsym and bindcode — with --release, --no-repeat, --whole-window flags
  • mode "name" { ... } — every binding records its owning mode
  • include path/to/file — recursive includes with loop detection
  • Continuation lines ending in \
  • Comments (#)
  • Unknown directives are silently skipped (stored as parser warnings)

Project Layout

main.py              — entry point
src/
  parser.py          — i3 config parser
  models.py          — Binding and BindingDatabase data classes
  layouts.py         — keyboard layout definitions (TKL, 60%, Full)
  keyboard_view.py   — interactive keyboard widget (QGraphicsView)
  binding_table.py   — sortable/filterable binding table
  inspector.py       — per-key detail panel
  statistics_panel.py — summary stat cards
  search_bar.py      — live search with regex toggle
  modifier_selector.py — modifier filter checkboxes
  main_window.py     — main window, MVC wiring, live reload
example-config       — sample i3 config for testing

Roadmap

  • Config comparison (diff two configs)
  • Free shortcut finder (highlight unbound keys for a given modifier set)
  • Export to Markdown / HTML / PDF
  • Visual binding editor
  • Custom keyboard layouts (JSON)
  • Sway / Hyprland support

About

PySide6 app for viewing i3 keybindings

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages