Commit graph

52 commits

Author SHA1 Message Date
a035b47e98 yoda: lecture seule par onglet, a la Ghostty (toggle_readonly)
Surveiller une session Claude Code ou Modjo sans risquer de lui taper
dedans, ni de lui coller quoi que ce soit.

- Terminal::read_only : input_no_scroll, input_scroll (donc paste) et
  la molette en mode souris n'ecrivent plus rien, et une frappe ne ramene
  plus la vue en bas. Couvre touches legacy et kitty, collage, clic
  milieu, Ctrl+C, gestionnaire de mots de passe, IME, glisser-deposer.
- Terminal::respond : ecriture non bloquee pour ce que le terminal repond
  lui-meme (PtyWrite, couleurs, taille, rapports de focus), sinon une
  application attendrait une reponse qui ne vient pas (CSI ? u de Claude
  Code, DA, DSR...).
- terminal_box : en lecture seule la souris revient au terminal
  (selection, copie et defilement locaux, meme dans une application qui
  la capture).
- Case « Lecture seule » dans Affichage et dans le menu contextuel ;
  action ToggleReadOnly dans les raccourcis (groupe Autre, sans
  raccourci par defaut, comme Ghostty et Konsole) ; cadenas
  changes-prevent-symbolic sur l'onglet, apres les alertes.

Test de bout en bout dans un vrai PTY (cat) : saisie et collage bloques,
reponse transmise, saisie retablie ; il echoue si le verrou est retire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:19:02 +02:00
db9ee02d8d yoda: attenuation des panneaux non focalises, a la Ghostty
Avec Claude Code et Modjo cote a cote, rien ne distinguait le panneau ou
l'on tape, hors le curseur creux. L'amont assombrissait le fond de 8 %
(aussi quand la fenetre perdait le focus) et l'a retire en juillet
(a43b5ae).

Reprise de unfocused-split-opacity de Ghostty : un voile de la couleur du
fond, texte compris, sur chaque panneau non focalise, seulement quand il y
en a plusieurs ; la perte de focus de la fenetre ne change rien.

- Config unfocused_pane_dim (pourcentage, defaut 30 = opacite 0,7 de
  Ghostty, 0 desactive, plafond 85 = opacite minimale 0,15 de Ghostty).
- Reglages > Panneaux : curseur « Attenuation des panneaux inactifs ».
- terminal_box : voile trace dans un calque a part en fin de rendu (dans
  le meme calque, la primitive de texte passerait par-dessus), aux coins
  du fond du panneau.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:40:47 +02:00
2414aaece3 yoda: notifications de bureau OSC 9/777 et cloche utile, a la Ghostty
vte 0.15 jette les OSC 9 et 777 : Claude Code (canal « ghostty ») ou tout
programme qui veut signaler « j'attends » ne pouvait rien faire remonter,
et la cloche etait un TODO. Avec plusieurs sessions en onglets, rien ne
disait laquelle attendait une reponse.

- osc_tap : le Pty est enveloppe, son lecteur passe chaque lecture a un
  petit automate qui repere OSC 777;notify;titre;corps et OSC 9;texte
  (les commandes ConEmu 9;N, dont la progression 9;4, sont ecartees comme
  dans Ghostty). Ni alacritty_terminal ni vte ne sont forkes.
- desktop_notify : org.freedesktop.Notifications en direct (zbus), pour
  recuperer le jeton ActivationToken au clic : la notification ramene la
  fenetre au premier plan, sur le bon panneau et le bon onglet. Une
  notification par onglet au plus (replaces_id), anti-rafale de Ghostty
  (1/s, identique toutes les 5 s), titre suivi du nom de l'onglet.
- Rien n'est envoye pour l'onglet qu'on a sous les yeux. Sinon l'onglet
  porte une icone d'attention (cloche ou notification), eteinte quand il
  reprend le focus.
- Cloche : indicateur d'onglet seulement. Pas de demande d'attention
  xdg-activation : cosmic-comp donne un jeton valide a toute application
  non sandboxee, la fenetre volerait le focus.
- Focus 1004 : l'onglet quitte recoit enfin son focus-out (seul l'onglet
  actif de chaque panneau etait mis a jour) ; un agent en arriere-plan ne
  croit plus qu'on le regarde.
- Chevrons du corps remplaces par ‹ › : cosmic-notifications lit le corps
  en HTML sans decoder les entites.

