Compare commits

..

No commits in common. "eda2fb1d581adaf9b9004d75528c8d85fa71a6ab" and "abd415723c731a1bfd8affcbf87c6ad920314f7a" have entirely different histories.

38 changed files with 1294 additions and 1408 deletions

2077
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,10 @@
[package] [package]
name = "cosmic-term" name = "cosmic-term"
version = "1.6.0" version = "1.3.0"
authors = ["Jeremy Soller <jeremy@system76.com>"] authors = ["Jeremy Soller <jeremy@system76.com>"]
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"
rust-version = "1.93" rust-version = "1.90"
[dependencies] [dependencies]
alacritty_terminal = "0.25.1" alacritty_terminal = "0.25.1"
@ -51,14 +51,7 @@ package = "libcosmic-yoda"
path = "../libcosmic" path = "../libcosmic"
default-features = false default-features = false
#TODO: a11y feature crashes file chooser dialog #TODO: a11y feature crashes file chooser dialog
features = [ features = ["about", "autosize", "multi-window", "tokio", "winit", "surface-message"]
"about",
"autosize",
"multi-window",
"tokio",
"winit",
"surface-message",
]
[target.'cfg(unix)'.dependencies] [target.'cfg(unix)'.dependencies]
fork = "0.4" fork = "0.4"

24
debian/changelog vendored
View file

@ -1,27 +1,3 @@
cosmic-term (1.6.0) noble; urgency=medium
* Epoch 1.6.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 18 Aug 2026 07:15:01 -0600
cosmic-term (1.5.0) noble; urgency=medium
* Epoch 1.5.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 28 Jul 2026 09:15:04 -0600
cosmic-term (1.4.0) noble; urgency=medium
* Epoch 1.4.0 version update
-- Jeremy Soller <jeremy@system76.com> Mon, 20 Jul 2026 14:36:58 -0600
cosmic-term (1.3.0) noble; urgency=medium
* Epoch 1.3.0 version update
-- Jeremy Soller <jeremy@system76.com> Sun, 12 Jul 2026 13:22:28 -0600
cosmic-term (1.2.0) noble; urgency=medium cosmic-term (1.2.0) noble; urgency=medium
* Epoch 1.2.0 version update * Epoch 1.2.0 version update

View file

@ -41,7 +41,7 @@ settings = الإعدادات
### Appearance ### Appearance
appearance = المظهر appearance = المظهر
theme = السمة theme = النسق
match-desktop = طابق سطح المكتب match-desktop = طابق سطح المكتب
dark = داكن dark = داكن
light = فاتح light = فاتح
@ -88,7 +88,7 @@ new-window = نافذة جديدة
profile = ملف التعريف profile = ملف التعريف
menu-profiles = ملفات التعريف... menu-profiles = ملفات التعريف...
close-tab = أغلق اللسان close-tab = أغلق اللسان
quit = إنهِ quit = أنهِ
## Edit ## Edit

View file

@ -1,6 +1,3 @@
cancel = Cancel·lar cancel = Cancel·lar
settings = Configuració settings = Configuració
quit = Surt quit = Surt
delete = Suprimeix
rename = Canvia el nom
name = Nom

View file

@ -38,15 +38,15 @@ advanced-font-settings = Pokročilá nastavení písma
default-font = Písmo default-font = Písmo
default-font-size = Velikost písma default-font-size = Velikost písma
default-font-stretch = Šířka písma default-font-stretch = Šířka písma
default-font-weight = Tloušťka normálního písma default-font-weight = Normální tloušťka písma
default-dim-font-weight = Tloušťka zeslabeného písma default-dim-font-weight = Tenká tloušťka písma
default-bold-font-weight = Tloušťka tučného písma default-bold-font-weight = Tučná tloušťka písma
use-bright-bold = Světlejší tučný text use-bright-bold = Světlejší tučný text
splits = Rozdělení splits = Rozdělení
focus-follow-mouse = Zaměření psaní sleduje myš focus-follow-mouse = Zaměření psaní sleduje myš
advanced = Pokročilé advanced = Pokročilé
show-headerbar = Zobrazit hlavičku show-headerbar = Zobrazit hlavičku
show-header-description = Hlavičku lze odkrýt z nabídky zobrazené po kliknutí pravým tlačítkem myši show-header-description = Hlavičku je možné odkrýt z kontextového menu
find-placeholder = Najít... find-placeholder = Najít...
find-previous = Najít předchozí find-previous = Najít předchozí
find-next = Najít další find-next = Najít další
@ -109,4 +109,3 @@ paste-primary = Vložit primární
copy-link = Kopírovat odkaz copy-link = Kopírovat odkaz
tab-new-inherit-working-directory = Nové karty a okna používají aktuální adresář tab-new-inherit-working-directory = Nové karty a okna používají aktuální adresář
tab-new-inherit-working-directory-description = Otevírat nové karty a okna v pracovním adresáři aktivní karty tab-new-inherit-working-directory-description = Otevírat nové karty a okna v pracovním adresáři aktivní karty
show-pane-borders = Zobrazit ohraničení panelu

View file

@ -1,31 +0,0 @@
rename = Omdøb
delete = Slet
name = Navn
cancel = Annuller
quit = Afslut
find-next = Find næste
select-all = Vælg alle
new-window = Nyt vindue
edit = Redigér
copy = Kopiér
theme = Tema
appearance = Udseende
light = Lyst
repository = Pakkearkiv
paste = Indsæt
menu-settings = Indstillinger...
view = Vis
dark = Mørkt
match-desktop = Følg skrivebordets indstillinger
find-previous = Find forrige
find-placeholder = Find...
default-zoom-step = Zoom-trin
file = Fil
find = Find
support = Support
settings = Indstillinger
keyboard-shortcuts = Tastaturgenveje
menu-keyboard-shortcuts = Tastaturgenveje…
replace = Erstat
close-tab = Luk fane
new-tab = Ny fane

View file

@ -69,7 +69,7 @@ advanced = Erweitert
show-headerbar = Kopfzeile anzeigen show-headerbar = Kopfzeile anzeigen
show-header-description = Kopfzeile über das Rechtsklick-Menü aufzeigen show-header-description = Kopfzeile über das Rechtsklick-Menü aufzeigen
# Suchen # Suchen
find-placeholder = Suchen ... find-placeholder = Suchen...
find-previous = Vorherigen suchen find-previous = Vorherigen suchen
find-next = Nächsten suchen find-next = Nächsten suchen
@ -82,7 +82,7 @@ file = Datei
new-tab = Neuer Tab new-tab = Neuer Tab
new-window = Neues Fenster new-window = Neues Fenster
profile = Profil profile = Profil
menu-profiles = Profile ... menu-profiles = Profile...
close-tab = Tab schließen close-tab = Tab schließen
quit = Beenden quit = Beenden
@ -106,14 +106,14 @@ previous-tab = Vorheriger Tab
split-horizontal = Horizontal teilen split-horizontal = Horizontal teilen
split-vertical = Vertikal teilen split-vertical = Vertikal teilen
pane-toggle-maximize = Maximierung umschalten pane-toggle-maximize = Maximierung umschalten
menu-color-schemes = Farbschemen ... menu-color-schemes = Farbschemen...
menu-settings = Einstellungen ... menu-settings = Einstellungen...
menu-about = Über COSMIC Terminal ... menu-about = Über COSMIC Terminal...
repository = Repositorium repository = Repository
cancel = Abbrechen cancel = Abbrechen
keyboard-shortcuts = Tastenkombinationen keyboard-shortcuts = Tastenkombinationen
open-link = Link öffnen open-link = Link öffnen
menu-password-manager = Passwörter ... menu-password-manager = Passwörter...
passwords-title = Passwörter passwords-title = Passwörter
add-password = Passwort hinzufügen add-password = Passwort hinzufügen
password-input = Passwort password-input = Passwort
@ -124,7 +124,7 @@ focus-pane-down = Bereich unten fokussieren
focus-pane-left = Bereich links fokussieren focus-pane-left = Bereich links fokussieren
focus-pane-right = Bereich rechts fokussieren focus-pane-right = Bereich rechts fokussieren
focus-pane-up = Bereich oben fokussieren focus-pane-up = Bereich oben fokussieren
menu-keyboard-shortcuts = Tastenkombinationen ... menu-keyboard-shortcuts = Tastenkombinationen...
no-shortcuts = Keine Tastenkombinationen no-shortcuts = Keine Tastenkombinationen
password-manager = Passwortmanager password-manager = Passwortmanager
replace = Ersetzen replace = Ersetzen
@ -137,7 +137,7 @@ shortcut-group-window = Fenster
shortcut-replace-title = Tastenkombination ersetzen? shortcut-replace-title = Tastenkombination ersetzen?
tab-activate = Tab { $number } aktivieren tab-activate = Tab { $number } aktivieren
copy-link = Link kopieren copy-link = Link kopieren
type-to-search = Zum Suchen tippen ... type-to-search = Zum Suchen tippen...
close-window = Fenster schließen close-window = Fenster schließen
copy-or-sigint = Kopieren oder SIGINT copy-or-sigint = Kopieren oder SIGINT
toggle-fullscreen = Vollbild umschalten toggle-fullscreen = Vollbild umschalten
@ -149,4 +149,3 @@ shortcut-replace-body = { $binding } ist bereits { $existing } zugeordnet. Durch
keywords = Befehl;Shell;Terminal;CLI; keywords = Befehl;Shell;Terminal;CLI;
tab-new-inherit-working-directory = Neue Tabs und Fenster verwenden das aktuelle Verzeichnis tab-new-inherit-working-directory = Neue Tabs und Fenster verwenden das aktuelle Verzeichnis
tab-new-inherit-working-directory-description = Neue Tabs und Fenster im Arbeitsverzeichnis des aktiven Tabs öffnen tab-new-inherit-working-directory-description = Neue Tabs und Fenster im Arbeitsverzeichnis des aktiven Tabs öffnen
show-pane-borders = Bereichsrahmen anzeigen

