Compare commits

...

59 commits

Author SHA1 Message Date
6b5a7ee8c8 feat: align terminal with local cosmic stack 2026-05-24 10:27:32 +02:00
Jeremy Soller
3d75c6ead7
Merge pull request #818 from pop-os/revert-806-mem-leak-hunting
Revert "bound the event channel to prevent unbounded RSS growth"
2026-05-18 10:30:21 -06: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
Levi Portenier
fa3699dc25
Merge pull request #779 from JellyWX/jellywx/fix-pageup-pagedown-binds
Fix binding to the pageup/pagedown keys
2026-05-14 17:00:39 -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
Jeremy Soller
0a7fd0c26b Epoch 1.0.13 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-05-12 13:07:11 -06:00
Jeremy Soller
5abd37ffc8
Merge pull request #790 from weblate/weblate-pop-os-cosmic-term
i18n: translation update from Hosted Weblate
2026-05-12 09:43:00 -06:00
Hosted Weblate
9cc7fe76ae
i18n: translation updates from weblate
Co-authored-by: Arve Eriksson <031299870@telia.com>
Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Co-authored-by: BoneNI <bounkirdni@gmail.com>
Co-authored-by: David Carvalho <david.snt.carvalho@gmail.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Fedorov Alexei <aleksejfedorov963@gmail.com>
Co-authored-by: Filippos Papadopoulos <filippospap.developer@gmail.com>
Co-authored-by: Geeson Wan <wang14240@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Isaac Subirana <isaacsubiranac@gmail.com>
Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Julien Brouillard <julienbrouillard1@gmail.com>
Co-authored-by: Konstantinos <kostas.lampropoulos94@gmail.com>
Co-authored-by: Nara Díaz Viñolas <nara.diaz.vinolas@gmail.com>
Co-authored-by: Tadas Misiūnas <tadujo@gmail.com>
Co-authored-by: VandaL <vandalhj@gmail.com>
Co-authored-by: Vilius Paliokas <viliuspaliokas@gmail.com>
Co-authored-by: Walter William Beckerleg Bruckman <spayk.99@protonmail.com>
Co-authored-by: Zahid Rizky Fakhri <zahidrizkyfakhri@gmail.com>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: lorduskordus <lorduskordus@gmail.com>
Co-authored-by: mcptminei <mcptminei@gmail.com>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Co-authored-by: Марко М. Костић <marko.m.kostic@gmail.com>
Co-authored-by: 김유빈 <k.sein1016@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/ar/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/ca/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/cs/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/de/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/el/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/fi/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/fr/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/hu/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/id/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/kk/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/ko/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/lt/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/pl/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/ru/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/sr/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/sv/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/uk/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/zh_Hant/
Translation: Pop OS/COSMIC Term
2026-05-12 13:11:34 +02: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
faa61d1692
Merge pull request #804 from pop-os/epoch-update
Epoch 1.0.12 version update
2026-05-05 14:10:29 -06:00
Jeremy Soller
0822e213af Epoch 1.0.12 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-05-05 11:44:27 -06:00
Levi Portenier
b76a974cfb
Merge pull request #755 from nicolasdanelon/new-tab-current-dir-with-config
feat: new tab on current dir with config
2026-04-28 11:40:08 -06:00
Levi Portenier
f5e21f2c98
Merge branch 'master' into new-tab-current-dir-with-config 2026-04-27 16:15:19 -06:00
Jeremy Soller
5879084287
Merge pull request #795 from obeme-qq/fix-zoom-bug
fix: change zoom reset scrope to active tab
2026-04-27 15:58:43 -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
Jeremy Soller
18f5f30673 Epoch 1.0.11 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-04-21 14:21:35 -06:00
Levi Portenier
c930689b9a
Merge pull request #788 from kenz-gelsoft/fix_issue787
fix: Fix find panel of cosmic-term
2026-04-15 12:28:03 -06: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
Jeremy Soller
95271e183d
Merge pull request #760 from weblate/weblate-pop-os-cosmic-term
i18n: translation update from Hosted Weblate
2026-04-14 09:52:30 -06:00
Jeremy Soller
aa0785a744
Merge pull request #782 from chrisglass/fix-clippy
Fix clippy warnings
2026-04-13 13:17:37 -06:00
Hosted Weblate
f501935393
i18n: translation updates from weblate
Co-authored-by: Academion <m.holzhausen@tutamail.com>
Co-authored-by: Amadɣas <massiin@proton.me>
Co-authored-by: Asier Saratsua Garmendia <asier.sarasua@gmail.com>
Co-authored-by: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Geeson Wan <wang14240@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Jun Hwi Ku <siguning@gmail.com>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Co-authored-by: Thomas Worofsky <thomas.worofsky@gmail.com>
Co-authored-by: Tommi Nieminen <translator@legisign.org>
Co-authored-by: Walter William Beckerleg Bruckman <spayk.99@protonmail.com>
Co-authored-by: defaultUser822 <defaultuser822@users.noreply.hosted.weblate.org>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: lorduskordus <lorduskordus@gmail.com>
Co-authored-by: oddib <60390653+oddib@users.noreply.github.com>
Co-authored-by: taijuin Lee <taijuin@gmail.com>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Co-authored-by: 麋麓 BigELK176 <BigELK176@gmail.com>
Co-authored-by: 김유빈 <k.sein1016@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/ar/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/cs/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/de/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/fi/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/hu/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/kab/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/ko/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-term/zh_Hant/
Translation: Pop OS/COSMIC Term
2026-04-12 18:50:10 +02:00
Chris Glass
724415b450 Review fix: revert format step name change 2026-04-11 09:06:39 +02:00
Chris Glass
cadbde034b Bonus: run the tests if we are compiling for clippy 2026-04-10 19:33:32 +02:00
Chris Glass
6ba1ab9e44 Update the clippy github action to install deps
Unlike cargo format, clippy needs to actually build the project.
2026-04-10 19:10:56 +02: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
14ec8d6760 Add a github action checking for clippy 2026-04-10 18:42:34 +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
Jeremy Soller
936e0c0628
Merge pull request #757 from pop-os/epoch-update
Epoch 1.0.9 version update
2026-04-07 10:19:48 -06:00
Jeremy Soller
ceb390f5d4 Epoch 1.0.9 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-04-07 07:59:44 -06:00
Jeremy Soller
4bf8b83fec
Merge pull request #776 from hoj-jat/hojjat/update-cosmic-text
chore: updates for new cosmic-text
2026-04-07 07:58:50 -06:00
Hojjat
81c62faa05 chore: cargo fmt 2026-04-02 09:45:38 -06:00
Hojjat
fd99bb9b55 chore: updates for new cosmic-text 2026-04-01 20:16:02 -06:00
Nicolas Danelon
285556e3dc
Merge branch 'master' into new-tab-current-dir-with-config 2026-03-10 15:57:22 +01:00
Nicolas Danelon
3eb79556f2 Adding translations to Spanish and Italian 2026-03-06 13:59:16 +01: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
39 changed files with 2052 additions and 1703 deletions

View file

@ -24,3 +24,43 @@ jobs:
- name: Check formatting
run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libxkbcommon-dev libfontconfig1-dev libfreetype6-dev libglvnd-dev libinput-dev libvulkan-dev libwayland-dev libx11-dev libxcursor-dev libxi-dev libxrandr-dev libasound2-dev libdbus-1-dev
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libxkbcommon-dev libfontconfig1-dev libfreetype6-dev libglvnd-dev libinput-dev libvulkan-dev libwayland-dev libx11-dev libxcursor-dev libxi-dev libxrandr-dev libasound2-dev libdbus-1-dev
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run Tests
run: cargo test --all-targets --all-features

1909
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-term"
version = "1.0.8"
version = "1.0.13"
authors = ["Jeremy Soller <jeremy@system76.com>"]
edition = "2024"
license = "GPL-3.0-only"
@ -36,18 +36,20 @@ thiserror = { version = "2.0", optional = true }
secstr = { version = "0.5", optional = true }
[dependencies.cosmic-files]
git = "https://github.com/pop-os/cosmic-files.git"
path = "../cosmic-files"
default-features = false
[dependencies.cosmic-text]
git = "https://github.com/pop-os/cosmic-text.git"
git = "https://forge.aditua.com/leyoda/cosmic-text.git"
branch = "local/pr-503"
features = ["monospace_fallback", "shape-run-cache"]
[dependencies.libcosmic]
git = "https://github.com/pop-os/libcosmic.git"
[dependencies.cosmic]
package = "libcosmic-yoda"
path = "../libcosmic"
default-features = false
#TODO: a11y feature crashes file chooser dialog
features = ["about", "multi-window", "tokio", "winit", "surface-message"]
features = ["about", "autosize", "multi-window", "tokio", "winit", "surface-message"]
[target.'cfg(unix)'.dependencies]
fork = "0.4"
@ -57,9 +59,9 @@ xdgen = "0.1"
[features]
default = ["dbus-config", "wgpu", "wayland", "password_manager"]
dbus-config = ["libcosmic/dbus-config"]
wgpu = ["libcosmic/wgpu", "cosmic-files/wgpu"]
wayland = ["libcosmic/wayland", "cosmic-files/wayland"]
dbus-config = ["cosmic/dbus-config"]
wgpu = ["cosmic/wgpu", "cosmic-files/wgpu"]
wayland = ["cosmic/wayland", "cosmic-files/wayland"]
password_manager = ["secret-service", "thiserror", "secstr"]
[profile.release-with-debug]
@ -67,7 +69,29 @@ inherits = "release"
debug = true
#[patch.'https://github.com/pop-os/libcosmic']
#libcosmic = { path = "../libcosmic" }
#cosmic-config = { path = "../libcosmic/cosmic-config" }
#cosmic-theme = { path = "../libcosmic/cosmic-theme" }
[patch.'https://github.com/pop-os/libcosmic']
cosmic-config = { path = "../libcosmic/cosmic-config" }
cosmic-theme = { path = "../libcosmic/cosmic-theme" }
iced = { path = "../libcosmic/iced" }
iced_accessibility = { path = "../libcosmic/iced/accessibility" }
iced_core = { path = "../libcosmic/iced/core" }
iced_futures = { path = "../libcosmic/iced/futures" }
iced_graphics = { path = "../libcosmic/iced/graphics" }
iced_renderer = { path = "../libcosmic/iced/renderer" }
iced_runtime = { path = "../libcosmic/iced/runtime" }
iced_tiny_skia = { path = "../libcosmic/iced/tiny_skia" }
iced_wgpu = { path = "../libcosmic/iced/wgpu" }
iced_widget = { path = "../libcosmic/iced/widget" }
iced_winit = { path = "../libcosmic/iced/winit" }
[patch.'https://github.com/pop-os/cosmic-protocols']
cosmic-protocols = { path = "../cosmic-protocols" }
cosmic-client-toolkit = { path = "../cosmic-protocols/client-toolkit" }
[patch.'https://github.com/pop-os/cosmic-text.git']
cosmic-text = { git = "https://forge.aditua.com/leyoda/cosmic-text.git", branch = "local/pr-503" }
[patch.'https://forge.aditua.com/leyoda/window_clipboard.git']
window_clipboard = { path = "../window_clipboard" }
dnd = { path = "../window_clipboard/dnd" }
mime = { path = "../window_clipboard/mime" }

