Commit Graph

8 Commits

Author SHA1 Message Date
9d637a9378 Screenshot feature (text + PNG) and keybind editor tab in settings
- New screenshot action (default alt+p, bindable like any action):
  renders the current workspace to a buffer and saves it as plain text
  and/or PNG (screenshot_format = text|png|both, screenshot_dir
  configurable, default skärmbilder/ under the config dir). The PNG is
  rasterized cell by cell with an embedded DejaVu Sans Mono font
  (vendored, ~340 kB); glyphs missing from the font (color emoji)
  render as filled boxes. A popup confirms the saved paths
- Settings dialog gains a 'Tangenter' row: lists all keybinds with
  label and scope, Enter captures the next keypress as the new chord
  (persisted by rewriting [[keybind]] via toml_edit), Delete removes
  a binding — changes take effect immediately
- Integration suite: 48/48 (screenshot files + validity, keybind list,
  live rebind ctrl+space→alt+z)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 00:30:56 +02:00
ca13abc9b7 Reliable letter-based default keybinds + kitty keyboard protocol
alt+tab is grabbed by desktop WMs and alt+arrows are re-encoded or
swallowed by several terminals, leaking plain arrow keys into the
focused window. Primary defaults are now letter chords which every
terminal delivers via ESC-prefix: alt+w (switcher), alt+h/alt+l
(snap), alt+m (maximize). The alt+tab/arrow variants stay as extra
bindings, and standalone/client now enable the kitty keyboard
protocol (DISAMBIGUATE_ESCAPE_CODES) when the terminal supports it
so even those are delivered unambiguously (Konsole 23.08+, kitty,
foot, wezterm, ghostty). 34/34 integration checks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 20:15:17 +02:00
b1424da4fb Copy-mode with scrollback search + config hot-reload
- alt+c enters copy-mode on the focused terminal: arrows/PgUp/PgDn/
  Home/End scroll the history, / searches (matches highlighted in the
  view), n/N jump between hits, q/Esc exits back to the bottom.
  Status line shows position and key help
- config.toml, panel files and the theme file are watched (1s mtime
  poll): edits reload theme/panels/keybinds live without restarting —
  windows and focus are untouched
- Integration suite runs the daemon in an isolated config dir and
  covers copy-mode search and panel hot-reload — 27/27 passing

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 19:43:57 +02:00
b85345be99 Alt+Tab window switcher (MRU), snap/maximize, panel separators
- window_switcher action: overlay listing windows in most-recently-used
  order; Tab/arrows cycle, Enter confirms, Esc cancels. Bound to
  alt+tab with alt+w as fallback for terminals that swallow alt+tab
- snap_left/snap_right actions (alt+left/alt+right) tile the focused
  window to half the content area; dragging a window to the screen
  edge snaps it too
- maximize action (alt+up) toggles maximize/restore, double-click on
  the title bar does the same; restore returns the pre-snap geometry
- Panel: separator between focus dot and buttons, separators between
  right-docked status widgets, and item widths now use display width
  (fixes rects for åäö/wide labels)
- Integration suite: 23 checks, all passing

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 19:40:28 +02:00
db18c42481 Add --help, terminal scrollback + scrollbar, run-dialog fix, client-safe exit, true rounded corners
- -h/--help prints a full usage overview (modes, config keys, keys, mouse)
- Run dialog now executes the typed command directly in the new window
  (previously it spawned the default shell and typed the command into
  it, which showed up as just an empty terminal)
- Virtual terminals get vt100 scrollback (config scrollback_lines,
  default 1000): mouse wheel scrolls history when the app doesn't
  capture the mouse, arrow-key fallback on the alternate screen, any
  keypress jumps back to the bottom; optional scrollbar on the right
  border (show_scrollbar) plus configurable default_window_size
- Exit triggered from a connected display client (ctrl+q / panel
  button) now only disconnects that client — the daemon/standalone
  session and its programs keep running
- Windows now paint the border zone in the desktop background color so
  rounded corners actually look rounded instead of a filled square
  with an inner rounded frame; popup dialogs rounded too
- Integration suite extended to 19 checks (scrollback, run dialog,
  client-safe exit) — all passing

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 18:58:45 +02:00
339ad9530e Implement Kitty graphics protocol for background image rendering
- Added `kitty_gfx` module to handle loading, scaling, and displaying background images using the Kitty graphics protocol.
- Integrated background image handling into the main application loop, allowing dynamic updates based on configuration.
- Enhanced terminal rendering to support transparent backgrounds when a Kitty image is active.
- Updated IPC server to manage client connections and messages, including handling background image settings.
- Modified `PtyTerminal` to accept additional environment variables during shell spawning.
- Improved rendering logic to support popup dialogs and terminal background color customization.
2026-03-29 04:28:31 +02:00
3a9e292088 Add build output dependency file for mouse-test application
Add standard menu fore keybinds
2026-03-28 03:18:41 +01:00
Björn Blomberg
4440ad79bd feat: add configuration management and panel rendering
- Introduced a new `Config` struct for loading application configuration from a TOML file.
- Added support for keybindings and panel configurations, including status widgets.
- Implemented `PtyTerminal` for handling pseudo-terminal interactions.
- Created a rendering module to manage the display of application windows, panels, and dropdowns.
- Refactored the main application loop to utilize the new configuration and rendering logic.
- Removed legacy code related to event handling and rendering from `main.rs`.
2026-03-27 17:01:06 +01:00