View file

@ -87,7 +87,7 @@ new-window = Νέο παράθυρο
profile = Προφίλ profile = Προφίλ
menu-profiles = Προφίλ... menu-profiles = Προφίλ...
close-tab = Κλείσιμο καρτέλας close-tab = Κλείσιμο καρτέλας
quit = Τερματισμός quit = Έξοδος
## Edit ## Edit

View file

@ -111,7 +111,3 @@ menu-settings = Settings...
menu-about = About COSMIC Terminal... menu-about = About COSMIC Terminal...
repository = Repository repository = Repository
support = Support support = Support
cancel = Cancel
keyboard-shortcuts = Keyboard shortcuts
replace = Replace
menu-keyboard-shortcuts = Keyboard shortcuts...

View file

@ -58,7 +58,6 @@ use-bright-bold = Make bold text brighter
### Splits ### Splits
splits = Splits splits = Splits
focus-follow-mouse = Typing focus follows mouse focus-follow-mouse = Typing focus follows mouse
show-pane-borders = Show pane borders
### Advanced ### Advanced
advanced = Advanced advanced = Advanced

View file

@ -1,5 +0,0 @@
name = نام
cancel = لغو
quit = خروج
rename = تغییر نام
delete = حذف

View file

@ -38,7 +38,7 @@ settings = Asetukset
appearance = Ulkoasu appearance = Ulkoasu
theme = Teema theme = Teema
match-desktop = Sama kuin työpöytä match-desktop = Sovita työpöytään
dark = Tumma dark = Tumma
light = Vaalea light = Vaalea
syntax-dark = Tumma väriteema syntax-dark = Tumma väriteema
@ -151,4 +151,3 @@ toggle-fullscreen = Koko näyttö päällä tai pois
shortcut-group-other = Muut shortcut-group-other = Muut
tab-new-inherit-working-directory = Uudet välilehdet käyttävät nykyistä hakemistoa tab-new-inherit-working-directory = Uudet välilehdet käyttävät nykyistä hakemistoa
tab-new-inherit-working-directory-description = Avaa uudet välilehdet aktiivisen välilehden työskentelyhakemistossa tab-new-inherit-working-directory-description = Avaa uudet välilehdet aktiivisen välilehden työskentelyhakemistossa
show-pane-borders = Näytä paneelin rajat

View file

@ -168,4 +168,3 @@ comment = Émulateur de terminal pour le bureau COSMIC
keywords = Commande;Shell;Terminal;CLI; keywords = Commande;Shell;Terminal;CLI;
tab-new-inherit-working-directory = Les nouveaux onglets et fenêtres utilisent le répertoire actuel tab-new-inherit-working-directory = Les nouveaux onglets et fenêtres utilisent le répertoire actuel
tab-new-inherit-working-directory-description = Ouvrir les nouveaux onglets et fenêtres dans le répertoire de travail de l'onglet actif tab-new-inherit-working-directory-description = Ouvrir les nouveaux onglets et fenêtres dans le répertoire de travail de l'onglet actif
show-pane-borders = Afficher les bordures des panneaux

View file

@ -147,5 +147,5 @@ type-to-search = Clóscríobh le cuardach a dhéanamh...
comment = Aithriseoir teirminéal don deasc COSMIC comment = Aithriseoir teirminéal don deasc COSMIC
keywords = Ordú;Blaosc;Teirminéal;CLI; keywords = Ordú;Blaosc;Teirminéal;CLI;
copy-link = Cóipeáil Nasc copy-link = Cóipeáil Nasc
tab-new-inherit-working-directory = Úsáideann cluaisíní agus fuinneoga nua an t-eolaire reatha tab-new-inherit-working-directory = Úsáideann cluaisíní nua an eolaire reatha
tab-new-inherit-working-directory-description = Oscail cluaisíní agus fuinneoga nua in eolaire oibre an chluaisín ghníomhaigh tab-new-inherit-working-directory-description = Oscail cluaisíní nua in eolaire oibre an chluaisín ghníomhaigh

View file

@ -1,112 +0,0 @@
name = Nome
cancel = Cancelar
delete = Eliminar
rename = Renomear
repository = Repositorio
support = Soporte
settings = Axustes
appearance = Apariencia
theme = Tema
match-desktop = Axustar ao escritorio
dark = Escuro
light = Claro
default-zoom-step = Pasos do zoom
keyboard-shortcuts = Atallos de teclado
find-placeholder = Atopar…
find-previous = Atopar antes
find-next = Atopar seguinte
replace = Remplazar
file = Ficheiro
new-window = Nova xanela
quit = Pechar
edit = Editar
copy = Copiar
paste = Pegar
select-all = Seleccionar todo
find = Atopar
view = Ver
menu-settings = Axustes...
menu-keyboard-shortcuts = Atallos de teclado…
new-tab = Nova lapela
close-tab = Pechar lapela
export = Exportar
import = Importar
reset-to-default = Restablecer aos valores predeterminados
type-to-search = Escribe para buscar...
add-another-keybinding = Engadir outro atallo de teclado
cosmic-terminal = Terminal de COSMIC
comment = Emulador de terminal para o escritorio COSMIC
keywords = Orde; Shell; Terminal; CLI;
new-terminal = Novo terminal
color-schemes = Esquemas de cores
import-errors = Importar erros
profiles = Perfís
command-line = Liña de comandos
tab-title = Titulo da lapela
tab-title-description = Substituír o título predeterminado da lapela
add-profile = Engadir perfil
new-profile = Novo perfil
make-default = Facer predeterminado
working-directory = Directorio de traballo
hold = Manter
remain-open = Permanecer aberto despois de que remate o proceso fillo.
syntax-dark = Esquema de cores escuro
syntax-light = Esquema de cores claras
opacity = Opacidade do fondo
font = Tipografía
advanced-font-settings = Configuración avanzada da tipografía
default-font = Tipografía
default-font-size = Tamaño da tipografía
default-font-stretch = Ancho da tipografía
default-font-weight = Grosor da tipografía normal
default-dim-font-weight = Grosor da tipografía fina
default-bold-font-weight = Grosor da tipografía en negriña
use-bright-bold = Facer máis brillante o texto en negriña
splits = Divisións
focus-follow-mouse = O foco de escritura segue o rato
show-pane-borders = Mostrar os bordos dos paneis
advanced = Avanzado
show-headerbar = Mostrar a cabeceira
show-header-description = Mostrar a cabeceira desde o menú contextual
tab-new-inherit-working-directory = As novas lapelas e xanelas usan o directorio actual
tab-new-inherit-working-directory-description = Abrir novas lapelas e xanelas no directorio de traballo da pestana activa
close-window = Pechar xanela
copy-or-sigint = Copiar ou SIGINT
disable = Desactivar
focus-pane-down = Poñer o foco no panel inferior
focus-pane-left = Poñer o foco no panel esquerdo
focus-pane-right = Poñer o foco no panel dereito
focus-pane-up = Poñer o foco no panel superior
no-shortcuts = Sen atallos de teclado
password-manager = Xestor de contrasinais
paste-primary = Pegar o contido primario
shortcut-capture-hint = Preme a combinación de teclas
shortcut-group-clipboard = Portapapeis
shortcut-group-other = Outro
shortcut-group-tabs = Lapelas
shortcut-group-window = Xanela
shortcut-group-zoom = Zoom
shortcut-replace-body = { $binding } xa está asignado a { $existing }. Substituílo por { $new_action }?
shortcut-replace-title = Remplazar atallo de teclado ?
tab-activate = Activar a lapela { $number }
toggle-fullscreen = Cambiar a pantalla completa
profile = Perfil
menu-profiles = Perfís...
clear-scrollback = Limpar o historial de desprazamento
open-link = Abrir enderezo
copy-link = Copiar enderezo
zoom-in = Texto máis grande
zoom-reset = Tamaño de texto predeterminado
zoom-out = Texto máis pequeno
next-tab = Lapela seguinte
previous-tab = Lapela previa
split-horizontal = Dividir horizontalmente
split-vertical = Dividir verticalmente
pane-toggle-maximize = Alternar maximizado
menu-color-schemes = Esquema de cores...
menu-about = Sobre o Terminal de COSMIC...
menu-password-manager = Contrasinais...
passwords-title = Contrasinais
add-password = Engadir contrasinal
password-input = Contrasinal
password-input-description = Descripción