24
debian/changelog vendored
View file

@ -1,3 +1,27 @@
cosmic-term (1.0.13) noble; urgency=medium
* Epoch 1.0.13 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 12 May 2026 09:39:57 -0600
cosmic-term (1.0.12) noble; urgency=medium
* Epoch 1.0.12 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 05 May 2026 10:25:04 -0600
cosmic-term (1.0.11) noble; urgency=medium
* Epoch 1.0.11 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 14 Apr 2026 11:11:05 -0600
cosmic-term (1.0.9) noble; urgency=medium
* Epoch 1.0.9 version update
-- Jeremy Soller <jeremy@system76.com> Mon, 06 Apr 2026 15:10:35 -0600
cosmic-term (1.0.8) noble; urgency=medium
* Epoch 1.0.8 version update

View file

@ -30,7 +30,7 @@ tab-title-description = تجاوز عنوان اللسان المبدئي
add-profile = أضف ملف تعريف
new-profile = ملف تعريف جديد
make-default = اجعله المبدئي
working-directory = مجلد العمل
working-directory = المجلَّد الحالي
hold = التعليق
remain-open = البقاء مفتوحًا بعد خروج العملية الفرعية.
@ -138,10 +138,12 @@ shortcut-group-clipboard = الحافظة
shortcut-group-other = أخرى
shortcut-group-tabs = ألسنة
shortcut-group-window = نافذة
shortcut-group-zoom = كبِّر
shortcut-group-zoom = تكبير
shortcut-replace-body = عُيِّن { $binding } بالفعل لـ { $existing }. أتريد استبداله بـ { $new_action }؟
shortcut-replace-title = استبدل الاختصار؟
tab-activate = نشّط لسان { $number }
toggle-fullscreen = بدّل ملء الشاشة
type-to-search = اكتب للبحث...
copy-link = انسخ الرابط
tab-new-inherit-working-directory = الألسنة الجديدة تستخدم المجلد الحالي
tab-new-inherit-working-directory-description = افتح ألسنة جديدة في مجلد العمل الخاص باللسان النشط

View file

@ -0,0 +1,3 @@
cancel = Cancel·lar
settings = Configuració
quit = Surt

View file

@ -41,7 +41,7 @@ default-font-stretch = Šířka písma
default-font-weight = Normální tloušťka písma
default-dim-font-weight = Tenká tloušťka písma
default-bold-font-weight = Tučná tloušťka písma
use-bright-bold = Zvýraznit tučný text
use-bright-bold = Světlejší tučný text
splits = Rozdělení
focus-follow-mouse = Zaměření psaní sleduje myš
advanced = Pokročilé
@ -86,7 +86,7 @@ disable = Zakázat
keyboard-shortcuts = Klávesové zkratky
menu-keyboard-shortcuts = Klávesové zkratky...
no-shortcuts = Žádné zkratky
password-manager = Manažer hesel
password-manager = Správce hesel
replace = Nahradit
reset-to-default = Obnovit výchozí
shortcut-group-clipboard = Schránka
@ -107,3 +107,5 @@ shortcut-replace-body = { $binding } je již přiřazena k „{ $existing }“.
shortcut-capture-hint = Stiskněte kombinaci kláves
paste-primary = Vložit primární
copy-link = Kopírovat odkaz
tab-new-inherit-working-directory = Nové karty používají aktuální adresář
tab-new-inherit-working-directory-description = Otevírat nové karty v pracovním adresáři aktivní karty

View file

@ -28,7 +28,7 @@ new-profile = Neues Profil
make-default = Als Standard festlegen
working-directory = Arbeitsverzeichnis
hold = Halten
remain-open = Nach Beendigung des Kindprozesses offen bleiben.
remain-open = Nach Beendigung des untergeordneten Prozesses geöffnet lassen.
## Einstellungen
@ -38,7 +38,7 @@ settings = Einstellungen
appearance = Aussehen
theme = Thema
match-desktop = An System anpassen
match-desktop = An Desktop anpassen
dark = Dunkel
light = Hell
syntax-dark = Dunkles Farbschema
@ -67,7 +67,7 @@ focus-follow-mouse = Tippfokus folgt Maus
advanced = Erweitert
show-headerbar = Kopfzeile anzeigen
show-header-description = Kopfzeile über das Rechtsklickmenü einblenden.
show-header-description = Kopfzeile über das Rechtsklick-Menü aufzeigen
# Suchen
find-placeholder = Suchen...
find-previous = Vorherigen suchen
@ -141,3 +141,11 @@ type-to-search = Zum Suchen tippen...
close-window = Fenster schließen
copy-or-sigint = Kopieren oder SIGINT
toggle-fullscreen = Vollbild umschalten
shortcut-group-zoom = Zoom
comment = Terminalemulator für den COSMIC Desktop
paste-primary = Primär einfügen
add-another-keybinding = Weitere Tastenbelegung hinzufügen
shortcut-replace-body = { $binding } ist bereits { $existing } zugeordnet. Durch { $new_action } ersetzen?
keywords = Befehl;Shell;Terminal;CLI;
tab-new-inherit-working-directory = Neue Tabs verwenden das aktuelle Verzeichnis
tab-new-inherit-working-directory-description = Neue Tabs im Arbeitsverzeichnis des aktiven Tabs öffnen

View file

