Commit graph

404 commits

Author SHA1 Message Date
43d38aed8a feat: Konsole parity phase 1 (save output, search options, monitors, profile CLI)
Implements the first batch of COSMIC_TERMINAL_KONSOLE_PARITY.md:

Save output as text:
- New SaveOutput action in the Edit menu, terminal context menu and
  keyboard shortcuts (Ctrl+Shift+S, Konsole parity, rebindable).
- Terminal::scrollback_text() extracts history plus visible screen via
  alacritty bounds_to_string, trimming trailing empty lines.
- Save-file dialog through cosmic-files; the file is written in a
  spawn_blocking task so large scrollbacks never stall the UI.

Search options:
- Case-sensitive and regex checkboxes in the find bar.
- App::find_pattern() escapes the pattern when regex mode is off and
  prefixes (?i) when case-insensitive (same approach as Alacritty).

Per-tab monitors (activity / silence / process finished):
- Toggles in the View menu and terminal context menu, state stored in
  Terminal (monitor_* fields).
- Activity alerts on PTY output (Wakeup) for non-active tabs; silence
  alerts after 10 s without output (Konsole default); process-finished
  compares the shell pgrp with the tty tpgid via /proc/<pid>/stat and
  alerts when the foreground job exits.
- Silence and process checks run on a 1 s iced::time subscription that
  is only active while at least one tab needs it.
- Tab bar shows an armed icon (view-reveal-symbolic) and per-kind alert
  icons; activating the tab acknowledges the alert.

Profile CLI:
- --profile/-p <name-or-id> applies a profile to the first tab only,
  unknown profiles exit(1) with the available list on stderr.
- --list-profiles prints "id<TAB>name" and exits.
- Config is now loaded before the daemonize fork so CLI output reaches
  the launching terminal.
- --help now documents -e/--command, --no-daemon and the new flags
  (-e already worked; audit confirmed everything after it becomes the
  command and its arguments).

i18n: new en/fr strings (save-output, monitor-*, find-case-sensitive,
find-regex).

Validated with ./check_cosmic_local.sh terminal, cargo fmt, and a debug
build exercising the CLI flags and a 6 s live run. The shutdown panic
in iced_winit ("async fn resumed after completion") pre-exists and is
reproducible with the installed binary.