View file

@ -29,18 +29,18 @@ remain-open = चाइल्ड प्रोसेस के निकलने
## Settings ## Settings
settings = सेटिंग्स settings = सेटिंग
### Appearance ### Appearance
appearance = रुप-रंग appearance = दिखावट
theme = प्रसंग theme = थीम
match-desktop = डेस्कटॉप से मेल खाएँ match-desktop = डेस्कटॉप से मिलाएं
dark = डार्क dark = डार्क
light = लाइट light = लाइट
syntax-dark = रंग योजना डार्क syntax-dark = रंग योजना डार्क
syntax-light = रंग योजना लाइट syntax-light = रंग योजना लाइट
default-zoom-step = ज़ूम चरण default-zoom-step = ज़ूम स्तर
opacity = पृष्ठभूमि अपारदर्शिता opacity = पृष्ठभूमि अपारदर्शिता
### Font ### Font
@ -66,7 +66,7 @@ advanced = एडवांस
show-headerbar = हैडर दिखाएं show-headerbar = हैडर दिखाएं
show-header-description = हैडर को राइट-क्लिक मेन्यू से दिखाएं। show-header-description = हैडर को राइट-क्लिक मेन्यू से दिखाएं।
# Find # Find
find-placeholder = खोजें..। find-placeholder = खोजें...
find-previous = पिछला खोजें find-previous = पिछला खोजें
find-next = अगला खोजें find-next = अगला खोजें
@ -81,13 +81,13 @@ new-window = नई विंडो
profile = प्रोफाइल profile = प्रोफाइल
menu-profiles = प्रोफाइल्स... menu-profiles = प्रोफाइल्स...
close-tab = टैब बंद करें close-tab = टैब बंद करें
quit = बाहर जाएँ quit = बंद करें
### Edit ### Edit
edit = संपादन edit = संपादित करें
copy = कॉपी करें copy = कॉपी करें
paste = चिपकाएँ paste = पेस्ट करें
select-all = सभी चुनें select-all = सभी चुनें
find = खोजें find = खोजें
clear-scrollback = स्क्रॉलबैक साफ़ करें clear-scrollback = स्क्रॉलबैक साफ़ करें
@ -104,11 +104,7 @@ split-horizontal = क्षैतिज विभाजन
split-vertical = लंबवत विभाजन split-vertical = लंबवत विभाजन
pane-toggle-maximize = अधिकतम करें pane-toggle-maximize = अधिकतम करें
menu-color-schemes = रंग योजनाएँ... menu-color-schemes = रंग योजनाएँ...
menu-settings = सेटिंग्स..। menu-settings = सेटिंग्स...
menu-about = कॉस्मिक टर्मिनल के बारे में... menu-about = कॉस्मिक टर्मिनल के बारे में...
repository = रिपॉजिटरी repository = रिपॉजिटरी
support = समर्थन support = सहायता
cancel = रद्द करें
keyboard-shortcuts = कीबोर्ड शॉर्टकट्स
replace = बदलें
menu-keyboard-shortcuts = कीबोर्ड शॉर्टकट्स..।

View file

@ -149,4 +149,3 @@ type-to-search = Gépelj a kereséshez…
copy-link = Hivatkozás másolása copy-link = Hivatkozás másolása
tab-new-inherit-working-directory = Az új lapok és ablakok az aktuális könyvtárat használják tab-new-inherit-working-directory = Az új lapok és ablakok az aktuális könyvtárat használják
tab-new-inherit-working-directory-description = Az új lapok és ablakok az aktív lap munkakönyvtárában nyílnak meg tab-new-inherit-working-directory-description = Az új lapok és ablakok az aktív lap munkakönyvtárában nyílnak meg
show-pane-borders = Ablaktábla-szegélyek megjelenítése

View file

@ -23,7 +23,7 @@ remain-open = Tetap buka setelah proses anak berakhir.
settings = Pengaturan settings = Pengaturan
appearance = Tampilan appearance = Tampilan
theme = Tema theme = Tema
match-desktop = Cocok desktop match-desktop = Cocokkan desktop
dark = Gelap dark = Gelap
light = Terang light = Terang
syntax-dark = Skema warna gelap syntax-dark = Skema warna gelap
@ -109,4 +109,3 @@ keywords = Perintah;Shell;Terminal;CLI;
copy-link = Salin Tautan copy-link = Salin Tautan
tab-new-inherit-working-directory = Tab dan jendela baru menggunakan direktori saat ini tab-new-inherit-working-directory = Tab dan jendela baru menggunakan direktori saat ini
tab-new-inherit-working-directory-description = Buka tab dan jendela baru di direktori pekerjaan tab aktif tab-new-inherit-working-directory-description = Buka tab dan jendela baru di direktori pekerjaan tab aktif
show-pane-borders = Tampilkan batas panel

View file

@ -40,7 +40,7 @@ settings = Impostazioni
appearance = Aspetto appearance = Aspetto
theme = Tema theme = Tema
match-desktop = Abbina al desktop match-desktop = Sistema
dark = Scuro dark = Scuro
light = Chiaro light = Chiaro
syntax-dark = Schema colori scuro syntax-dark = Schema colori scuro
@ -115,7 +115,3 @@ menu-settings = Impostazioni...
menu-about = Informazioni su COSMIC Terminal... menu-about = Informazioni su COSMIC Terminal...
support = Supporto support = Supporto
repository = Repository repository = Repository
cancel = Annulla
keyboard-shortcuts = Scorciatoie da tastiera
replace = Sostituisci
menu-keyboard-shortcuts = Scorciatoie da tastiera...

View file