@ -1,5 +1,5 @@
cosmic-terminal = Τερματικός COSMIC
new-terminal = Νέος Τερματικός
cosmic-terminal = Τερματικό COSMIC
new-terminal = Νέο τερματικό
# Context Pages
@ -14,7 +14,7 @@ rename = Μετονομασία
export = Εξαγωγή
delete = Διαγραφή
import = Εισαγωγή
import-errors = Προβλήματα Εισαγωγής
import-errors = Σφάλματα εισαγωγής
## Profiles
@ -22,16 +22,16 @@ profiles = Προφίλ
name = Όνομα
command-line = Γραμμή εντολών
tab-title = Τίτλος καρτέλας
tab-title-description = Μετονομασία του προεπιλεγμένου τίτλου καρτέλας
tab-title-description = Παράκαμψη του προεπιλεγμένου τίτλου καρτέλας
add-profile = Προσθήκη προφίλ
new-profile = Νέο προφίλ
make-default = Κάντο προεπιλογή
working-directory = Τρέχων κατάλογος
make-default = Ορισμός ως προεπιλογή
working-directory = Κατάλογος εργασίας
## alt: Παύση
hold = Κράτηση
remain-open = Παραμένει ανοιχτό μετά την έξοδο της θυγατρικής διεργασίας
hold = Διατήρηση
remain-open = Παραμένει ανοικτό μετά την έξοδο από τη θυγατρική διεργασία.
## Settings
@ -41,13 +41,13 @@ settings = Ρυθμίσεις
appearance = Εμφάνιση
theme = Θέμα
match-desktop = Αυτόματο
dark = Σκοτεινό
light = Φωτεινό
syntax-dark = Σκοτεινός χρωματικός συνδυασμός
syntax-light = Φωτεινός χρωματικός συνδυασμός
default-zoom-step = Βήματα μεγέθυνσης
opacity = Αδιαφάνια υπόβαθρου
match-desktop = Συμφωνία με την επιφάνεια εργασίας
dark = Σκουρόχρωμο
light = Ανοιχτόχρωμο
syntax-dark = Σκουρόχρωμος χρωματικός συνδυασμός
syntax-light = Ανοιχτόχρωμος χρωματικός συνδυασμός
default-zoom-step = Βήματα ζουμ
opacity = Αδιαφάνεια φόντου
### Font
@ -56,21 +56,21 @@ advanced-font-settings = Προηγμένες ρυθμίσεις γραμματ
default-font = Γραμματοσειρά
default-font-size = Μέγεθος γραμματοσειράς
default-font-stretch = Τέντωμα γραμματοσειράς
default-font-weight = Βάρος κανονικής γραμματοσειράς
default-dim-font-weight = Βάρος θαμπής γραμματοσειράς
default-bold-font-weight = Βάρος έντονης γραμματοσειράς
use-bright-bold = Κάνε το έντονο κείμενο πιο φωτεινό
default-font-weight = Πάχος κανονικής γραμματοσειράς
default-dim-font-weight = Πάχος θαμπής γραμματοσειράς
default-bold-font-weight = Πάχος έντονης γραμματοσειράς
use-bright-bold = Να εμφανίζεται πιο φωτεινό το κείμενο με έντονη γραφή
### Splits
splits = Διαχωρισμός
focus-follow-mouse = H πληκτρολόγηση να ακολουθεί το ποντίκι
splits = Διαχωρισμοί
focus-follow-mouse = Να ακολουθεί η εστίαση πληκτρολόγησης το ποντίκι
### Advanced
advanced = Προχωρημένα
advanced = Σύνθετες επιλογές
show-headerbar = Εμφάνιση κεφαλίδας
show-header-description = Εμφανήστε την κεφαλίδα από το μενού δεξιού κλικ.
show-header-description = Εμφάνιση της κεφαλίδας από το μενού δεξιού κλικ
# Find
find-placeholder = Εύρεση...
find-previous = Εύρεση προηγούμενου
@ -82,12 +82,12 @@ find-next = Εύρεση επόμενου
## File
file = Αρχείο
new-tab = Νέα ταμπέλα
new-tab = Νέα καρτέλα
new-window = Νέο παράθυρο
profile = Προφίλ
menu-profiles = Περισσότερα Προφίλ...
menu-profiles = Προφίλ...
close-tab = Κλείσιμο καρτέλας
quit = Τερματισμός
quit = Έξοδος
## Edit
@ -99,19 +99,56 @@ find = Εύρεση
## View
view = Εμφάνιση
zoom-in = Μεγέθυνση κείμενου
zoom-reset = Επαναφορά κειμένου
zoom-out = Σμίκρυνση κείμενου
next-tab = Επόμενη ταμπέλα
previous-tab = Προηγούμενη ταμπέλα
view = Προβολή
zoom-in = Μεγαλύτερο κείμενο
zoom-reset = Προεπιλεγμένο μέγεθος κειμένου
zoom-out = Μικρότερο κείμενο
next-tab = Επόμενη καρτέλα
previous-tab = Προηγούμενη καρτέλα
split-horizontal = Οριζόντιος διαχωρισμός
split-vertical = Κάθετος διαχωρισμός
pane-toggle-maximize = Εναλλαγή μεγέθυνσης
pane-toggle-maximize = Εναλλαγή μεγιστοποίησης
menu-color-schemes = Χρωματικοί συνδυασμοί...
menu-settings = Ρυθμίσεις...
menu-about = Σχετικά με τον τερματικό COSMIC...
menu-about = Σχετικά με το Τερματικό COSMIC...
repository = Αποθετήριο
support = Υποστήριξη
cancel = Ακύρωση
menu-keyboard-shortcuts = Συντομεύσεις πλήκτρων...
menu-keyboard-shortcuts = Συντομεύσεις πληκτρολογίου...
replace = Αντικατάσταση
passwords-title = Κωδικοί πρόσβασης
password-input = Κωδικός πρόσβασης
password-input-description = Περιγραφή
add-password = Προσθήκη κωδικού πρόσβασης
menu-password-manager = Κωδικοί πρόσβασης...
clear-scrollback = Απαλοιφή ιστορικού κύλισης
open-link = Άνοιγμα συνδέσμου
comment = Εξομοιωτής τερματικού για το περιβάλλον επιφάνειας εργασίας COSMIC
keyboard-shortcuts = Συντομεύσεις πληκτρολογίου
keywords = Εντολή;Κέλυφος;Τερματικό;Command;Shell;Terminal;CLI;
close-window = Κλείσιμο παραθύρου
disable = Απενεργοποίηση
shortcut-group-clipboard = Πρόχειρο
shortcut-group-tabs = Καρτέλες
shortcut-group-window = Παράθυρο
copy-link = Αντιγραφή συνδέσμου
type-to-search = Πληκτρολογήστε για αναζήτηση...
password-manager = Διαχείριση κωδικών πρόσβασης
shortcut-replace-title = Αντικατάσταση συντόμευσης;
tab-activate = Ενεργοποίηση καρτέλας { $number }
reset-to-default = Επαναφορά προεπιλογών
shortcut-capture-hint = Πατήστε τον συνδυασμό πλήκτρων
toggle-fullscreen = Εναλλαγή πλήρους οθόνης
add-another-keybinding = Προσθήκη άλλου συνδυασμού πλήκτρων
copy-or-sigint = Αντιγραφή ή SIGINT
focus-pane-down = Εστίαση στην κάτω περιοχή
focus-pane-left = Εστίαση στην αριστερή περιοχή
focus-pane-right = Εστίαση στη δεξιά περιοχή
focus-pane-up = Εστίαση στην πάνω περιοχή
no-shortcuts = Δεν υπάρχουν συντομεύσεις
paste-primary = Πρωτεύουσα επικόλληση
shortcut-group-other = Άλλες
shortcut-group-zoom = Ζουμ
shortcut-replace-body = Ο συνδυασμός { $binding } έχει ήδη αντιστοιχιστεί στην ενέργεια «{ $existing }». Θέλετε να αντικατασταθεί με την ενέργεια «{ $new_action }»;
tab-new-inherit-working-directory = Οι νέες καρτέλες χρησιμοποιούν τον τρέχοντα κατάλογο
tab-new-inherit-working-directory-description = Άνοιγμα νέων καρτελών στον τρέχοντα κατάλογο της ενεργής καρτέλας

View file

@ -63,11 +63,14 @@ focus-follow-mouse = Typing focus follows mouse
advanced = Advanced
show-headerbar = Show header
show-header-description = Reveal the header from the right-click menu
tab-new-inherit-working-directory = New tabs use current directory
tab-new-inherit-working-directory-description = Open new tabs in the active tab's working directory
### Keyboard shortcuts
add-another-keybinding = Add another keybinding
cancel = Cancel
close-window = Close window
confirm = Confirm
copy-or-sigint = Copy or SIGINT
disable = Disable
focus-pane-down = Focus pane down
@ -81,6 +84,7 @@ password-manager = Password manager
paste-primary = Paste primary
replace = Replace
reset-to-default = Reset to default
reset = Reset
shortcut-capture-hint = Press the key combination
shortcut-group-clipboard = Clipboard
shortcut-group-other = Other
@ -90,6 +94,9 @@ shortcut-group-zoom = Zoom
shortcut-replace-body = { $binding } is already assigned to { $existing }. Replace it with { $new_action }?
shortcut-replace-title = Replace shortcut?
tab-activate = Activate tab { $number }
rename-tab = Rename tab
tab-name-placeholder = Tab name
tab-rename-title = Rename tab
toggle-fullscreen = Toggle fullscreen
type-to-search = Type to search...

View file

@ -68,6 +68,8 @@ focus-follow-mouse = El enfoque de escritura sigue al mouse
advanced = Avanzado
show-headerbar = Mostrar encabezado
show-header-description = Mostrar el encabezado desde el menú contextual.
tab-new-inherit-working-directory = Las pestañas nuevas usan el directorio actual
tab-new-inherit-working-directory-description = Abrir pestañas nuevas en el directorio de trabajo de la pestaña activa
# Find
find-placeholder = Buscar...
find-previous = Buscar anterior

View file

@ -70,6 +70,8 @@ focus-follow-mouse = Enfoque del tecleo sigue el ratón
advanced = Avanzado
show-headerbar = Mostrar encabezado
show-header-description = Mostrar encabezado desde el menú del clic secundario.
tab-new-inherit-working-directory = Las pestañas nuevas usan el directorio actual
tab-new-inherit-working-directory-description = Abrir pestañas nuevas en el directorio de trabajo de la pestaña activa
# Find
find-placeholder = Buscar...
find-previous = Buscar previo

0
i18n/eu/cosmic_term.ftl Normal file
View file

View file

@ -14,7 +14,7 @@ rename = Nimeä uudelleen
export = Vie
delete = Poista
import = Tuo
import-errors = Tuo virheet
import-errors = Tuotaessa tapahtuneet virheet
## Profiles
@ -26,9 +26,9 @@ tab-title-description = Ylikirjoita välilehden oletusotsikko
add-profile = Lisää profiili
new-profile = Uusi profiili
make-default = Aseta oletukseksi
working-directory = Työkansio
working-directory = Työhakemisto
hold = Pidä
remain-open = Pysy auki lapsiprosessin sulkeutumisen jälkeen.
remain-open = Pysy avoinna lapsiprosessin sulkeutumisen jälkeen.
## Settings
@ -38,13 +38,13 @@ settings = Asetukset
appearance = Ulkoasu
theme = Teema
match-desktop = Sovita työpöydän kanssa
match-desktop = Sovita työpöytään
dark = Tumma
light = Vaalea
syntax-dark = Tumma väriteema
syntax-light = Vaalea väriteema
default-zoom-step = Zoomausaskeleet
opacity = Taustan läpinäkyvyys
default-zoom-step = Zoomauksen askeleet
opacity = Taustan peittävyys
### Font
@ -52,11 +52,11 @@ font = Fontti
advanced-font-settings = Fontin lisäasetukset
default-font = Fontti
default-font-size = Fontin koko
default-font-stretch = Kirjasimen venyvyys
default-font-weight = Oletuskirjasimen paino
default-dim-font-weight = Kirjasimen painon himmennys
default-bold-font-weight = Paksun kirjasimen paino
use-bright-bold = Näytä paksu kirjasin kirkkaana
default-font-stretch = Fontin venyvyys
default-font-weight = Fontin normaalipaino
default-dim-font-weight = Himmennetyn fontin paino
default-bold-font-weight = Lihavoidun fontin paino
use-bright-bold = Näytä lihavoitu teksti kirkkaampana
### Splits
@ -67,7 +67,7 @@ focus-follow-mouse = Kirjoituksen kohdistus seuraa hiirtä
advanced = Lisäasetukset
show-headerbar = Näytä otsake
show-header-description = Paljasta otsake hiiren oikean painikkeen valikosta.
show-header-description = Paljasta otsake hiiren oikean painikkeen valikosta
# Find
@ -107,7 +107,7 @@ next-tab = Seuraava välilehti
previous-tab = Edellinen välilehti
split-horizontal = Halkaise näkymä vaakasuunnassa
split-vertical = Halkaise näkymä pystysuunnassa
pane-toggle-maximize = Maksimointi päälle tai pois päältä
pane-toggle-maximize = Suurennus päällä tai pois
menu-color-schemes = Väriteemat…
menu-settings = Asetukset…
menu-about = Tietoa COSMICin päätteestä…
@ -134,3 +134,20 @@ menu-keyboard-shortcuts = Pikanäppäimet…
tab-activate = Aktivoi välilehti { $number }
type-to-search = Etsi kirjoittamalla…
password-manager = Salasanahallinta
reset-to-default = Palauta oletukseksi
menu-password-manager = Salasanat…
add-another-keybinding = Lisää toinen näppäinsidos
focus-pane-down = Kohdista alempaan ruutuun
focus-pane-left = Kohdista vasemmanpuoleiseen ruutuun
focus-pane-right = Kohdista oikeanpuoleiseen ruutuun
focus-pane-up = Kohdista ylempään ruutuun
paste-primary = Liitä ensisijainen
shortcut-capture-hint = Paina näppäinyhdistelmää
shortcut-replace-body = { $binding } on jo kytketty toimintoon { $existing }. Korvataanko se toiminnolla { $new_action }?
shortcut-replace-title = Korvataanko pikanäppäin?
copy-or-sigint = Kopioi tai SIGINT
shortcut-group-zoom = Lähennä
toggle-fullscreen = Koko näyttö päällä tai pois
shortcut-group-other = Muut
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