7 tests, dont un de bout en bout dans un vrai PTY.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:12:28 +02:00
083e09f97e merge: epoch-1.9.0 d'upstream
# Conflicts:
#	Cargo.lock
#	src/main.rs
#	src/menu.rs
2026-09-24 20:52:15 +02:00
Hojjat
78eaba9db1 chore: tweak context menu items order and wording 2026-09-15 19:09:43 -04: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
Ben Gubler
5db18f3fac feat: allow configuring terminal pane borders 2026-07-27 15:58:51 -04: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
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
f9f329d85f feat: align terminal with local cosmic stack 2026-07-04 11:21:51 +02:00
Hojjat
91fd140ae3 feat: option to open new windows in the current directory 2026-05-27 23:58:24 -04:00
Nicolas Danelon
75714dedee New tab opens on current directory
This patch add a new feature, now tab behavior now inherits the
active tab’s current directory on Linux controlled by a settings
toggle, and default is off
2026-03-06 13:53:46 +01:00
lorduskordus
e7ee7d3069
i18n: Remove dot from description 2026-02-25 19:03:13 +01:00
Chris Glass
a6522c4816 Add "Copy link" to context menu 2026-02-15 11:15:12 +01:00
Jeremy Soller
51454564cc Generate translated desktop and metainfo files with xdgen 2026-02-12 15:23:04 -07:00
Jeremy Soller
f6f8772f5d Change Unbind action to Disable to match cosmic-settings 2026-02-05 13:49:05 -07:00
Jeremy Soller
7d2f631c5d More design adjustments 2026-02-05 13:36:38 -07:00
Jeremy Soller
1b980df309 Implement key bind reset 2026-02-05 12:57:56 -07:00
Jeremy Soller
182e1549fd Move keyboard shortcuts to menu item 2026-02-05 11:31:05 -07:00
Jeremy Soller
92d22621e4 Implement shortcut search 2026-02-05 11:25:53 -07:00
nludwig
70e0f5a5f2 add dialog box when replacing existing keybind 2026-02-03 22:08:34 -08:00
nludwig
cc27b6ab30 fix localization 2026-02-02 15:20:28 -08:00
Mattias Eriksson
e7e47d5bac Add context menu for opening links 2025-10-16 09:27:00 +02:00
Mattias Eriksson
71b9fb5226 Implement a simple password manager 2025-10-13 07:19:10 +02:00
Vukašin Vojinović
f3ec16b9bd chore: update dependencies
Also switches to the `about` widget.
2025-09-11 08:34:15 -06:00
Joel Höner
4beabca14d Add "Clear scrollback" action 2024-09-19 17:21:42 -06:00
Dominic Gerhauser
fa744071f8 Add tty working dir and hold 2024-04-26 10:01:49 -06:00
Jeremy Soller
8cb92d36ae
Remove about heading 2024-02-28 09:33:43 -07:00
Jeremy Soller
c9f99a3025
Add about page 2024-02-27 21:20:00 -07:00
leb-kuchen
d4f1e1cd12
Add ability to select a default profile. (#144)
* add default profile

* check profile

* default profiles add translations

* default profiles check for profile removal
2024-02-25 20:47:52 -07:00
Jeremy Soller
d9512cd0a4
Fix style of advanced font settings item 2024-02-22 11:32:39 -07:00
Jeremy Soller
89e1dcb83a
Color Schemes (#142)
* WIP: Color Schemes

* Import/export using color_schemes config

* Finish color scheme implementation

* Add color scheme rename
2024-02-22 09:55:46 -07:00
Jeremy Soller
01052fae0b
Remove profile command line description 2024-02-20 10:25:05 -07:00
Jeremy Soller
290b7b5993
Implement tab title override 2024-02-20 10:21:30 -07:00
Jeremy Soller
72c97fd5fc
Support opacity 2024-02-12 12:36:30 -07:00
Jeremy Soller
3a3e42110c
Add support for profiles (#131) 2024-02-09 15:45:46 -07:00
Jeremy Soller
ff6ad163d6
Settings re-org 2024-01-31 10:29:35 -07:00
Mattias Eriksson
c749a02df8 Add Focus Follows Mouse 2024-01-22 09:00:08 -07:00
Jeremy Soller
6d519018a0
Show shortcuts in context menu 2024-01-19 11:44:59 -07:00
Jeremy Soller
a2e0d527c4
Normalize case for pane shortcuts 2024-01-19 11:06:40 -07:00
Jeremy Soller
834a385235
Show bindings in menu, finish #26 2024-01-19 11:03:14 -07:00
Mattias Eriksson
1940f2c056 Support splitting of terminals using a Pane Grid 2024-01-17 16:09:56 +01:00
Mohammad AlSaleh
e56e582f90 Add option for setting dim font weight
Allows users to set this to a value lower than default font weight.

Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
2024-01-12 10:40:10 -07:00
Jeremy Soller
928269a239
Add find stub 2024-01-11 13:20:16 -07:00
Mohammad AlSaleh
b161db94d1 Add a disabled-by-default toggle for using bright colors for bold text
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
2024-01-11 09:58:18 -07:00
Mohammad AlSaleh
4ec3e5b2f3 Consider stretch/weight settings advanced and hide them with a toggle
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
2024-01-09 17:18:04 -07:00
Mohammad AlSaleh
5eba6eb4d6 Configurable font stretch, font weight, and bold font weight
* Store a font name => font faces map

 * Only list font names that have `NORMAL` and `BOLD` faces with
   `Normal` stretch. This will give us defaults and fall-backs that are
   guaranteed to always exist.

 * Filter by stretch first, with `Normal` chosen as the always existing
   default.

 * Then only list font weights supported by the font name stretch
   selected, for the normal and bold cases.

 * When changing the font name selected, the stretch/weight options
   will stay the same if supported by the new font name, or revert to
   the always existing fall-backs.

Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
2024-01-09 17:18:04 -07:00
Jeremy Soller
db738371ac
Add menu 2024-01-09 10:16:32 -07:00
Mohammad AlSaleh
1c8a058e82 Implement ZoomIn/ZoomOut/ZoomReset with configurable step
Implements #14.

Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
2024-01-03 08:31:41 -07:00
Jeremy Soller
37acfe186e
Add config for showing header bar 2023-12-22 15:40:10 -07:00