@ -3,11 +3,11 @@ delete = Өшіру
repository = Репозиторий repository = Репозиторий
support = Қолдау support = Қолдау
settings = Баптаулар settings = Баптаулар
appearance = Сыртқы көрініс appearance = Сыртқы түрі
theme = Тема theme = Тақырып
match-desktop = Жұмыс үстеліне сәйкес болу match-desktop = Жұмыс үстеліне сәйкес келу
dark = Қою dark = Қараңғы
light = Ашық light = Жарық
file = Файл file = Файл
new-tab = Жаңа бет new-tab = Жаңа бет
new-window = Жаңа терезе new-window = Жаңа терезе
@ -107,6 +107,5 @@ type-to-search = Іздеу үшін теріңіз...
comment = COSMIC жұмыс үстелі үшін терминал эмуляторы comment = COSMIC жұмыс үстелі үшін терминал эмуляторы
keywords = Command;Shell;Terminal;CLI;Команда;Қоршам;Терминал; keywords = Command;Shell;Terminal;CLI;Команда;Қоршам;Терминал;
copy-link = Сілтемені көшіру copy-link = Сілтемені көшіру
tab-new-inherit-working-directory = Жаңа беттерде және терезелерде ағымдағы буманы қолдану tab-new-inherit-working-directory = Жаңа беттерде ағымдағы буманы қолдану
tab-new-inherit-working-directory-description = Жаңа беттерді және терезелерді белсенді беттің жұмыс бумасында ашу tab-new-inherit-working-directory-description = Жаңа беттерді белсенді беттің жұмыс бумасында ашу
show-pane-borders = Панель жақтауларын көрсету

View file

@ -33,7 +33,7 @@ command-line = Rêza fermanê
view = Dîtin view = Dîtin
dark = Tarî dark = Tarî
hold = Ragire hold = Ragire
match-desktop = Bi sermaseyê re li hev bîne match-desktop = Li gorî sermaseyê
find-previous = Yê paş bibîne find-previous = Yê paş bibîne
cosmic-terminal = Termînalê COSMIC cosmic-terminal = Termînalê COSMIC
find-placeholder = Bibîne... find-placeholder = Bibîne...
@ -62,7 +62,7 @@ shortcut-group-zoom = Nêzîkbûn
repository = Embar repository = Embar
find = Bibîne find = Bibîne
replace = Biguhêrîne replace = Biguhêrîne
syntax-light = Şêwaza rengan a ronî syntax-light = Şêwaza rengê ronî
default-font-weight = Giraniya cûrenivîsê ya normal default-font-weight = Giraniya cûrenivîsê ya normal
zoom-in = Nivîsa mezintir zoom-in = Nivîsa mezintir
previous-tab = Rûgera paş previous-tab = Rûgera paş
@ -109,4 +109,3 @@ tab-activate = Rûgera { $number } çalak bike
toggle-fullscreen = Dîmendera tijî biguhêrîne toggle-fullscreen = Dîmendera tijî biguhêrîne
type-to-search = Ji bo lêgerînê binivîse... type-to-search = Ji bo lêgerînê binivîse...
copy-link = Girêdanê jê bigire copy-link = Girêdanê jê bigire
show-pane-borders = Sînorên kilîtdankê nîşan bide

View file

@ -1,6 +1,6 @@
name = Pavadinimas name = Pavadinimas
delete = Ištrinti delete = Ištrinti
cosmic-terminal = COSMIC Terminalas cosmic-terminal = COSMIC Terminal
new-terminal = Naujas terminalas new-terminal = Naujas terminalas
repository = Saugykla repository = Saugykla
support = Palaikymas support = Palaikymas
@ -19,7 +19,7 @@ make-default = Padaryti numatytu
working-directory = Darbinis katalogas working-directory = Darbinis katalogas
hold = Laikyti hold = Laikyti
remain-open = Palikti atidarytą išsijungus vaikiniam procesui. remain-open = Palikti atidarytą išsijungus vaikiniam procesui.
settings = Nuostatai settings = Nuostatos
appearance = Išvaizda appearance = Išvaizda
theme = Stilius theme = Stilius
match-desktop = Pagal darbalaukio temą match-desktop = Pagal darbalaukio temą
@ -47,7 +47,7 @@ new-window = Naujas langas
profile = Profilis profile = Profilis
menu-profiles = Profiliai... menu-profiles = Profiliai...
close-tab = Uždaryti skirtuką close-tab = Uždaryti skirtuką
quit = Išjungti quit = Išeiti
edit = Redaguoti edit = Redaguoti
copy = Kopijuoti copy = Kopijuoti
paste = Įdėti paste = Įdėti
@ -65,7 +65,7 @@ split-horizontal = Skaidyti horizontaliai
split-vertical = Skaidyti vertikaliai split-vertical = Skaidyti vertikaliai
pane-toggle-maximize = Perjungti maksimalų padidinimą pane-toggle-maximize = Perjungti maksimalų padidinimą
menu-color-schemes = Spalvų schemos... menu-color-schemes = Spalvų schemos...
menu-settings = Nuostatai... menu-settings = Nuostatos...
menu-about = Apie COSMIC Terminal... menu-about = Apie COSMIC Terminal...
menu-password-manager = Slaptažodžiai... menu-password-manager = Slaptažodžiai...
passwords-title = Slaptažodžiai passwords-title = Slaptažodžiai

View file

@ -1,7 +1 @@
settings = Paramètres settings = Paramètres
appearance = Aparéncia
theme = Tèma
match-desktop = Assortir al burèu
dark = Fosc
light = Clar
file = Fichièr

View file

@ -8,11 +8,11 @@ name = ਨਾਂ
settings = ਸੈਟਿੰਗਾਂ settings = ਸੈਟਿੰਗਾਂ
appearance = ਦਿੱਖ appearance = ਦਿੱਖ
theme = ਥੀਮ theme = ਥੀਮ
match-desktop = ਡੈਸਕਟਾਪ ਨਾਲ ਮਿਲਾਓ match-desktop = ਡੈਸਕਟਾਪ ਨਾਲ ਮਿਲਦਾ
dark = ਗੂੜ੍ਹਾ dark = ਗੂੜ੍ਹਾ
light = ਫਿੱਕਾ light = ਹਲਕਾ
default-zoom-step = ਜ਼ੂਮ ਸਟੈਪ default-zoom-step = ਜ਼ੂਮ ਸਟੈਪ
quit = ਸਮਾਪਤ quit = ਬਾਹਰ
edit = ਸੋਧੋ edit = ਸੋਧੋ
copy = ਕਾਪੀ ਕਰੋ copy = ਕਾਪੀ ਕਰੋ
paste = ਚੇਪੋ paste = ਚੇਪੋ

View file

@ -88,7 +88,7 @@ new-window = Nowe okno
profile = Profil profile = Profil
menu-profiles = Profile... menu-profiles = Profile...
close-tab = Zamknij kartę close-tab = Zamknij kartę
quit = Zakończ quit = Zamknij
## Edit ## Edit
@ -149,4 +149,3 @@ focus-pane-up = Aktywuj panel wyżej
copy-link = Skopiuj Odnośnik copy-link = Skopiuj Odnośnik
tab-new-inherit-working-directory = Nowe karty i okna użyją obecnego katalogu tab-new-inherit-working-directory = Nowe karty i okna użyją obecnego katalogu
tab-new-inherit-working-directory-description = Otwieraj nowe karty i okna w katalogu roboczym aktywnej karty tab-new-inherit-working-directory-description = Otwieraj nowe karty i okna w katalogu roboczym aktywnej karty
show-pane-borders = Pokaż obramowania paneli

View file

@ -88,7 +88,7 @@ new-window = Nova janela
profile = Perfil profile = Perfil
menu-profiles = Perfis... menu-profiles = Perfis...
close-tab = Fechar aba close-tab = Fechar aba
quit = Encerrar quit = Sair
## Edit ## Edit
@ -149,4 +149,3 @@ type-to-search = Digite para pesquisar...
copy-link = Copiar link copy-link = Copiar link
tab-new-inherit-working-directory = Novas abas e janelas usam o diretório atual tab-new-inherit-working-directory = Novas abas e janelas usam o diretório atual
tab-new-inherit-working-directory-description = Abrir novas abas e janelas no diretório de trabalho da aba ativa tab-new-inherit-working-directory-description = Abrir novas abas e janelas no diretório de trabalho da aba ativa
show-pane-borders = Mostrar bordas do quadro

View file