View file

@ -121,6 +121,7 @@ copy-link = Copier le lien
add-another-keybinding = Ajouter un autre raccourci clavier
cancel = Annuler
close-window = Fermer la fenêtre
confirm = Confirmer
copy-or-sigint = Copier ou SIGINT
disable = Désactiver
keyboard-shortcuts = Raccourcis clavier
@ -144,6 +145,12 @@ focus-pane-left = Passer au panneau de gauche
focus-pane-right = Passer au panneau de droite
focus-pane-up = Passer au panneau du dessus
reset-to-default = Rétablir les paramètres par défaut
reset = Réinitialiser
toggle-fullscreen = Basculer en plein écran
rename-tab = Renommer l'onglet
tab-name-placeholder = Nom de l'onglet
tab-rename-title = Renommer l'onglet
comment = Émulateur de terminal pour le bureau COSMIC
keywords = Commande;Shell;Terminal;CLI;
tab-new-inherit-working-directory = Les nouveaux onglets utilisent le répertoire actuel
tab-new-inherit-working-directory-description = Ouvrir les nouveaux onglets dans le répertoire de travail de l'onglet actif

View file

@ -58,7 +58,7 @@ default-font = Betűtípus
default-font-size = Betűméret
default-font-stretch = Betűszélesség
default-font-weight = Normál betűsúly
default-dim-font-weight = Halvány betűsúly
default-dim-font-weight = Vékony betűsúly
default-bold-font-weight = Félkövér betűsúly
use-bright-bold = Félkövér szöveg világosítása
@ -147,3 +147,5 @@ tab-activate = { $number }. lap aktiválása
toggle-fullscreen = Teljes képernyő váltása
type-to-search = Gépelj a kereséshez…
copy-link = Hivatkozás másolása
tab-new-inherit-working-directory = Az új lapok az aktuális könyvtárat használják
tab-new-inherit-working-directory-description = Az új lapok az aktív lap munkakönyvtárában nyílnak meg

View file

@ -107,3 +107,5 @@ focus-pane-up = Fokuskan panel ke atas
comment = Emulator terminal untuk desktop COSMIC
keywords = Perintah;Shell;Terminal;CLI;
copy-link = Salin Tautan
tab-new-inherit-working-directory = Tab baru menggunakan direktori saat ini
tab-new-inherit-working-directory-description = Buka tab baru di direktori pekerjaan tab aktif

View file

@ -70,6 +70,8 @@ focus-follow-mouse = Il focus di scrittura segue il mouse
advanced = Avanzate
show-headerbar = Mostra intestazione
show-header-description = Mostra intestazione dal menu click destro.
tab-new-inherit-working-directory = Le nuove schede usano la cartella corrente
tab-new-inherit-working-directory-description = Apri nuove schede nella directory di lavoro della scheda attiva
# Find
find-placeholder = Trova...
find-previous = Trova precedente

View file

@ -0,0 +1,107 @@
cancel = Sefsex
name = Isem
delete = kkes
rename = Snifel isem
quit = Tuffɣa
support = Tallalt
repository = Asarsay
settings = Iɣewwaṛen
appearance = Timeẓri
theme = Asentel
dark = Aɣmayan
light = Aceɛlal
paste = Senteḍ
select-all = Fren akk
view = Wali
menu-settings = Iɣewwaṛen…
match-desktop = Amṣada d tnarit
file = Afaylu
new-window = Asfaylu amaynut
edit = Ẓreg
copy = Nɣel
default-zoom-step = Isurifen n usemɣer
find = Af-d
find-placeholder = Af-d…
find-previous = Af-d uzwir
find-next = Af-d uḍfir
replace = Semselsi
keyboard-shortcuts = Inegzumen n unasiw
menu-keyboard-shortcuts = Inegzumen n unasiw…
new-tab = Iccer amaynut
close-tab = Mdel iccer
import = Kter
export = Sifeḍ
reset-to-default = Ales awennez ɣer umezwer
type-to-search = Aru iwakken ad tnadiḍ…
add-another-keybinding = Rnu yiwen n unegzum n unasiw nniḍen
font = Tasefsit
default-font = Tasefsit
password-input = Awal uffir
password-input-description = Aglam
close-window = Mdel asfaylu
copy-or-sigint = Nɣel neɣ SIGINT
disable = Kkes armad
no-shortcuts = Ulac inegzumen
password-manager = Amsefrak n wawal n uɛeddi
shortcut-group-other = Ayen nniḍen
shortcut-group-tabs = Iccaren
shortcut-group-window = Asfaylu
shortcut-replace-title = Semselsi anegzum?
toggle-fullscreen = Qluqel ɣer ugdil aččuran
shortcut-group-clipboard = Tacfawit
shortcut-group-zoom = Asimɣeṛ
show-header-description = Err-d inixef seg wumuɣ n usiti ayeffus
new-terminal = Ixf amaynut
color-schemes = Azenziɣ n yiniten
import-errors = Kter tuccḍiwin
profiles = imaɣnuten
command-line = Izirig n tladna
tab-title = Azwel n yiccer
tab-title-description = Snifel azwel n yiccer amezwer
add-profile = Rnu amaɣnu
new-profile = Amaɣnu amaynut
make-default = Err-it d amezwer
working-directory = Akaram n umahil
hold = Ṭṭef
syntax-dark = Azenziɣ n yini aɣmayan
syntax-light = Azenziɣ n yini aceɛlal
opacity = Tiḍullest n ugilal
advanced-font-settings = Iɣewwaṛen inaẓiyen n tsefsit
default-font-size = Tiddi n tsefsit
default-font-stretch = Ajbad n tsefsit
default-font-weight = Taẓeyt n tsefsit tamagnut
default-dim-font-weight = Taẓeyt n tsefsit tafessast
default-bold-font-weight = Taẓeyt n tsefsit n tira tazurant
use-bright-bold = Err aḍris azuran yettfeǧǧiǧ
show-headerbar = Sken inixef
profile = Amaɣnu
menu-profiles = imaɣnuten…
remain-open = Qqim teldiḍ deffir n tuffɣa n ukala aqrur.
focus-follow-mouse = Asaḍas n tira yettḍafar taɣerdayt
advanced = Leqqayen
clear-scrollback = Sfeḍ adrurem ɣer deffir
open-link = Ldi aseɣwen
zoom-in = Aḍris ahrawan
zoom-reset = Tiddi n uḍris amezwer
zoom-out = Aḍris wezzilen ugar
next-tab = Iccer uḍfir
previous-tab = Iccer uzwir
split-horizontal = Ẓun s wudem aglawan
split-vertical = Ẓun s wudem ubdid
pane-toggle-maximize = Qluqel asemɣer
menu-about = Ɣef ixf COSMIC…
menu-password-manager = Awalen uffiren...
passwords-title = Awalen uffiren
add-password = Rnu awal uffir
splits = Tiẓunin
menu-color-schemes = Azenziɣ n yini...
comment = Amtellal n yixef i tnarit COSMIC
keywords = Taladna; Ajeɣlal; Ixf; CLI;
focus-pane-down = Err asaḍas ɣer ugalis ukessar
focus-pane-left = Err asaḍas ɣer ugalis uzelmaḍ
focus-pane-right = Err asaḍas ɣer ugalis uyeffus
focus-pane-up = Err asaḍas ɣer ugalis uksawen
paste-primary = Senṭeḍ agejdan
shortcut-capture-hint = Sit ɣef usuddes n tqeffalin
tab-activate = Sermed iccer { $number }
copy-link = Nɣel aseɣwen

View file

@ -107,3 +107,5 @@ type-to-search = Іздеу үшін теріңіз...
comment = COSMIC жұмыс үстелі үшін терминал эмуляторы
keywords = Command;Shell;Terminal;CLI;Команда;Қоршам;Терминал;
copy-link = Сілтемені көшіру
tab-new-inherit-working-directory = Жаңа беттерде ағымдағы буманы қолдану
tab-new-inherit-working-directory-description = Жаңа беттерді белсенді беттің жұмыс бумасында ашу

View file

@ -51,7 +51,7 @@ default-dim-font-weight = 희미한 글꼴 굵기
advanced = 고급
use-bright-bold = 굵은 텍스트를 더 밝게 표시
default-bold-font-weight = 굵은 글꼴 굵기
show-header-description = 오른쪽 클릭 메뉴를 통해 헤더를 나타냅니다.
show-header-description = 우클릭 메뉴를 통해 헤더를 나타냅니다
password-input-description = 설명
default-font = 글꼴
paste = 붙여넣기
@ -78,3 +78,23 @@ find = 찾기
profile = 프로필
new-tab = 새 탭
comment = COSMIC 데스크톱용 터미널 에뮬레이터
menu-keyboard-shortcuts = 단축키...
keywords = 명령어;셸;터미널;CLI;
cancel = 취소
close-window = 창 닫기
disable = 비활성화
keyboard-shortcuts = 단축키
password-manager = 암호 관리자
replace = 대체
shortcut-group-clipboard = 클립보드
shortcut-group-tabs = 탭
shortcut-group-window = 창
shortcut-replace-title = 단축키를 대체할까요?
tab-activate = 활성 탭 { $number }
toggle-fullscreen = 전체 화면 전환
type-to-search = 입력하여 검색…
copy-link = 링크 복사
no-shortcuts = 단축키 없음
reset-to-default = 기본값으로 되돌리기
shortcut-group-other = 기타
shortcut-group-zoom = 확대

