Commit graph

416 commits

Author SHA1 Message Date
b8fce5a272 yoda: elements de bloc U+2580-259F peints en quads natifs
Le glyphe de police d'un bloc ne couvre que ~1 em alors que la cellule
fait line_height (~1.4 em) : rangées de blocs trouees par l'interligne,
bords creneles, rendu flou aux echelles fractionnees.

Desormais le caractere est remplace par une espace (aucun glyphe) et le
remplissage voyage dans Metadata jusqu'au tracé, ou terminal_box le
peint en quad GPU couvrant exactement la fraction de cellule (huitiemes,
quadrants, trames alpha). Consecutive cells de meme metadata fusionnent
en un seul quad : jointif par construction, aligne sur la grille, net a
toute echelle. C'est l'approche de kitty/WezTerm. Tout TUI a blocs
profite (bannieres, jauges htop/btop, barres de progression).

Couverture totale de la plage + geometrie bornee, 2 tests.
2026-09-04 16:53:35 +02:00
eda2fb1d58 Merge remote-tracking branch 'upstream/master' into local/yoda-main
# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	src/main.rs
#	src/menu.rs
#	src/terminal.rs
#	src/terminal_box.rs
2026-08-19 22:02:40 +02:00
abd415723c fix(tabs): renommer l'onglet du bon panneau en multi-panneaux
Le renommage d'onglet visait le panneau actif au moment de la validation
et non celui ou le renommage avait ete ouvert. L'ouverture appelle
unfocus_all_terminals(), si bien que `pane_model.active()` pouvait
designer un autre panneau au moment du commit : en configuration
scindee, le nouveau titre atterrissait sur l'onglet d'un panneau voisin.

`rename_tab` memorise desormais le panneau : (Pane, Entity, String) au
lieu de (Entity, String). L'ouverture le capture via focused(), et
commit, annulation et remise a zero le retrouvent par
panes.get(pane) au lieu de active_mut(). Le focus est rendu au panneau
d'origine via set_focus(pane) plutot que par update_terminal_focus(),
qui le laissait au petit bonheur.

Reprend le stash de 2026-06-13, fait sur 39d3d01. Le seul conflit
portait sur dialog(), ou la branche a gagne depuis le dialogue de
chargement de disposition : les deux sont conserves.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 19:39:48 +02:00
Hojjat
5095059f90 chore: cargo clippy --fix 2026-08-05 14:09:24 -06:00
Hojjat
69cdcbd1c1 fix: request a redraw if terminal needs to update 2026-08-05 14:03:29 -06:00
Connor-GH
7daf10e3b5 fix: round subpixel coordinates for glyph background rectangles
`cosmic-term` currently has an issue where borders appear to separate
some cells columnwise. This was caused due to the accumulation of
floating point error when using font sizes that can't be fully
represented in an f32. For example, a font size of 8.4x20 and a unique
color per cell is enough to reproduce this. Essentially, the glyph
background rectangles are being drawn slightly too narrow, causing the
terminal background to leak through. This patch rounds the rectangles in
such a way that we guarantee the drawing of that "border" pixel using
floor() and ceil().
2026-07-31 04:43:10 +02:00
Nitin Gurram
6bf0c65ca9
feat: allow configuring terminal pane borders 2026-07-29 18:21:03 +02:00
Ben Gubler
5db18f3fac feat: allow configuring terminal pane borders 2026-07-27 15:58:51 -04:00
RipleyTom
44d042f45d fix: only PaneClicked events change focus 2026-07-14 13:32:02 -06:00
Jeremy Soller
a43b5ae500 Remove background shading when not focused 2026-07-09 14:32:41 -06:00
d7cc5aaac1 feat: Konsole parity phase 1b (layout save/load, SSH bookmarks)
- Serialize pane grid splits and per-tab state to RON
- Save/load layout via cosmic-files dialogs with confirmation
- SSH submenu from ~/.ssh/config Host entries (no wildcards)
- i18n en/fr for layout and SSH menu entries
2026-07-09 14:18:02 +02:00
Ashley Wulber
6bd07a6363 feat: blur 2026-07-06 09:28:54 -04:00
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