@ -1,5 +1,5 @@
cosmic-terminal = Терминал cosmic-terminal = Терминал
comment = Эмулятор терминала для среды COSMIC comment = Эмулятор терминала для рабочей среды COSMIC
keywords = Команда;Оболочка;Терминал;Консоль; keywords = Команда;Оболочка;Терминал;Консоль;
new-terminal = Новый терминал new-terminal = Новый терминал
@ -86,7 +86,7 @@ new-window = Новое окно
profile = Профиль profile = Профиль
menu-profiles = Профили... menu-profiles = Профили...
close-tab = Закрыть вкладку close-tab = Закрыть вкладку
quit = Завершить quit = Выйти
## Edit ## Edit
@ -141,6 +141,5 @@ tab-activate = Активировать вкладку { $number }
toggle-fullscreen = Вкл./выкл. полноэкранный режим toggle-fullscreen = Вкл./выкл. полноэкранный режим
type-to-search = Введите для поиска... type-to-search = Введите для поиска...
copy-link = Копировать ссылку copy-link = Копировать ссылку
tab-new-inherit-working-directory = Текущий каталог в новых вкладках и окнах tab-new-inherit-working-directory = В новых вкладках исп. текущий каталог
tab-new-inherit-working-directory-description = Открывать новые вкладки и окна в рабочем каталоге активной вкладки tab-new-inherit-working-directory-description = Открывать новые вкладки в рабочем каталоге активной вкладки
show-pane-borders = Показывать границы панелей

View file

@ -1,2 +0,0 @@
cancel = ᱵᱟᱹᱛᱤᱞ
name = ᱧᱩᱛᱩᱢ

View file

@ -113,7 +113,7 @@ split-vertical = Dela vertikalt
pane-toggle-maximize = Växla maximerad pane-toggle-maximize = Växla maximerad
clear-scrollback = Töm tillbakarullning clear-scrollback = Töm tillbakarullning
menu-color-schemes = Färgscheman… menu-color-schemes = Färgscheman…
menu-settings = Inställningar... menu-settings = Inställningar…
menu-about = Om COSMIC Terminal… menu-about = Om COSMIC Terminal…
repository = Källkod repository = Källkod
support = Support support = Support
@ -153,4 +153,3 @@ shortcut-group-zoom = Zooma
copy-link = Kopiera länk copy-link = Kopiera länk
tab-new-inherit-working-directory-description = Öppna nya flikar och fönster i den aktiva flikens arbetskatalog tab-new-inherit-working-directory-description = Öppna nya flikar och fönster i den aktiva flikens arbetskatalog
tab-new-inherit-working-directory = Nya flikar och fönster använder aktuell katalog tab-new-inherit-working-directory = Nya flikar och fönster använder aktuell katalog
show-pane-borders = Visa ram runt fält

View file

@ -84,7 +84,7 @@ new-window = Нове вікно
profile = Профіль profile = Профіль
menu-profiles = Профілі... menu-profiles = Профілі...
close-tab = Закрити вкладку close-tab = Закрити вкладку
quit = Завершити quit = Вийти
## Edit ## Edit
@ -147,6 +147,5 @@ focus-pane-up = Фокус на верхню панель
comment = Емулятор терміналу для середовища COSMIC comment = Емулятор терміналу для середовища COSMIC
keywords = Команда;Оболонка;Термінал;Інтерфейс;CLI; keywords = Команда;Оболонка;Термінал;Інтерфейс;CLI;
copy-link = Копіювати ланку copy-link = Копіювати ланку
tab-new-inherit-working-directory = Нові вкладки та вікна відкривати в поточному каталозі tab-new-inherit-working-directory = У нових вкладках використовується поточний каталог
tab-new-inherit-working-directory-description = Відкривати нові вкладки та вікна в робочому каталозі активної вкладки tab-new-inherit-working-directory-description = Відкривати нові вкладки в робочому каталозі активної вкладки
show-pane-borders = Показувати межі панелей

View file

@ -149,4 +149,3 @@ keywords = 指令;外壳;终端;命令行界面;
copy-link = 复制链接 copy-link = 复制链接
tab-new-inherit-working-directory = 新标签和窗口使用当前目录 tab-new-inherit-working-directory = 新标签和窗口使用当前目录
tab-new-inherit-working-directory-description = 在活动标签的工作目录中打开新标签和窗口 tab-new-inherit-working-directory-description = 在活动标签的工作目录中打开新标签和窗口
show-pane-borders = 显示窗格边框

View file

@ -24,7 +24,7 @@ command-line = 命令列
tab-title = 分頁標題 tab-title = 分頁標題
tab-title-description = 覆寫預設分頁標題 tab-title-description = 覆寫預設分頁標題
add-profile = 新增設定檔 add-profile = 新增設定檔
new-profile = 新增設定檔 new-profile = 新建設定檔
make-default = 設為預設值 make-default = 設為預設值
working-directory = 工作目錄 working-directory = 工作目錄
hold = 保留 hold = 保留
@ -79,12 +79,12 @@ find-next = 下一個
## File ## File
file = 檔案 file = 檔案
new-tab = 新增分頁 new-tab = 新建分頁
new-window = 新增視窗 new-window = 新建視窗
profile = 設定檔案 profile = 設定檔案
menu-profiles = 設定檔案... menu-profiles = 設定檔案...
close-tab = 關閉分頁 close-tab = 關閉分頁
quit = 結束 quit = 退出
## Edit ## Edit
@ -109,11 +109,11 @@ menu-color-schemes = 配色方案...
menu-settings = 設定... menu-settings = 設定...
menu-about = 關於 COSMIC 終端機… menu-about = 關於 COSMIC 終端機…
cancel = 取消 cancel = 取消
repository = 軟體庫 repository = 軟體庫源
support = 支援 support = 支援
keyboard-shortcuts = 鍵盤快速鍵 keyboard-shortcuts = 鍵盤快速鍵
keywords = 指令;殼層;終端;指令行介面CLI; keywords = 指令;殼層;終端;指令行介面CLI;
add-another-keybinding = 新增另一個鍵盤快速鍵 add-another-keybinding = 添加另一個按鍵組合
close-window = 關閉視窗 close-window = 關閉視窗
copy-or-sigint = 複製或 SIGINT copy-or-sigint = 複製或 SIGINT
disable = 停用 disable = 停用
@ -136,7 +136,7 @@ focus-pane-up = 聚焦上方窗格
open-link = 開啟連結 open-link = 開啟連結
menu-password-manager = 密碼… menu-password-manager = 密碼…
passwords-title = 密碼 passwords-title = 密碼
add-password = 新增密碼 add-password = 添增密碼
password-input = 密碼 password-input = 密碼
password-input-description = 描述 password-input-description = 描述
shortcut-replace-title = 取代快速鍵? shortcut-replace-title = 取代快速鍵?
@ -149,4 +149,3 @@ clear-scrollback = 清除捲動回朔
comment = COSMIC 桌面終端機模擬器 comment = COSMIC 桌面終端機模擬器
tab-new-inherit-working-directory = 新分頁和視窗使用目前目錄 tab-new-inherit-working-directory = 新分頁和視窗使用目前目錄
tab-new-inherit-working-directory-description = 在作用中分頁的工作目錄開啟新分頁和視窗 tab-new-inherit-working-directory-description = 在作用中分頁的工作目錄開啟新分頁和視窗
show-pane-borders = 顯示窗格邊框

View file