0
i18n/lo/cosmic_term.ftl Normal file
View file

View file

@ -19,11 +19,11 @@ make-default = Padaryti numatytu
working-directory = Darbinis katalogas
hold = Laikyti
remain-open = Palikti atidarytą išsijungus vaikiniam procesui.
settings = Nustatymai
settings = Nuostatos
appearance = Išvaizda
theme = Stilius
match-desktop = Pagal darbalaukio temą
default-zoom-step = Priartinimo žingsniai
default-zoom-step = Artinimo žingsniai
opacity = Fono skaidrumas
font = Šriftas
advanced-font-settings = Išplėstiniai šrifto nustatymai
@ -38,9 +38,9 @@ focus-follow-mouse = Teksto laukelio aktyvavimas sekant žymeklį
advanced = Išplėstiniai
show-headerbar = Rodyti antraštę
show-header-description = Rodyti antraštę kontekstiname meniu atidaromu dešiniu klavišu
find-placeholder = Surasti...
find-previous = Atgalinis ieškojimas
find-next = Ieškoti sekančio
find-placeholder = Rasti...
find-previous = Ieškoti ankstesnio
find-next = Ieškoti tolesnio
file = Failas
new-tab = Naujas skirtukas
new-window = Naujas langas
@ -50,9 +50,9 @@ close-tab = Uždaryti skirtuką
quit = Išeiti
edit = Redaguoti
copy = Kopijuoti
paste = Įklijuoti
select-all = Pažymėti viską
find = Surasti
paste = Įdėti
select-all = Žymėti viską
find = Rasti
clear-scrollback = Išvalyti scrollback
open-link = Atidaryti Nuorodą
view = Rodymas
@ -65,7 +65,7 @@ split-horizontal = Skaidyti horizontaliai
split-vertical = Skaidyti vertikaliai
pane-toggle-maximize = Perjungti maksimalų padidinimą
menu-color-schemes = Spalvų schemos...
menu-settings = Nustatymai...
menu-settings = Nuostatos...
menu-about = Apie COSMIC Terminal...
menu-password-manager = Slaptažodžiai...
passwords-title = Slaptažodžiai
@ -82,12 +82,12 @@ cancel = Atšaukti
close-window = Uždaryti langą
copy-or-sigint = Kopijuoti arba SIGINT
disable = Išjungti
keyboard-shortcuts = Klaviatūros greitieji klavišai
menu-keyboard-shortcuts = Klaviatūros greitieji klavišai...
keyboard-shortcuts = Spartieji klavišai
menu-keyboard-shortcuts = Spartieji klavišai...
no-shortcuts = Nėra nustatytų klaviatūros derinių
password-manager = Slaptažodžių tvarkyklė
paste-primary = Įklijuotiį pirminį
replace = Pakeisti
replace = Keisti
reset-to-default = Nustatyti į numatytąjį
shortcut-capture-hint = Nuspauskite klavišų derinį
shortcut-group-clipboard = Iškarpinė
@ -101,3 +101,4 @@ tab-activate = Aktyvuoti skirtuką { $number }
toggle-fullscreen = Įjungti/išjungti viso ekrano režimą
type-to-search = Norint ieškoti, pradėkite rašyti…
copy-link = Kopijuoti Nuorodą
syntax-dark = Tamsi spalvų paletė

View file

@ -71,3 +71,4 @@ syntax-light = Fargeskjema lyst
default-zoom-step = Zoom steg
focus-follow-mouse = Skrivefokus følger musen
hold = Hold
cancel = Avbryt

View file

@ -147,3 +147,5 @@ focus-pane-left = Aktywuj lewy panel
focus-pane-right = Aktywuj prawy panel
focus-pane-up = Aktywuj panel wyżej
copy-link = Skopiuj Odnośnik
tab-new-inherit-working-directory = Nowe karty użyją obecnego katalogu
tab-new-inherit-working-directory-description = Otwieraj nowe karty w katalogu roboczym aktywnej karty

View file

@ -113,10 +113,10 @@ pane-toggle-maximize = Alternar maximização
menu-color-schemes = Esquemas de cores...
menu-settings = Configurações...
menu-about = Sobre o Terminal...
open-link = Abrir Link
open-link = Abrir link
menu-password-manager = Senhas...
passwords-title = Senhas
add-password = Adicionar Senha
add-password = Adicionar senha
password-input = Senha
password-input-description = Descrição
add-another-keybinding = Adicionar outra combinação de teclas
@ -124,15 +124,15 @@ cancel = Cancelar
close-window = Fechar janela
copy-or-sigint = Copiar ou SIGINT
disable = Desabilitar
focus-pane-down = Focar painel abaixo
focus-pane-left = Focar painel à esquerda
focus-pane-right = Focar painel à direita
focus-pane-up = Focar painel acima
focus-pane-down = Focar o quadro abaixo
focus-pane-left = Focar o quadro à esquerda
focus-pane-right = Focar o quadro à direita
focus-pane-up = Focar o quadro acima
keyboard-shortcuts = Atalhos de teclado
menu-keyboard-shortcuts = Atalhos de teclado...
no-shortcuts = Sem atalhos
password-manager = Gerenciador de senhas
paste-primary = Colar
paste-primary = Colar primário
replace = Substituir
reset-to-default = Restaurar padrão
shortcut-capture-hint = Pressione a combinação de teclas
@ -146,4 +146,6 @@ shortcut-replace-title = Substituir atalho?
tab-activate = Ativar aba { $number }
toggle-fullscreen = Alternar para tela cheia
type-to-search = Digite para pesquisar...
copy-link = Copiar Link
copy-link = Copiar link
tab-new-inherit-working-directory = Novas abas usam o diretório atual
tab-new-inherit-working-directory-description = Abrir novas abas no diretório de trabalho da aba ativa

View file

@ -141,3 +141,5 @@ tab-activate = Активировать вкладку { $number }
toggle-fullscreen = Вкл./выкл. полноэкранный режим
type-to-search = Введите для поиска...
copy-link = Копировать ссылку
tab-new-inherit-working-directory = В новых вкладках исп. текущий каталог
tab-new-inherit-working-directory-description = Открывать новые вкладки в рабочем каталоге активной вкладки

View file

@ -0,0 +1,111 @@
quit = Изађи
cancel = Откажи
import = Увези
export = Извези
appearance = Изглед
light = Светла
dark = Тамна
settings = Подешавања
reset-to-default = Врати на подразумевано
type-to-search = Куцајте за претрагу...
add-another-keybinding = Додај још једну комбинацију тастера
replace = Замени
syntax-light = Светла шема боја
default-font-weight = Нормална тежина фонта
add-profile = Додај профил
find-next = Нађи следеће
splits = Подељено
import-errors = Грешке при увозу
zoom-in = Већи текст
select-all = Означи све
previous-tab = Претходни језичак
show-headerbar = Прикажи заглавље
new-window = Нови прозор
zoom-out = Мањи текст
split-vertical = Усправна подела
syntax-dark = Тамна шема боја
menu-profiles = Профили...
new-terminal = Нови терминал
tab-title-description = Замените подразумевани наслов језичка
menu-about = О програму Космик Терминал...
remain-open = Остани отворен након што се дечији процес заврши.
menu-color-schemes = Шеме боја...
working-directory = Радни директоријум
profiles = Профили
opacity = Непровидност позадине
tab-title = Наслов језичка
zoom-reset = Подразумевана величина текста
rename = Преименуј
passwords-title = Лозинке
edit = Уреди
copy = Умножи
pane-toggle-maximize = Окини увећање
theme = Тема
password-input = Лозинка
close-tab = Затвори језичак
color-schemes = Шеме боја
name = Назив
default-dim-font-weight = Пригушена тежина фонта
advanced = Напредно
delete = Обриши
repository = Ризница
use-bright-bold = Учини подебљани текст светлијим
support = Подршка
default-bold-font-weight = Тежина подебљаног фонта
password-input-description = Опис
default-font = Фонт
paste = Залепи
menu-settings = Подешавања...
add-password = Додај лозинку
command-line = Линија наредби
view = Преглед
default-font-stretch = Развлачење писма
hold = Задржи
menu-password-manager = Лозинке...
match-desktop = Прати радну површину
find-previous = Нађи претходно
default-font-size = Величина фонта
cosmic-terminal = Космик терминал
split-horizontal = Водоравна подела
find-placeholder = Пронађи...
focus-follow-mouse = Фокус куцања прати миша
advanced-font-settings = Напредна подешавања фонта
font = Фонт
next-tab = Следећи језичак
default-zoom-step = Кораци увећања
clear-scrollback = Очисти историју помицања
open-link = Отвори везу
file = Датотека
make-default = Постави као подразумеван
new-profile = Нови профил
find = Пронађи
profile = Профил
new-tab = Нови језичак
keyboard-shortcuts = Пречице тастатуре
menu-keyboard-shortcuts = Пречице на тастатури...
comment = Емулатор терминала за Космик радну површину
keywords = Command;Shell;Terminal;CLI;Наредба;Шкољка;Терминал;CLI;naredba;školjka;terminal;cli;
show-header-description = Прикажи заглавље из менија са десним кликом
close-window = Затвори прозор
copy-or-sigint = Копирај или SIGINT
disable = Онемогући
focus-pane-down = Усредсреди површ испод
focus-pane-left = Усредсреди површ лево
focus-pane-right = Усредсреди површ десно
focus-pane-up = Усредсреди површ изнад
no-shortcuts = Нема пречица
password-manager = Управник лозинки
paste-primary = Убаци примарно
shortcut-capture-hint = Притисните комбинацију тастера
shortcut-group-clipboard = Остава
shortcut-group-other = Друго
shortcut-group-tabs = Језичци
shortcut-group-window = Прозор
shortcut-group-zoom = Увећање
shortcut-replace-body = { $binding } је већ додељена за { $existing }. Заменити је са { $new_action }?
shortcut-replace-title = Заменити пречицу?
tab-activate = Активирај језичак { $number }
toggle-fullscreen = Цео екран
copy-link = Копирај везу
tab-new-inherit-working-directory = Нови језичци користе тренутни директоријум
tab-new-inherit-working-directory-description = Отвара нове језичке у радном директоријуму активног језичка

