La selection n'allait que dans la selection primaire (clic du milieu) ;
pour la coller avec Ctrl+V ailleurs, il fallait Ctrl+Shift+C. Reprise de
copy-on-select = clipboard de Ghostty, le reglage de l'ancienne config
Ghostty de Lionel.
- Config copy_on_select_clipboard (desactive par defaut, comme l'amont) ;
case dans Reglages > Avance.
- terminal_box::on_selection_done : publie a la fin d'un geste de
selection fait dans le panneau (glisser, double/triple clic, Shift+
clic), pas a chaque relachement du bouton gauche. La copie primaire
existante part elle a tout relachement dans la fenetre : la recopier
dans le presse-papiers ecraserait, au simple clic sur un onglet, ce
qu'on vient de copier ailleurs avec une vieille selection.
- Message::SelectionDone : copie la selection de cet onglet ; une
selection vide (simple clic) ne donne pas de texte (range_simple).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
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>
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>
- 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
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