Leyoda 2026 – GPLv3
2026-07-06 09:50:58 +02:00
d5eb4b8308 fix: absorb libcosmic theme-v2 API + reqwest stream feature
Leyoda 2026 – GPLv3
2026-07-04 11:23:11 +02:00
f9f329d85f feat: align terminal with local cosmic stack 2026-07-04 11:21:51 +02:00
Frederic Laing
1e49511fcf fix: accumulate fractional wheel-line scroll deltas 2026-06-30 17:20:17 -06:00
Igor Matuszewski
18d45bc88f fix: report effective OSC 11 background 2026-06-26 09:44:58 -04:00
Igor Matuszewski
042c915990 feat: report focus in and out events 2026-06-25 14:06:02 +02:00
James Feister
18b4450c0f
fix: avoid re-reading system theme from disk on every menu bar render 2026-06-12 14:47:00 -06:00
Ryan Northey
b5dca36359 keybindings: Fix terminal undo
Signed-off-by: Ryan Northey <ryan@synca.io>
2026-06-01 20:16:33 +01:00
Gene Wood
ee25528ad9
Set scrolling_history to 100,000
Relates to #684
2026-05-29 11:02:10 -07:00
Hojjat
67938814b6 fix: avoid unnecessary shape-until-cursor at start-up 2026-05-29 18:56:59 +02:00
Hojjat
02d977ac4d fix: send the correct up/down code in APP_CURSOR mode
Fixes scrolling in `less`
2026-05-29 17:14:22 +02:00
Hojjat
124931faff fix: do not drop scrolling events from smooth scrolling mice 2026-05-29 17:14:22 +02:00
Hojjat
3d8ca65b75 chore: support more named keys for keyboard shortcuts 2026-05-28 21:18:28 +02:00
Hojjat Abdollahi
f5cbed08d6
fix(libcosmic): fix item highlight in wayland context menu 2026-05-28 21:10:17 +02:00
Hojjat
91fd140ae3 feat: option to open new windows in the current directory 2026-05-27 23:58:24 -04:00
Ashley Wulber
512cc0d250 fix: libcosmic updates 2026-05-26 15:40:59 -04:00
Michael Murphy
3bd221e3e1
Revert "bound the event channel to prevent unbounded RSS growth" 2026-05-18 16:30:51 +02:00
Levi Portenier
cf059265f8
Merge pull request #753 from kenz-gelsoft/minimal-input-method-support
feat(ime): minimal IME support for the terminal_box widget
2026-05-15 08:08:10 -06:00
Jeremy Soller
691c21a48e
Merge pull request #806 from marshallhumble/mem-leak-hunting
bound the event channel to prevent unbounded RSS growth
2026-05-14 21:29:25 -06:00
Marshall Humble
ac436abac6 docs: explain backpressure rationale for PTY event channel in 2026-05-14 17:29:31 -05:00
Jacob Kauffmann
f16dc74a7a chore: cargo fmt 2026-05-14 15:39:59 -06:00
Marshall Humble
21682acfae bound the event channel to prevent unbounded RSS growth 2026-05-14 15:27:46 -06:00
Levi Portenier
77114d0320
Merge branch 'master' into jellywx/fix-pageup-pagedown-binds 2026-05-14 14:32:25 -06:00
KENZ
d413fdb593 fix: clippy lint 2026-05-11 23:49:42 +09:00
KENZ
1963929e05 fix: context menu by disabling IME when the widget has context menu 2026-05-11 23:49:42 +09:00
KENZ
c22d1ccc28 fix: menu doesn't show by unfocusing when clicking outside of the terminal_box 2026-05-11 23:49:42 +09:00
KENZ
768ee43d5a Specify the line height to the IME cursor height 2026-05-11 23:49:42 +09:00
KENZ
888b1b5f6b Handle wide character widths by using glyph width to detect wide chars 2026-05-11 23:49:42 +09:00
KENZ
da57b9c12d Estimate preedit position without calling layout_runs() 2026-05-11 23:49:42 +09:00
KENZ
18462517f0 Add minimal support CJK input method to terminal box excepts IME cursor positioning which is a bit tricky 2026-05-11 23:49:42 +09:00
Levi Portenier
f5e21f2c98
Merge branch 'master' into new-tab-current-dir-with-config 2026-04-27 16:15:19 -06:00
obeme-qq
f689040c9c fix: change zoom reset scope to active tab
fixed inconsistencies with zoom. Added a separate function for resetting the zoom for the current tab, used it for the ctrl 0 shortcut.
2026-04-27 21:05:31 +03:00
Nicolas Danelon
f3af51df61
Merge branch 'master' into new-tab-current-dir-with-config 2026-04-27 12:37:40 +02:00
Nicolas Danelon
7051cc53f7 Restrict /proc cwd lookup to Linux 2026-04-24 17:49:59 +02:00
KENZ
e37f73dcbb fix: don't capture all mouse events
- this fixed find panel buttons
- similar fix for cosmic-edit of:
  -
    6ea24b8518
2026-04-16 01:03:19 +09:00
Chris Glass
27e2d682a5 Cargo fmt 2026-04-10 19:06:54 +02:00
Chris Glass
a747b03c17 Bonus: reduce size of Message further
Turns out we can reduce the size of Message even further by also boxing
the Config variant.

The size of the Message enum has now dropped from 900+ bytes to 64
bytes.
2026-04-10 19:00:25 +02:00
Chris Glass
b654808734 Ingore clippy warnings about too many arguments 2026-04-10 18:40:26 +02:00
Chris Glass
eca9421e87 We don't need to match for only one case
Instead, let's use a simple if statement. If in the future we need to
care about other cases, we can introduce a match statement again.
2026-04-10 18:36:16 +02:00
Chris Glass
72a27129e3 Don't pass the large DialogMessage on the stack
Instead, since the size of DialogMessage is allocated in the Message
enum, pass it as a box, so that only the size of a pointer is allocated
on the stack instead.
2026-04-10 18:32:09 +02:00
Chris Glass
f50ece41eb Fix all auto-fix from clippy 2026-04-10 18:09:25 +02:00
Hojjat
c8b18c2827 chore: update to the latest libcosmic
applies iced re-export changes
2026-04-09 12:47:22 -04:00
Hojjat
1d86974682 fix: keep the url in state for menu actions and underline 2026-04-09 12:47:22 -04:00
Hojjat
8b95675c9b fix: gate wayland features and add inline popover fallback 2026-04-09 12:47:22 -04:00
Hojjat
467998433c chore: cargo fmt 2026-04-09 12:47:22 -04:00
Hojjat
133c526acd fix: dismiss context menu when clicking in any pane 2026-04-09 12:47:22 -04:00
Hojjat
0b1490e7ff fix: use window-absolute coordinates for context menu position in split panes 2026-04-09 12:47:22 -04:00
Hojjat
0575680860 feat: Convert context menu from widget::popover to Wayland popup surface 2026-04-09 12:47:22 -04:00
Jude Southworth
24fb50083e Fix binding to the pageup/pagedown keys 2026-04-07 10:53:54 +01:00
Hojjat
81c62faa05 chore: cargo fmt 2026-04-02 09:45:38 -06:00