View file

@ -151,3 +151,5 @@ shortcut-group-other = Andra
shortcut-group-tabs = Flikar
shortcut-group-zoom = Zooma
copy-link = Kopiera länk
tab-new-inherit-working-directory-description = Öppna nya flikar i den aktiva flikens arbetskatalog
tab-new-inherit-working-directory = Nya flikar använder aktuell katalog

View file

@ -147,3 +147,5 @@ focus-pane-up = Фокус на верхню панель
comment = Емулятор терміналу для середовища COSMIC
keywords = Команда;Оболонка;Термінал;Інтерфейс;CLI;
copy-link = Копіювати ланку
tab-new-inherit-working-directory = У нових вкладках використовується поточний каталог
tab-new-inherit-working-directory-description = Відкривати нові вкладки в робочому каталозі активної вкладки

View file

@ -69,7 +69,7 @@ advanced = 高级
show-headerbar = 显示标题栏
show-header-description = 右键菜单提供显示标题栏选项
# Find
find-placeholder = 查找...
find-placeholder = 查找…
find-previous = 查找上一个
find-next = 查找下一个
@ -82,7 +82,7 @@ file = 文件
new-tab = 新建标签
new-window = 新建窗口
profile = 配置
menu-profiles = 配置文件...
menu-profiles = 配置文件…
close-tab = 关闭标签
quit = 退出
@ -106,9 +106,9 @@ previous-tab = 上一个标签
split-horizontal = 水平分割
split-vertical = 垂直分割
pane-toggle-maximize = 切换最大化
menu-color-schemes = 配色方案...
menu-settings = 设置...
menu-about = 关于 COSMIC 终端...
menu-color-schemes = 配色方案…
menu-settings = 设置…
menu-about = 关于 COSMIC 终端…
repository = 仓库
support = 支持
open-link = 打开链接
@ -132,7 +132,7 @@ shortcut-group-clipboard = 剪切板
shortcut-group-other = 其他
shortcut-group-tabs = 标签
shortcut-group-zoom = 缩放
type-to-search = 输入即可搜索...
type-to-search = 输入即可搜索…
copy-or-sigint = 复制或 SIGINT
focus-pane-down = 聚焦下方窗格
focus-pane-left = 聚焦左侧窗格
@ -147,3 +147,5 @@ toggle-fullscreen = 切换全屏
comment = COSMIC 桌面的终端模拟器
keywords = 指令;外壳;终端;命令行界面;
copy-link = 复制链接
tab-new-inherit-working-directory = 新标签使用当前目录
tab-new-inherit-working-directory-description = 在活动标签的工作目录中打开新标签

View file

@ -1,5 +1,5 @@
cosmic-terminal = COSMIC 終端機
new-terminal = 新增 終端機
new-terminal = 新建終端機
# Context Pages
@ -9,7 +9,7 @@ new-terminal = 新增 終端機
## Color schemes
color-schemes = 主題
color-schemes = 配色方案
rename = 重命名
export = 匯出
delete = 刪除
@ -38,36 +38,36 @@ settings = 設定
appearance = 外觀
theme = 主題
match-desktop = 配合桌面
dark = 暗色
light = 亮色
match-desktop = 符合桌面
dark = 深色
light = 淺色
syntax-dark = 暗色調
syntax-light = 亮色調
default-zoom-step = 縮放步進
opacity = 背景透明度
opacity = 背景不透明度
### Font
font = 字體
advanced-font-settings = 進階字體設定
default-font = 字體
default-font-size = 字體大小
default-font-stretch = 字體延伸
default-font-weight = 字體粗細
default-dim-font-weight = 淡色字體粗細
default-bold-font-weight = 粗字體粗細
use-bright-bold = 使粗體字更亮
font = 字型
advanced-font-settings = 進階字型設定
default-font = 字型
default-font-size = 字型大小
default-font-stretch = 字型伸展
default-font-weight = 正常字型粗細
default-dim-font-weight = 黯淡字型粗細
default-bold-font-weight = 粗體字型粗細
use-bright-bold = 使粗體文字更亮
### Splits
splits = 終端介面分割
focus-follow-mouse = 滑鼠點擊選擇輸入窗口
splits = 分割
focus-follow-mouse = 輸入焦點追隨滑鼠
### Advanced
advanced = 進階
show-headerbar = 顯示標題列
show-header-description = 右鍵選單提供標題列選項。
show-header-description = 右鍵選單提供標題列選項
# Find
find-placeholder = 尋找...
find-previous = 上一個
@ -79,12 +79,12 @@ find-next = 下一個
## File
file = 檔案
new-tab = 新增分頁
new-window = 新增視窗
profile = 設定檔
menu-profiles = 設定檔...
new-tab = 新建分頁
new-window = 新建視窗
profile = 設定檔案
menu-profiles = 設定檔案...
close-tab = 關閉分頁
quit = 結束
quit = 退出
## Edit
@ -97,14 +97,55 @@ find = 尋找
## View
view = 檢視
zoom-in = 放大文字
zoom-reset = 重設文字大小
zoom-out = 縮小文字
zoom-in = 較大文字
zoom-reset = 預設文字大小
zoom-out = 較小文字
next-tab = 下個分頁
previous-tab = 上個分頁
split-horizontal = 水平分割
split-vertical = 垂直分割
pane-toggle-maximize = 切換最大化
menu-color-schemes = 主題...
menu-color-schemes = 配色方案...
menu-settings = 設定...
menu-about = 關於 COSMIC 終端機...
menu-about = 關於 COSMIC 終端機…
cancel = 取消
repository = 軟體庫源
support = 支援
keyboard-shortcuts = 鍵盤快速鍵
keywords = 指令;殼層;終端;指令行介面CLI;
add-another-keybinding = 添加另一個按鍵組合
close-window = 關閉視窗
copy-or-sigint = 複製或 SIGINT
disable = 停用
menu-keyboard-shortcuts = 鍵盤快速鍵...
no-shortcuts = 無快速鍵
password-manager = 密碼管理器
paste-primary = 貼上主要
replace = 取代
reset-to-default = 重新設定至預設
shortcut-capture-hint = 按下組合鍵
shortcut-group-clipboard = 剪貼簿
shortcut-group-other = 其它
shortcut-group-tabs = 分頁
shortcut-group-window = 視窗
shortcut-group-zoom = 縮放
focus-pane-down = 聚焦下方窗格
focus-pane-left = 聚焦左側窗格
focus-pane-right = 聚焦右側窗格
focus-pane-up = 聚焦上方窗格
open-link = 開啟連結
menu-password-manager = 密碼…
passwords-title = 密碼
add-password = 添增密碼
password-input = 密碼
password-input-description = 描述
shortcut-replace-title = 取代快速鍵?
tab-activate = 啟用分頁 { $number }
toggle-fullscreen = 切換全螢幕
type-to-search = 輸入進行搜尋...
copy-link = 複製連結
shortcut-replace-body = { $binding } 已經分配至 { $existing }。 要取代它為 { $new_action }?
clear-scrollback = 清除捲動回朔
comment = COSMIC 桌面終端機模擬器
tab-new-inherit-working-directory = 新分頁使用目前目錄
tab-new-inherit-working-directory-description = 在作用中分頁的工作目錄開啟新分頁

View file