@ -231,7 +231,6 @@ pub struct Config {
pub opacity: u8, pub opacity: u8,
pub profiles: BTreeMap<ProfileId, Profile>, pub profiles: BTreeMap<ProfileId, Profile>,
pub show_headerbar: bool, pub show_headerbar: bool,
pub show_pane_borders: bool,
pub use_bright_bold: bool, pub use_bright_bold: bool,
pub syntax_theme_dark: String, pub syntax_theme_dark: String,
pub syntax_theme_light: String, pub syntax_theme_light: String,
@ -261,7 +260,6 @@ impl Default for Config {
opacity: 100, opacity: 100,
profiles: BTreeMap::new(), profiles: BTreeMap::new(),
show_headerbar: true, show_headerbar: true,
show_pane_borders: false,
syntax_theme_dark: COSMIC_THEME_DARK.to_string(), syntax_theme_dark: COSMIC_THEME_DARK.to_string(),
syntax_theme_light: COSMIC_THEME_LIGHT.to_string(), syntax_theme_light: COSMIC_THEME_LIGHT.to_string(),
use_bright_bold: false, use_bright_bold: false,

View file

@ -571,8 +571,6 @@ pub enum Message {
ShowAdvancedFontSettings(bool), ShowAdvancedFontSettings(bool),
ShowHeaderBar(bool), ShowHeaderBar(bool),
SshConnect(usize), SshConnect(usize),
ShowPaneBorders(bool),
SyntaxTheme(ColorSchemeKind, usize), SyntaxTheme(ColorSchemeKind, usize),
SystemThemeChange, SystemThemeChange,
TabNewInheritWorkingDirectory(bool), TabNewInheritWorkingDirectory(bool),
@ -835,7 +833,7 @@ impl App {
// Update terminal window background color // Update terminal window background color
{ {
let color = Color::from(theme.cosmic().background(theme.transparent).base); let color = Color::from(theme.cosmic().background(false).base);
let bytes = color.into_rgba8(); let bytes = color.into_rgba8();
let data = u32::from(bytes[2]) let data = u32::from(bytes[2])
| (u32::from(bytes[1]) << 8) | (u32::from(bytes[1]) << 8)
@ -1485,7 +1483,6 @@ impl App {
} }
fn settings(&self) -> Element<'_, Message> { fn settings(&self) -> Element<'_, Message> {
let t = self.core().system_theme();
let app_theme_selected = match self.config.app_theme { let app_theme_selected = match self.config.app_theme {
AppTheme::Dark => 1, AppTheme::Dark => 1,
AppTheme::Light => 2, AppTheme::Light => 2,
@ -1569,13 +1566,13 @@ impl App {
}), }),
), ),
) )
.add_maybe((!t.transparent).then(|| { .add(
widget::settings::item::builder(fl!("opacity")) widget::settings::item::builder(fl!("opacity"))
.description(format!("{}%", self.config.opacity)) .description(format!("{}%", self.config.opacity))
.control(widget::slider(0..=100, self.config.opacity, |opacity| { .control(widget::slider(0..=100, self.config.opacity, |opacity| {
Message::Opacity(opacity) Message::Opacity(opacity)
})) })),
})); );
let mut font_section = widget::settings::section() let mut font_section = widget::settings::section()
.title(fl!("font")) .title(fl!("font"))
@ -1661,16 +1658,10 @@ impl App {
font_section = font_section.add(advanced_font_settings()); font_section = font_section.add(advanced_font_settings());
} }
let splits_section = widget::settings::section() let splits_section = widget::settings::section().title(fl!("splits")).add(
.title(fl!("splits")) widget::settings::item::builder(fl!("focus-follow-mouse"))
.add( .toggler(self.config.focus_follow_mouse, Message::FocusFollowMouse),
widget::settings::item::builder(fl!("focus-follow-mouse")) );
.toggler(self.config.focus_follow_mouse, Message::FocusFollowMouse),
)
.add(
widget::settings::item::builder(fl!("show-pane-borders"))
.toggler(self.config.show_pane_borders, Message::ShowPaneBorders),
);
let advanced_section = widget::settings::section() let advanced_section = widget::settings::section()
.title(fl!("advanced")) .title(fl!("advanced"))
@ -3054,8 +3045,7 @@ impl Application for App {
} }
Message::PaneClicked(pane) => { Message::PaneClicked(pane) => {
self.pane_model.set_focus(pane); self.pane_model.set_focus(pane);
let title_task = self.update_title(Some(pane)); return self.update_title(Some(pane));
return Task::batch([self.update_focus(), title_task]);
} }
Message::PaneSplit(axis) => { Message::PaneSplit(axis) => {
let result = self.pane_model.panes.split( let result = self.pane_model.panes.split(
@ -3305,11 +3295,6 @@ impl Application for App {
tab_new_inherit_working_directory tab_new_inherit_working_directory
); );
} }
Message::ShowPaneBorders(show_pane_borders) => {
if show_pane_borders != self.config.show_pane_borders {
config_set!(show_pane_borders, show_pane_borders);
}
}
Message::UseBrightBold(use_bright_bold) => { Message::UseBrightBold(use_bright_bold) => {
if use_bright_bold != self.config.use_bright_bold { if use_bright_bold != self.config.use_bright_bold {
config_set!(use_bright_bold, use_bright_bold); config_set!(use_bright_bold, use_bright_bold);
@ -3518,7 +3503,7 @@ impl Application for App {
tasks.push(cosmic::task::message(Message::Surface( tasks.push(cosmic::task::message(Message::Surface(
cosmic::surface::action::app_popup( cosmic::surface::action::app_popup(
|_| Default::default(), |_: &Self| cosmic::surface::action::LiveSettings::default(),
move |_app: &mut Self| { move |_app: &mut Self| {
use cosmic::cctk::wayland_protocols::xdg::shell::client::xdg_positioner::{Anchor, Gravity}; use cosmic::cctk::wayland_protocols::xdg::shell::client::xdg_positioner::{Anchor, Gravity};
use cosmic::iced::runtime::platform_specific::wayland::popup::{SctkPopupSettings, SctkPositioner}; use cosmic::iced::runtime::platform_specific::wayland::popup::{SctkPopupSettings, SctkPositioner};
@ -4146,23 +4131,8 @@ impl Application for App {
/// Creates a view after each update. /// Creates a view after each update.
fn view(&self) -> Element<'_, Self::Message> { fn view(&self) -> Element<'_, Self::Message> {
let t = self.core().system_theme(); let cosmic_theme::Spacing { space_xxs, .. } = self.core().system_theme().cosmic().spacing;
let cosmic = t.cosmic();
let cosmic_theme::Spacing {
space_xxxs,
space_xxs,
..
} = cosmic.spacing;
let show_pane_borders =
self.config.show_pane_borders && self.pane_model.panes.panes.len() > 1;
let pane_corner_radius: iced::border::Radius = {
let pad = f32::from(space_xxxs) / 2.0;
cosmic
.radius_s()
.map(|r| if r > 0.0 { r + pad } else { 0.0 })
.into()
};
let pane_grid = PaneGrid::new(&self.pane_model.panes, |pane, tab_model, _is_maximized| { let pane_grid = PaneGrid::new(&self.pane_model.panes, |pane, tab_model, _is_maximized| {
let mut tab_column = widget::column::with_capacity(1); let mut tab_column = widget::column::with_capacity(1);
@ -4211,16 +4181,10 @@ impl Application for App {
.on_open_hyperlink(Some(Box::new(Message::LaunchUrl))) .on_open_hyperlink(Some(Box::new(Message::LaunchUrl)))
.on_window_focused(|| Message::WindowFocused) .on_window_focused(|| Message::WindowFocused)
.on_window_unfocused(|| Message::WindowUnfocused) .on_window_unfocused(|| Message::WindowUnfocused)
.opacity(if t.transparent { .opacity(self.config.opacity_ratio())
t.cosmic().alpha_map.blurred_alpha(t.cosmic().frosted)
} else {
self.config.opacity_ratio()
})
.padding(space_xxs) .padding(space_xxs)
.sharp_corners(self.core.window.sharp_corners) .sharp_corners(self.core.window.sharp_corners)
.show_headerbar(self.config.show_headerbar) .show_headerbar(self.config.show_headerbar);
.pane_border_radius(show_pane_borders.then_some(pane_corner_radius))
.border(pane_border(cosmic, t.transparent, show_pane_borders));
if self.config.focus_follow_mouse { if self.config.focus_follow_mouse {
terminal_box = terminal_box.on_mouse_enter(move || Message::MouseEnter(pane)); terminal_box = terminal_box.on_mouse_enter(move || Message::MouseEnter(pane));
@ -4363,14 +4327,7 @@ impl Application for App {
.on_drag(Message::PaneDragged); .on_drag(Message::PaneDragged);
//TODO: apply window border radius xs at bottom of window //TODO: apply window border radius xs at bottom of window
if show_pane_borders { pane_grid.into()
// Each pane draws its own border stroke. Painting a filled
// container behind the grid instead would stack its alpha with the
// translucent panes and wash out the blurred backdrop.
pane_grid.spacing(space_xxxs).into()
} else {
pane_grid.into()
}
} }
fn system_theme_update( fn system_theme_update(
@ -4458,80 +4415,3 @@ fn is_wayland() -> bool {
Some(cosmic::app::cosmic::WindowingSystem::Wayland) Some(cosmic::app::cosmic::WindowingSystem::Wayland)
) )
} }
/// Divider color painted behind the pane grid to form pane borders.
///
/// When blur is active the transparent container must be used, otherwise the
/// fill is opaque and hides the blurred desktop behind the window.
fn pane_divider_color(
cosmic: &cosmic_theme::Theme,
transparent: bool,
) -> cosmic::cosmic_theme::palette::Srgba {
cosmic.background(transparent).divider
}
/// Border stroke drawn around each terminal pane.
///
/// The stroke sits on the pane edge rather than behind it, so the pane
/// interior keeps its own opacity and the blurred desktop stays visible.
fn pane_border(cosmic: &cosmic_theme::Theme, transparent: bool, show: bool) -> iced::Border {
if show {
iced::Border {
color: Color::from(pane_divider_color(cosmic, transparent)),
width: 1.0,
..Default::default()
}
} else {
iced::Border::default()
}
}
#[cfg(test)]
mod tests {
use super::{pane_border, pane_divider_color};
#[test]
fn pane_border_is_drawn_only_when_enabled() {
// With borders off the pane must render exactly as before, so the
// stroke has to be zero width rather than a transparent hairline.
let theme = cosmic::cosmic_theme::Theme::dark_default();
assert_eq!(pane_border(&theme, true, false).width, 0.0);
assert!(pane_border(&theme, true, true).width > 0.0);
}
#[test]
fn pane_border_uses_the_divider_color() {
// The stroke is the only thing marking the pane edge now that nothing
// is painted behind the grid, so it must match the theme divider.
let theme = cosmic::cosmic_theme::Theme::dark_default();
let expected = cosmic::iced::Color::from(pane_divider_color(&theme, true));
assert_eq!(pane_border(&theme, true, true).color, expected);
}
#[test]
fn pane_divider_is_translucent_when_blur_is_active() {
// The divider is painted as a full-window container behind the pane
// grid. With blur active it must keep alpha < 1 so the frosted
// backdrop still shows through instead of a flat opaque fill.
let theme = cosmic::cosmic_theme::Theme::dark_default();
let color = pane_divider_color(&theme, true);
assert!(
color.alpha < 1.0,
"expected translucent divider, got alpha {}",
color.alpha
);
}
#[test]
fn pane_divider_is_opaque_without_blur() {
// Without blur there is nothing to show through, so the divider keeps
// the fully opaque background color.
let theme = cosmic::cosmic_theme::Theme::dark_default();
let color = pane_divider_color(&theme, false);
assert!(
(color.alpha - 1.0).abs() < f32::EPSILON,
"expected opaque divider, got alpha {}",
color.alpha
);
}
}

View file

@ -3,7 +3,7 @@
use cosmic::iced::Point; use cosmic::iced::Point;
use cosmic::widget::menu::key_bind::KeyBind; use cosmic::widget::menu::key_bind::KeyBind;
use cosmic::widget::menu::{Item as MenuItem, menu_button}; use cosmic::widget::menu::{Item as MenuItem, menu_button};
use cosmic::widget::space; use cosmic::widget::{Column, space};
use cosmic::{ use cosmic::{
Element, Element,
app::Core, app::Core,
@ -46,7 +46,7 @@ pub fn context_menu<'a>(
String::new() String::new()
}; };
fn key_style(theme: &cosmic::Theme) -> TextStyle { fn key_style(theme: &cosmic::Theme) -> TextStyle {
let mut color = theme.cosmic().background(theme.transparent).component.on; let mut color = theme.cosmic().background(false).component.on;
color.alpha *= 0.75; color.alpha *= 0.75;
TextStyle { TextStyle {
color: Some(color.into()), color: Some(color.into()),
@ -143,13 +143,13 @@ pub fn context_menu<'a>(
); );
rows.insert(2, Element::from(divider::horizontal::light())); rows.insert(2, Element::from(divider::horizontal::light()));
} }
let content = widget::menu::menu_column::MenuColumn::with_children(rows); let content = Column::with_children(rows);
widget::container(content) widget::container(content)
.padding(1) .padding(1)
//TODO: move style to libcosmic //TODO: move style to libcosmic
.style(|theme| { .style(|theme| {
let cosmic = theme.cosmic(); let cosmic = theme.cosmic();
let component = &cosmic.background(theme.transparent).component; let component = &cosmic.background(false).component;
widget::container::Style { widget::container::Style {
icon_color: Some(component.on.into()), icon_color: Some(component.on.into()),
text_color: Some(component.on.into()), text_color: Some(component.on.into()),
@ -174,8 +174,7 @@ pub fn color_scheme_menu<'a>(
let menu_item = let menu_item =
|label, message| menu_button(vec![widget::text(label).into()]).on_press(message); |label, message| menu_button(vec![widget::text(label).into()]).on_press(message);
let mut column = let mut column = widget::column::with_capacity(if id_opt.is_some() { 3 } else { 1 });
widget::menu::menu_column::MenuColumn::with_capacity(if id_opt.is_some() { 3 } else { 1 });
if let Some(id) = id_opt { if let Some(id) = id_opt {
column = column.push(menu_item( column = column.push(menu_item(
fl!("rename"), fl!("rename"),
@ -198,7 +197,7 @@ pub fn color_scheme_menu<'a>(
//TODO: move style to libcosmic //TODO: move style to libcosmic
.style(|theme| { .style(|theme| {
let cosmic = theme.cosmic(); let cosmic = theme.cosmic();
let component = &cosmic.background(theme.transparent).component; let component = &cosmic.background(false).component;
widget::container::Style { widget::container::Style {
icon_color: Some(component.on.into()), icon_color: Some(component.on.into()),
text_color: Some(component.on.into()), text_color: Some(component.on.into()),

View file

@ -207,12 +207,13 @@ impl TerminalPaneGrid {
} }
} }
pub fn unfocus_all_terminals(&self) { pub fn unfocus_all_terminals(&self) {
for tab_model in self.panes.panes.values() { for (_pane, tab_model) in self.panes.panes.iter() {
let entity = tab_model.active(); for entity in tab_model.iter() {
if let Some(terminal) = tab_model.data::<Mutex<Terminal>>(entity) { if let Some(terminal) = tab_model.data::<Mutex<Terminal>>(entity) {
let mut terminal = terminal.lock().unwrap(); let mut terminal = terminal.lock().unwrap();
terminal.set_focused(false); terminal.set_focused(false);
terminal.update(); terminal.update();
}
} }
} }
} }

View file

@ -12,7 +12,6 @@ use cosmic::{
cosmic_theme::palette::{WithAlpha, blend::Compose}, cosmic_theme::palette::{WithAlpha, blend::Compose},
iced::core::{ iced::core::{
Border, Shell, Border, Shell,
border::Radius,
clipboard::Clipboard, clipboard::Clipboard,
input_method::{self, InputMethod}, input_method::{self, InputMethod},
keyboard::key::Named, keyboard::key::Named,
@ -110,7 +109,6 @@ pub struct TerminalBox<'a, Message> {
border: Border, border: Border,
padding: Padding, padding: Padding,
show_headerbar: bool, show_headerbar: bool,
pane_border_radius: Option<Radius>,
click_timing: Duration, click_timing: Duration,
context_menu: Option<Point>, context_menu: Option<Point>,
on_context_menu: Option<Box<dyn Fn(Option<MenuState>) -> Message + 'a>>, on_context_menu: Option<Box<dyn Fn(Option<MenuState>) -> Message + 'a>>,
@ -137,7 +135,6 @@ where
border: Border::default(), border: Border::default(),
padding: Padding::new(0.0), padding: Padding::new(0.0),
show_headerbar: true, show_headerbar: true,
pane_border_radius: None,
click_timing: Duration::from_millis(500), click_timing: Duration::from_millis(500),
context_menu: None, context_menu: None,
on_context_menu: None, on_context_menu: None,
@ -174,11 +171,6 @@ where
self self
} }
pub fn pane_border_radius(mut self, pane_border_radius: Option<Radius>) -> Self {
self.pane_border_radius = pane_border_radius;
self
}
pub fn click_timing(mut self, click_timing: Duration) -> Self { pub fn click_timing(mut self, click_timing: Duration) -> Self {
self.click_timing = click_timing; self.click_timing = click_timing;
self self
@ -417,22 +409,13 @@ where
let state = tree.state.downcast_ref::<State>(); let state = tree.state.downcast_ref::<State>();
let cosmic_theme = theme.cosmic(); let cosmic_theme = theme.cosmic();
let corner_radius = if let Some(r) = self.pane_border_radius { // matches the corners to the window border
r.into() let corner_radius = if self.sharp_corners {
} else if self.sharp_corners {
// matches the corners to the window border
cosmic_theme.radius_0() cosmic_theme.radius_0()
} else { } else {
cosmic_theme cosmic_theme.radius_s()
.radius_s() }
.map(|x| if x < 4.0 { x - 1.0 } else { x + 3.0 }) .map(|x| if x < 4.0 { x - 1.0 } else { x + 3.0 });
};
// When there's a headerbar and no pane border, only round the bottom corners
let border_radius: Radius = if self.show_headerbar && self.pane_border_radius.is_none() {
[0.0, 0.0, corner_radius[2], corner_radius[3]].into()
} else {
corner_radius.into()
};
let scrollbar_w = f32::from(cosmic_theme.spacing.space_xxs); let scrollbar_w = f32::from(cosmic_theme.spacing.space_xxs);
let view_position = layout.position() + [self.padding.left, self.padding.top].into(); let view_position = layout.position() + [self.padding.left, self.padding.top].into();
@ -446,11 +429,16 @@ where
// Pane too small for content, but still fill background // Pane too small for content, but still fill background
let terminal = self.terminal.lock().unwrap(); let terminal = self.terminal.lock().unwrap();
let meta = &terminal.metadata_set[terminal.default_attrs().metadata]; let meta = &terminal.metadata_set[terminal.default_attrs().metadata];
let background_color = shade(meta.bg, state.is_focused && !self.disabled);
renderer.fill_quad( renderer.fill_quad(
Quad { Quad {
bounds: layout.bounds(), bounds: layout.bounds(),
border: Border { border: Border {
radius: border_radius, radius: if self.show_headerbar {
[0.0, 0.0, corner_radius[2], corner_radius[3]].into()
} else {
corner_radius.into()
},
width: self.border.width, width: self.border.width,
color: self.border.color, color: self.border.color,
}, },
@ -458,12 +446,12 @@ where
..Default::default() ..Default::default()
}, },
Color::from_rgba( Color::from_rgba(
f32::from(meta.bg.r()) / 255.0, f32::from(background_color.r()) / 255.0,
f32::from(meta.bg.g()) / 255.0, f32::from(background_color.g()) / 255.0,
f32::from(meta.bg.b()) / 255.0, f32::from(background_color.b()) / 255.0,
match self.opacity { match self.opacity {
Some(opacity) => opacity, Some(opacity) => opacity,
None => f32::from(meta.bg.a()) / 255.0, None => f32::from(background_color.a()) / 255.0,
}, },
), ),
); );
@ -484,11 +472,17 @@ where
// Render default background // Render default background
{ {
let meta = &terminal.metadata_set[terminal.default_attrs().metadata]; let meta = &terminal.metadata_set[terminal.default_attrs().metadata];
let background_color = shade(meta.bg, state.is_focused && !self.disabled);
renderer.fill_quad( renderer.fill_quad(
Quad { Quad {
bounds: layout.bounds(), bounds: layout.bounds(),
border: Border { border: Border {
radius: border_radius, radius: if self.show_headerbar {
[0.0, 0.0, corner_radius[2], corner_radius[3]].into()
} else {
corner_radius.into()
},
width: self.border.width, width: self.border.width,
color: self.border.color, color: self.border.color,
}, },
@ -496,12 +490,12 @@ where
..Default::default() ..Default::default()
}, },
Color::from_rgba( Color::from_rgba(
f32::from(meta.bg.r()) / 255.0, f32::from(background_color.r()) / 255.0,
f32::from(meta.bg.g()) / 255.0, f32::from(background_color.g()) / 255.0,
f32::from(meta.bg.b()) / 255.0, f32::from(background_color.b()) / 255.0,
match self.opacity { match self.opacity {
Some(opacity) => opacity, Some(opacity) => opacity,
None => f32::from(meta.bg.a()) / 255.0, None => f32::from(background_color.a()) / 255.0,
}, },
), ),
); );
@ -543,7 +537,7 @@ where
fn fill<Renderer: renderer::Renderer>( fn fill<Renderer: renderer::Renderer>(
&mut self, &mut self,
renderer: &mut Renderer, renderer: &mut Renderer,
_is_focused: bool, is_focused: bool,
) { ) {
let cosmic_text_to_iced_color = |color: cosmic_text::Color| { let cosmic_text_to_iced_color = |color: cosmic_text::Color| {
Color::from_rgba( Color::from_rgba(
@ -557,7 +551,7 @@ where
macro_rules! mk_pos_offset { macro_rules! mk_pos_offset {
($x_offset:expr, $bottom_offset:expr) => { ($x_offset:expr, $bottom_offset:expr) => {
Vector::new( Vector::new(
(self.start_x + $x_offset).floor(), self.start_x + $x_offset,
self.line_top + self.line_height - $bottom_offset, self.line_top + self.line_height - $bottom_offset,
) )
}; };
@ -574,19 +568,16 @@ where
} }
}; };
($pos_offset:expr, $style_line_height:expr) => { ($pos_offset:expr, $style_line_height:expr) => {
mk_quad!( mk_quad!($pos_offset, $style_line_height, self.end_x - self.start_x)
$pos_offset,
$style_line_height,
(self.end_x - self.start_x).ceil()
)
}; };
} }
let metadata = &self.metadata_set[self.metadata]; let metadata = &self.metadata_set[self.metadata];
if metadata.bg != self.metadata_set[self.default_metadata].bg { if metadata.bg != self.metadata_set[self.default_metadata].bg {
let color = shade(metadata.bg, is_focused);
renderer.fill_quad( renderer.fill_quad(
mk_quad!(mk_pos_offset!(0.0, self.line_height), self.line_height), mk_quad!(mk_pos_offset!(0.0, self.line_height), self.line_height),
cosmic_text_to_iced_color(metadata.bg), cosmic_text_to_iced_color(color),
); );
} }
@ -765,7 +756,7 @@ where
let scrollbar_color: Color = if pressed { let scrollbar_color: Color = if pressed {
// pressed_state_color, 0.5 // pressed_state_color, 0.5
cosmic_theme cosmic_theme
.background(theme.transparent) .background(false)
.component .component
.pressed .pressed
.without_alpha() .without_alpha()
@ -775,7 +766,7 @@ where
} else if hover { } else if hover {
// hover_state_color, 0.2 // hover_state_color, 0.2
cosmic_theme cosmic_theme
.background(theme.transparent) .background(false)
.component .component
.hover .hover
.without_alpha() .without_alpha()
@ -1390,6 +1381,8 @@ where
} }
shell.capture_event(); shell.capture_event();
} }
} else {
state.is_focused = false;
} }
} }
Event::Mouse(MouseEvent::ButtonReleased(Button::Left)) => { Event::Mouse(MouseEvent::ButtonReleased(Button::Left)) => {
@ -1615,10 +1608,6 @@ where
} }
_ => (), _ => (),
} }
if terminal.needs_update {
shell.request_redraw();
}
} }
} }
@ -1765,6 +1754,20 @@ fn accumulate_wheel_lines(y: f32, accumulator: f32) -> (i32, f32) {
(lines, total - lines as f32) (lines, total - lines as f32)
} }
fn shade(color: cosmic_text::Color, is_focused: bool) -> cosmic_text::Color {
if is_focused {
color
} else {
let shade = 0.92;
cosmic_text::Color::rgba(
(f32::from(color.r()) * shade) as u8,
(f32::from(color.g()) * shade) as u8,
(f32::from(color.b()) * shade) as u8,
color.a(),
)
}
}
impl<'a, Message> From<TerminalBox<'a, Message>> for Element<'a, Message, cosmic::Theme, Renderer> impl<'a, Message> From<TerminalBox<'a, Message>> for Element<'a, Message, cosmic::Theme, Renderer>
where where
Message: Clone + 'a, Message: Clone + 'a,