@ -235,6 +235,8 @@ pub struct Config {
pub syntax_theme_dark: String,
pub syntax_theme_light: String,
pub focus_follow_mouse: bool,
#[serde(default)]
pub tab_new_inherit_working_directory: bool,
pub default_profile: Option<ProfileId>,
#[serde(default)]
pub shortcuts_custom: Shortcuts,
@ -249,6 +251,7 @@ impl Default for Config {
color_schemes_light: BTreeMap::new(),
dim_font_weight: Weight::NORMAL.0,
focus_follow_mouse: false,
tab_new_inherit_working_directory: false,
font_name: "Noto Sans Mono".to_string(),
font_size: 14,
font_size_zoom_step_mul_100: 100,

File diff suppressed because it is too large Load diff

View file

@ -7,8 +7,8 @@ use cosmic::widget::{Column, space};
use cosmic::{
Element,
app::Core,
iced::core::Border,
iced::{Background, Length, advanced::widget::text::Style as TextStyle},
iced_core::Border,
theme,
widget::{
self, divider,
@ -26,6 +26,7 @@ static MENU_ID: LazyLock<cosmic::widget::Id> =
#[derive(Debug, Clone)]
pub struct MenuState {
pub position: Option<Point>,
pub local_position: Option<Point>,
pub link: Option<String>,
}
@ -93,7 +94,9 @@ pub fn context_menu<'a>(
)),
Element::from(divider::horizontal::light()),
Element::from(menu_item(fl!("new-tab"), Action::TabNew)),
Element::from(menu_item(fl!("rename-tab"), Action::TabRename)),
Element::from(menu_item(fl!("menu-settings"), Action::Settings)),
Element::from(menu_item(fl!("menu-about"), Action::About)),
];
#[cfg(feature = "password_manager")]
{
@ -223,6 +226,7 @@ pub fn menu_bar<'a>(
MenuItem::Folder(fl!("profile"), profile_items),
MenuItem::Button(fl!("menu-profiles"), None, Action::Profiles),
MenuItem::Divider,
MenuItem::Button(fl!("rename-tab"), None, Action::TabRename),
MenuItem::Button(fl!("close-tab"), None, Action::TabClose),
MenuItem::Divider,
MenuItem::Button(fl!("quit"), None, Action::WindowClose),

View file

@ -234,10 +234,10 @@ impl PasswordManager {
}
// Don't do anything if nothing have changed
if let Some(original) = &original {
if original == &input_state.input {
return Task::none();
}
if let Some(original) = &original
&& original == &input_state.input
{
return Task::none();
}
cosmic::task::future(async move {
@ -246,19 +246,14 @@ impl PasswordManager {
"Failed to add password {identifier}: {err}"
)))
} else {
if let Some(original) = original {
if original.identifier != identifier {
if let Err(err) =
store::delete_password(original.identifier.clone()).await
{
return Message::PasswordManager(PasswordManagerMessage::Error(
format!(
"Failed to delete password {}: {err}",
original.identifier
),
));
}
}
if let Some(original) = original
&& original.identifier != identifier
&& let Err(err) = store::delete_password(original.identifier.clone()).await
{
return Message::PasswordManager(PasswordManagerMessage::Error(format!(
"Failed to delete password {}: {err}",
original.identifier
)));
}
Message::PasswordManager(PasswordManagerMessage::None)
}
@ -315,72 +310,68 @@ impl PasswordManager {
.spacing(space_xxs),
);
if expanded {
if let Some(input_state) = &self.input_state {
let expanded_section: Section<'_, Message> = widget::settings::section().add(
if expanded && let Some(input_state) = &self.input_state {
let expanded_section: Section<'_, Message> = widget::settings::section().add(
widget::column::with_children(vec![
widget::column::with_children(vec![
widget::column::with_children(vec![
widget::text(fl!("password-input-description")).into(),
widget::text_input("", input_state.input.identifier.clone())
.on_input(move |text| {
Message::PasswordManager(
PasswordManagerMessage::DescriptionInput(text),
)
})
.on_submit(move |text| {
Message::PasswordManager(
PasswordManagerMessage::DescriptionInputAndUpdate(text),
)
})
.on_unfocus(Message::PasswordManager(
PasswordManagerMessage::Update,
))
.into(),
])
.spacing(space_xxxs)
.into(),
widget::column::with_children(vec![
widget::text(fl!("password-input")).into(),
widget::secure_input(
"",
input_state.input.password.clone(),
Some(Message::PasswordManager(
PasswordManagerMessage::ToggleShowPassword,
)),
!input_state.show_password,
)
widget::text(fl!("password-input-description")).into(),
widget::text_input("", input_state.input.identifier.clone())
.on_input(move |text| {
Message::PasswordManager(PasswordManagerMessage::PasswordInput(
text,
))
Message::PasswordManager(
PasswordManagerMessage::DescriptionInput(text),
)
})
.on_submit(move |text| {
Message::PasswordManager(
PasswordManagerMessage::PasswordInputAndUpdate(text),
PasswordManagerMessage::DescriptionInputAndUpdate(text),
)
})
.on_unfocus(Message::PasswordManager(
PasswordManagerMessage::Update,
))
.into(),
])
.spacing(space_xxxs)
])
.spacing(space_xxxs)
.into(),
widget::column::with_children(vec![
widget::text(fl!("password-input")).into(),
widget::secure_input(
"",
input_state.input.password.clone(),
Some(Message::PasswordManager(
PasswordManagerMessage::ToggleShowPassword,
)),
!input_state.show_password,
)
.on_input(move |text| {
Message::PasswordManager(PasswordManagerMessage::PasswordInput(
text,
))
})
.on_submit(move |text| {
Message::PasswordManager(
PasswordManagerMessage::PasswordInputAndUpdate(text),
)
})
.on_unfocus(Message::PasswordManager(PasswordManagerMessage::Update))
.into(),
])
.padding([0, space_s])
.spacing(space_xs),
);
.spacing(space_xxxs)
.into(),
])
.padding([0, space_s])
.spacing(space_xs),
);
let padding = Padding {
top: 0.0,
bottom: 0.0,
left: space_s.into(),
right: space_s.into(),
};
let padding = Padding {
top: 0.0,
bottom: 0.0,
left: space_s.into(),
right: space_s.into(),
};
passwords_section =
passwords_section.add(widget::container(expanded_section).padding(padding))
}
passwords_section =
passwords_section.add(widget::container(expanded_section).padding(padding))
}
}
sections.push(passwords_section.into());

View file

@ -2,8 +2,8 @@
use cosmic::widget::menu::key_bind::{KeyBind, Modifier};
use cosmic::{
iced::core::keyboard::key::Named,
iced::keyboard::{Key, Modifiers},
iced_core::keyboard::key::Named,
};
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, HashMap};
@ -87,6 +87,7 @@ pub enum KeyBindAction {
TabNew,
TabNext,
TabPrev,
TabRename,
ToggleFullscreen,
WindowClose,
WindowNew,
@ -127,6 +128,7 @@ impl KeyBindAction {
Self::TabNew => Some(Action::TabNew),
Self::TabNext => Some(Action::TabNext),
Self::TabPrev => Some(Action::TabPrev),
Self::TabRename => Some(Action::TabRename),
Self::ToggleFullscreen => Some(Action::ToggleFullscreen),
Self::WindowClose => Some(Action::WindowClose),
Self::WindowNew => Some(Action::WindowNew),
@ -245,11 +247,11 @@ impl ShortcutsConfig {
// Remove any matching bindings
return false;
}
if let Some(default_action) = self.defaults.0.get(binding) {
if *default_action == reset_action {
// Remove binding that overrode a default
return false;
}
if let Some(default_action) = self.defaults.0.get(binding)
&& *default_action == reset_action
{
// Remove binding that overrode a default
return false;
}
true
});
@ -288,6 +290,7 @@ pub fn action_label(action: KeyBindAction) -> String {
KeyBindAction::TabNew => fl!("new-tab"),
KeyBindAction::TabNext => fl!("next-tab"),
KeyBindAction::TabPrev => fl!("previous-tab"),
KeyBindAction::TabRename => fl!("rename-tab"),
KeyBindAction::ToggleFullscreen => fl!("toggle-fullscreen"),
KeyBindAction::WindowClose => fl!("close-window"),
KeyBindAction::WindowNew => fl!("new-window"),
@ -320,6 +323,7 @@ pub fn shortcut_groups() -> Vec<ShortcutGroup> {
actions: vec![
KeyBindAction::TabNew,
KeyBindAction::TabClose,
KeyBindAction::TabRename,
KeyBindAction::TabNext,
KeyBindAction::TabPrev,
KeyBindAction::TabActivate0,
@ -454,6 +458,7 @@ fn fallback_shortcuts() -> Shortcuts {
bind!([Ctrl, Shift], "V", Paste);
bind!([Shift], "Insert", PastePrimary);
bind!([Ctrl, Shift], "W", TabClose);
bind!([Ctrl, Shift], "R", TabRename);
bind!([Ctrl], ",", Settings);
bind!([], "F11", ToggleFullscreen);

View file

@ -28,7 +28,8 @@ use indexmap::IndexSet;
use std::{
borrow::Cow,
collections::HashMap,
io, mem,
fs, io, mem,
path::PathBuf,
sync::{
Arc, Mutex, Weak,
atomic::{AtomicU32, Ordering},
@ -197,11 +198,12 @@ impl TerminalPaneGrid {
}
pub fn unfocus_all_terminals(&self) {
for (_pane, tab_model) in self.panes.panes.iter() {
let entity = tab_model.active();
if let Some(terminal) = tab_model.data::<Mutex<Terminal>>(entity) {
let mut terminal = terminal.lock().unwrap();
terminal.is_focused = false;
terminal.update();
for entity in tab_model.iter() {
if let Some(terminal) = tab_model.data::<Mutex<Terminal>>(entity) {
let mut terminal = terminal.lock().unwrap();
terminal.is_focused = false;
terminal.update();
}
}
}
}
@ -257,6 +259,7 @@ pub struct Terminal {
notifier: Notifier,
search_regex_opt: Option<RegexSearch>,
search_value: String,
shell_pid: Option<u32>,
size: Size,
use_bright_bold: bool,
zoom_adj: i8,
@ -264,6 +267,7 @@ pub struct Terminal {
impl Terminal {
//TODO: error handling
#[allow(clippy::too_many_arguments)]
pub fn new(
pane: pane_grid::Pane,
entity: segmented_button::Entity,
@ -303,13 +307,13 @@ impl Terminal {
let (cell_width, cell_height) = {
let mut font_system = font_system().write().unwrap();
let font_system = font_system.raw();
buffer.set_wrap(font_system, Wrap::None);
buffer.set_wrap(Wrap::None);
// Use size of space to determine cell size
buffer.set_text(font_system, " ", &default_attrs, Shaping::Advanced, None);
buffer.set_text(" ", &default_attrs, Shaping::Advanced, None);
let layout = buffer.line_layout(font_system, 0).unwrap();
let w = layout[0].w;
buffer.set_monospace_width(font_system, Some(w));
buffer.set_monospace_width(Some(w));
(w, metrics.line_height)
};
@ -328,6 +332,10 @@ impl Terminal {
let window_id = 0;
let pty = tty::new(&options, size.into(), window_id)?;
#[cfg(not(windows))]
let shell_pid = Some(pty.child().id());
#[cfg(windows)]
let shell_pid = pty.child_watcher().pid().map(|pid| pid.get());
let pty_event_loop =
EventLoop::new(term.clone(), event_proxy, pty, options.drain_on_exit, false)?;
@ -352,6 +360,7 @@ impl Terminal {
profile_id_opt,
search_regex_opt: None,
search_value: String::new(),
shell_pid,
size,
tab_title_override,
term,
@ -407,6 +416,19 @@ impl Terminal {
self.notifier.notify(input);
}
pub fn working_directory(&self) -> Option<PathBuf> {
#[cfg(target_os = "linux")]
{
let shell_pid = self.shell_pid?;
fs::read_link(format!("/proc/{shell_pid}/cwd")).ok()
}
#[cfg(not(target_os = "linux"))]
{
None
}
}
pub fn input_scroll<I: Into<Cow<'static, [u8]>>>(&self, input: I) {
self.input_no_scroll(input);
self.scroll(TerminalScroll::Bottom);
@ -448,8 +470,7 @@ impl Terminal {
self.term.lock().resize(self.size);
self.with_buffer_mut(|buffer| {
let mut font_system = font_system().write().unwrap();
buffer.set_size(font_system.raw(), Some(width as f32), Some(height as f32));
buffer.set_size(Some(width as f32), Some(height as f32));
});
self.needs_update = true;
@ -632,10 +653,7 @@ impl Terminal {
let metrics = config.metrics(zoom_adj);
if metrics != self.buffer.metrics() {
{
let mut font_system = font_system().write().unwrap();
self.with_buffer_mut(|buffer| buffer.set_metrics(font_system.raw(), metrics));
}
self.with_buffer_mut(|buffer| buffer.set_metrics(metrics));
update_cell_size = true;
}
@ -692,19 +710,13 @@ impl Terminal {
let (cell_width, cell_height) = {
let mut font_system = font_system().write().unwrap();
self.with_buffer_mut(|buffer| {
buffer.set_wrap(font_system.raw(), Wrap::None);
buffer.set_wrap(Wrap::None);
// Use size of space to determine cell size
buffer.set_text(
font_system.raw(),
" ",
&default_attrs,
Shaping::Advanced,
None,
);
buffer.set_text(" ", &default_attrs, Shaping::Advanced, None);
let layout = buffer.line_layout(font_system.raw(), 0).unwrap();
let w = layout[0].w;
buffer.set_monospace_width(font_system.raw(), Some(w));
buffer.set_monospace_width(Some(w));
(w, buffer.metrics().line_height)
})
};
@ -868,13 +880,12 @@ impl Terminal {
}
// Change color if selected
if let Some(selection) = &term.selection {
if let Some(range) = selection.to_range(&term) {
if range.contains(indexed.point) {
//TODO: better handling of selection
mem::swap(&mut fg, &mut bg);
}
}
if let Some(selection) = &term.selection
&& let Some(range) = selection.to_range(&term)
&& range.contains(indexed.point)
{
//TODO: better handling of selection
mem::swap(&mut fg, &mut bg);
}
// Convert foreground to linear
@ -888,10 +899,10 @@ impl Terminal {
let mut flags = indexed.cell.flags;
if let Some(active_match) = &self.active_regex_match {
if active_match.contains(&indexed.point) {
flags |= Flags::UNDERLINE;
}
if let Some(active_match) = &self.active_regex_match
&& active_match.contains(&indexed.point)
{
flags |= Flags::UNDERLINE;
}
if let Some(active_id) = &self.active_hyperlink_id {
let mut matches_active = indexed
@ -1200,13 +1211,12 @@ impl<'a, T> Iterator for HintPostProcessor<'a, T> {
fn next(&mut self) -> Option<Self::Item> {
let next_match = self.next_match.take()?;
if self.start <= self.end {
if let Some(rm) = self
if self.start <= self.end
&& let Some(rm) = self
.term
.regex_search_right(self.regex, self.start, self.end)
{
self.next_processed_match(rm);
}
{
self.next_processed_match(rm);
}
Some(next_match)

View file

@ -10,17 +10,10 @@ use alacritty_terminal::{
use cosmic::{
Renderer,
cosmic_theme::palette::{WithAlpha, blend::Compose},
iced::{
Color, Element, Length, Padding, Point, Rectangle, Size, Vector,
advanced::graphics::text::Raw,
event::{Event, Status},
keyboard::{Event as KeyEvent, Key, Modifiers},
mouse::{self, Button, Event as MouseEvent, ScrollDelta},
window::RedrawRequest,
},
iced_core::{
iced::core::{
Border, Shell,
clipboard::Clipboard,
input_method::{self, InputMethod},
keyboard::key::Named,
layout::{self, Layout},
renderer::{self, Quad, Renderer as _},
@ -31,9 +24,16 @@ use cosmic::{
tree,
},
},
iced::{
Color, Element, Length, Padding, Point, Rectangle, Size, Vector,
advanced::graphics::text::Raw,
event::Event,
keyboard::{Event as KeyEvent, Key, Modifiers},
mouse::{self, Button, Event as MouseEvent, ScrollDelta},
},
theme::Theme,
};
use cosmic::{iced_core::SmolStr, widget::menu::key_bind::KeyBind};
use cosmic::{iced::core::SmolStr, widget::menu::key_bind::KeyBind};
use cosmic_text::LayoutGlyph;
use indexmap::IndexSet;
use std::{
@ -234,6 +234,49 @@ where
self.disabled = disabled;
self
}
fn input_method<'b>(
&self,
state: &'b State,
layout: Layout<'_>,
terminal: &std::sync::MutexGuard<'_, Terminal>,
) -> InputMethod<&'b str> {
if !state.is_focused {
return InputMethod::Disabled;
}
if self.context_menu.is_some() {
return InputMethod::Disabled;
}
let view_position = layout.position() + [self.padding.left, self.padding.top].into();
// Draw cursor
let cursor = terminal.term.lock().renderable_content().cursor;
let mut col = cursor.point.column.0;
let line = cursor.point.line.0;
let width = terminal.size().cell_width;
let mut cursor_position = Vector::<f32>::ZERO;
let mut line_height = 0.0;
terminal.with_buffer(|buffer| {
let layout = buffer.layout_runs().nth(line as usize).unwrap();
for glyph in layout.glyphs {
cursor_position.x += glyph.w;
let ch_width = if glyph.w > width { 2 } else { 1 };
if ch_width > col {
break;
}
col -= ch_width;
}
cursor_position.y = layout.line_top;
line_height = layout.line_height;
});
InputMethod::Enabled {
cursor: Rectangle::new(view_position + cursor_position, Size::new(1.0, line_height)),
purpose: input_method::Purpose::Normal,
preedit: state.preedit.as_ref().map(input_method::Preedit::as_ref),
}
}
}
pub fn terminal_box<'a, Message>(
@ -863,8 +906,8 @@ where
if is_mouse_mode {
state.autoscroll.stop();
} else {
if let Some((pointer, multiplier)) = state.autoscroll.next_due() {
if update_buffer_drag(
if let Some((pointer, multiplier)) = state.autoscroll.next_due()
&& update_buffer_drag(
state,
&mut terminal,
buffer_size,
@ -872,14 +915,15 @@ where
layout.bounds(),
self.padding,
multiplier,
) {
shell.capture_event();
}
)
{
shell.capture_event();
}
if state.autoscroll.is_active() {
shell.request_redraw();
}
}
shell.request_input_method(&self.input_method(state, layout, &terminal));
}
cosmic::iced::window::Event::Unfocused => {
state.is_focused = false;
@ -1161,6 +1205,28 @@ where
}
}
}
Event::InputMethod(event) => match event {
input_method::Event::Opened | input_method::Event::Closed => {
state.preedit = matches!(event, input_method::Event::Opened)
.then(input_method::Preedit::new);
}
input_method::Event::Preedit(content, selection) => {
if state.is_focused {
let metrics = terminal.with_buffer(|buffer| buffer.metrics());
state.preedit = Some(input_method::Preedit {
content: content.to_owned(),
selection: selection.clone(),
text_size: Some(metrics.font_size.into()),
})
}
}
input_method::Event::Commit(text) => {
if state.is_focused {
terminal.paste(text.to_string());
shell.capture_event();
}
}
},
Event::Mouse(MouseEvent::ButtonPressed(button)) => {
if let Some(p) = cursor_position.position_in(layout.bounds()) {
let x = p.x - self.padding.left;
@ -1300,8 +1366,13 @@ where
None,
);
let link = get_hyperlink(&terminal, location);
let abs = cosmic::iced::Point::new(
layout.bounds().x + p.x,
layout.bounds().y + p.y,
);
shell.publish(on_context_menu(Some(MenuState {
position: Some(p),
position: Some(abs),
local_position: Some(p),
link,
})));
}
@ -1310,25 +1381,26 @@ where
}
shell.capture_event();
}
} else {
state.is_focused = false;
}
}
Event::Mouse(MouseEvent::ButtonReleased(Button::Left)) => {
state.autoscroll.stop();
if let Some(dragging) = state.dragging.take() {
if let Dragging::Buffer {
if let Some(dragging) = state.dragging.take()
&& let Dragging::Buffer {
last_point,
last_side,
..
} = dragging
{
{
{
let mut term = terminal.term.lock();
if let Some(selection) = &mut term.selection {
selection.update(last_point, last_side);
}
let mut term = terminal.term.lock();
if let Some(selection) = &mut term.selection {
selection.update(last_point, last_side);
}
terminal.needs_update = true;
}
terminal.needs_update = true;
}
if let Some(p) = cursor_position.position_in(layout.bounds()) {
let x = p.x - self.padding.left;
@ -1339,13 +1411,12 @@ where
let location = terminal
.viewport_to_point(TermPoint::new(row as usize, TermColumn(col as usize)));
if state.modifiers.control() {
if let Some(on_open_hyperlink) = &self.on_open_hyperlink {
if let Some(hyperlink) = get_hyperlink(&terminal, location) {
shell.publish(on_open_hyperlink(hyperlink));
shell.capture_event();
}
}
if state.modifiers.control()
&& let Some(on_open_hyperlink) = &self.on_open_hyperlink
&& let Some(hyperlink) = get_hyperlink(&terminal, location)
{
shell.publish(on_open_hyperlink(hyperlink));
shell.capture_event();
}
if is_mouse_mode {
@ -1358,8 +1429,6 @@ where
} else {
shell.capture_event();
}
} else {
shell.capture_event();
}
}
Event::Mouse(MouseEvent::ButtonReleased(_button)) => {
@ -1650,10 +1719,10 @@ fn update_active_regex_match(
.find(|bounds| bounds.contains(&location))
{
'update: {
if let Some(active_match) = &terminal.active_regex_match {
if active_match == match_ {
break 'update;
}
if let Some(active_match) = &terminal.active_regex_match
&& active_match == match_
{
break 'update;
}
terminal.active_regex_match = Some(match_.clone());
terminal.needs_update = true;
@ -1714,6 +1783,7 @@ enum EdgeScrollDirection {
Bottom,
}
#[allow(clippy::too_many_arguments)]
fn edge_scroll_adjustment(
y: f32,
buffer_height: f32,
@ -1866,6 +1936,7 @@ pub struct State {
scroll_pixels: f32,
scrollbar_rect: Cell<Rectangle<f32>>,
autoscroll: DragAutoscroll,
preedit: Option<input_method::Preedit>,
}
impl State {
@ -1879,6 +1950,7 @@ impl State {
scroll_pixels: 0.0,
scrollbar_rect: Cell::new(Rectangle::default()),
autoscroll: DragAutoscroll::new(AUTOSCROLL_INTERVAL),
preedit: None,
}
}
}