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 - name: Check formatting
run: cargo fmt --all -- --check 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] [package]
name = "cosmic-term" name = "cosmic-term"
version = "1.0.8" version = "1.0.13"
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"
@ -36,18 +36,20 @@ thiserror = { version = "2.0", optional = true }
secstr = { version = "0.5", optional = true } secstr = { version = "0.5", optional = true }
[dependencies.cosmic-files] [dependencies.cosmic-files]
git = "https://github.com/pop-os/cosmic-files.git" path = "../cosmic-files"
default-features = false default-features = false
[dependencies.cosmic-text] [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"] features = ["monospace_fallback", "shape-run-cache"]
[dependencies.libcosmic] [dependencies.cosmic]
git = "https://github.com/pop-os/libcosmic.git" package = "libcosmic-yoda"
path = "../libcosmic"
default-features = false default-features = false
#TODO: a11y feature crashes file chooser dialog #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] [target.'cfg(unix)'.dependencies]
fork = "0.4" fork = "0.4"
@ -57,9 +59,9 @@ xdgen = "0.1"
[features] [features]
default = ["dbus-config", "wgpu", "wayland", "password_manager"] default = ["dbus-config", "wgpu", "wayland", "password_manager"]
dbus-config = ["libcosmic/dbus-config"] dbus-config = ["cosmic/dbus-config"]
wgpu = ["libcosmic/wgpu", "cosmic-files/wgpu"] wgpu = ["cosmic/wgpu", "cosmic-files/wgpu"]
wayland = ["libcosmic/wayland", "cosmic-files/wayland"] wayland = ["cosmic/wayland", "cosmic-files/wayland"]
password_manager = ["secret-service", "thiserror", "secstr"] password_manager = ["secret-service", "thiserror", "secstr"]
[profile.release-with-debug] [profile.release-with-debug]
@ -67,7 +69,29 @@ inherits = "release"
debug = true debug = true
#[patch.'https://github.com/pop-os/libcosmic'] [patch.'https://github.com/pop-os/libcosmic']
#libcosmic = { path = "../libcosmic" } cosmic-config = { path = "../libcosmic/cosmic-config" }
#cosmic-config = { path = "../libcosmic/cosmic-config" } cosmic-theme = { path = "../libcosmic/cosmic-theme" }
#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 cosmic-term (1.0.8) noble; urgency=medium
* Epoch 1.0.8 version update * Epoch 1.0.8 version update

View file

@ -30,7 +30,7 @@ tab-title-description = تجاوز عنوان اللسان المبدئي
add-profile = أضف ملف تعريف add-profile = أضف ملف تعريف
new-profile = ملف تعريف جديد new-profile = ملف تعريف جديد
make-default = اجعله المبدئي make-default = اجعله المبدئي
working-directory = مجلد العمل working-directory = المجلَّد الحالي
hold = التعليق hold = التعليق
remain-open = البقاء مفتوحًا بعد خروج العملية الفرعية. remain-open = البقاء مفتوحًا بعد خروج العملية الفرعية.
@ -138,10 +138,12 @@ shortcut-group-clipboard = الحافظة
shortcut-group-other = أخرى shortcut-group-other = أخرى
shortcut-group-tabs = ألسنة shortcut-group-tabs = ألسنة
shortcut-group-window = نافذة shortcut-group-window = نافذة
shortcut-group-zoom = كبِّر shortcut-group-zoom = تكبير
shortcut-replace-body = عُيِّن { $binding } بالفعل لـ { $existing }. أتريد استبداله بـ { $new_action }؟ shortcut-replace-body = عُيِّن { $binding } بالفعل لـ { $existing }. أتريد استبداله بـ { $new_action }؟
shortcut-replace-title = استبدل الاختصار؟ shortcut-replace-title = استبدل الاختصار؟
tab-activate = نشّط لسان { $number } 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-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-font-weight = Normální tloušťka písma
default-dim-font-weight = Tenká tloušťka písma default-dim-font-weight = Tenká tloušťka písma
default-bold-font-weight = Tučná 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í 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é
@ -86,7 +86,7 @@ disable = Zakázat
keyboard-shortcuts = Klávesové zkratky keyboard-shortcuts = Klávesové zkratky
menu-keyboard-shortcuts = Klávesové zkratky... menu-keyboard-shortcuts = Klávesové zkratky...
no-shortcuts = Žádné zkratky no-shortcuts = Žádné zkratky
password-manager = Manažer hesel password-manager = Správce hesel
replace = Nahradit replace = Nahradit
reset-to-default = Obnovit výchozí reset-to-default = Obnovit výchozí
shortcut-group-clipboard = Schránka 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 shortcut-capture-hint = Stiskněte kombinaci kláves
paste-primary = Vložit primární paste-primary = Vložit primární
copy-link = Kopírovat odkaz 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 make-default = Als Standard festlegen
working-directory = Arbeitsverzeichnis working-directory = Arbeitsverzeichnis
hold = Halten hold = Halten
remain-open = Nach Beendigung des Kindprozesses offen bleiben. remain-open = Nach Beendigung des untergeordneten Prozesses geöffnet lassen.
## Einstellungen ## Einstellungen
@ -38,7 +38,7 @@ settings = Einstellungen
appearance = Aussehen appearance = Aussehen
theme = Thema theme = Thema
match-desktop = An System anpassen match-desktop = An Desktop anpassen
dark = Dunkel dark = Dunkel
light = Hell light = Hell
syntax-dark = Dunkles Farbschema syntax-dark = Dunkles Farbschema
@ -67,7 +67,7 @@ focus-follow-mouse = Tippfokus folgt Maus
advanced = Erweitert advanced = Erweitert
show-headerbar = Kopfzeile anzeigen show-headerbar = Kopfzeile anzeigen
show-header-description = Kopfzeile über das Rechtsklickmenü einblenden. 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
@ -141,3 +141,11 @@ 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
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 cosmic-terminal = Τερματικό COSMIC
new-terminal = Νέος Τερματικός new-terminal = Νέο τερματικό
# Context Pages # Context Pages
@ -14,7 +14,7 @@ rename = Μετονομασία
export = Εξαγωγή export = Εξαγωγή
delete = Διαγραφή delete = Διαγραφή
import = Εισαγωγή import = Εισαγωγή
import-errors = Προβλήματα Εισαγωγής import-errors = Σφάλματα εισαγωγής
## Profiles ## Profiles
@ -22,16 +22,16 @@ profiles = Προφίλ
name = Όνομα name = Όνομα
command-line = Γραμμή εντολών 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 = Κατάλογος εργασίας
## alt: Παύση ## alt: Παύση
hold = Κράτηση hold = Διατήρηση
remain-open = Παραμένει ανοιχτό μετά την έξοδο της θυγατρικής διεργασίας remain-open = Παραμένει ανοικτό μετά την έξοδο από τη θυγατρική διεργασία.
## Settings ## Settings
@ -41,13 +41,13 @@ settings = Ρυθμίσεις
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
@ -56,21 +56,21 @@ advanced-font-settings = Προηγμένες ρυθμίσεις γραμματ
default-font = Γραμματοσειρά default-font = Γραμματοσειρά
default-font-size = Μέγεθος γραμματοσειράς default-font-size = Μέγεθος γραμματοσειράς
default-font-stretch = Τέντωμα γραμματοσειράς default-font-stretch = Τέντωμα γραμματοσειράς
default-font-weight = Βάρος κανονικής γραμματοσειράς default-font-weight = Πάχος κανονικής γραμματοσειράς
default-dim-font-weight = Βάρος θαμπής γραμματοσειράς default-dim-font-weight = Πάχος θαμπής γραμματοσειράς
default-bold-font-weight = Βάρος έντονης γραμματοσειράς default-bold-font-weight = Πάχος έντονης γραμματοσειράς
use-bright-bold = Κάνε το έντονο κείμενο πιο φωτεινό use-bright-bold = Να εμφανίζεται πιο φωτεινό το κείμενο με έντονη γραφή
### Splits ### Splits
splits = Διαχωρισμός splits = Διαχωρισμοί
focus-follow-mouse = H πληκτρολόγηση να ακολουθεί το ποντίκι focus-follow-mouse = Να ακολουθεί η εστίαση πληκτρολόγησης το ποντίκι
### Advanced ### Advanced
advanced = Προχωρημένα advanced = Σύνθετες επιλογές
show-headerbar = Εμφάνιση κεφαλίδας show-headerbar = Εμφάνιση κεφαλίδας
show-header-description = Εμφανήστε την κεφαλίδα από το μενού δεξιού κλικ. show-header-description = Εμφάνιση της κεφαλίδας από το μενού δεξιού κλικ
# Find # Find
find-placeholder = Εύρεση... find-placeholder = Εύρεση...
find-previous = Εύρεση προηγούμενου find-previous = Εύρεση προηγούμενου
@ -82,12 +82,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
@ -99,19 +99,56 @@ find = Εύρεση
## View ## View
view = Εμφάνιση view = Προβολή
zoom-in = Μεγέθυνση κείμενου zoom-in = Μεγαλύτερο κείμενο
zoom-reset = Επαναφορά κειμένου zoom-reset = Προεπιλεγμένο μέγεθος κειμένου
zoom-out = Σμίκρυνση κείμενου zoom-out = Μικρότερο κείμενο
next-tab = Επόμενη ταμπέλα next-tab = Επόμενη καρτέλα
previous-tab = Προηγούμενη ταμπέλα previous-tab = Προηγούμενη καρτέλα
split-horizontal = Οριζόντιος διαχωρισμός split-horizontal = Οριζόντιος διαχωρισμός
split-vertical = Κάθετος διαχωρισμός split-vertical = Κάθετος διαχωρισμός
pane-toggle-maximize = Εναλλαγή μεγέθυνσης pane-toggle-maximize = Εναλλαγή μεγιστοποίησης
menu-color-schemes = Χρωματικοί συνδυασμοί... menu-color-schemes = Χρωματικοί συνδυασμοί...
menu-settings = Ρυθμίσεις... menu-settings = Ρυθμίσεις...
menu-about = Σχετικά με τον τερματικό COSMIC... menu-about = Σχετικά με το Τερματικό COSMIC...
repository = Αποθετήριο repository = Αποθετήριο
support = Υποστήριξη support = Υποστήριξη
cancel = Ακύρωση 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 advanced = Advanced
show-headerbar = Show header show-headerbar = Show header
show-header-description = Reveal the header from the right-click menu 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 ### Keyboard shortcuts
add-another-keybinding = Add another keybinding add-another-keybinding = Add another keybinding
cancel = Cancel cancel = Cancel
close-window = Close window close-window = Close window
confirm = Confirm
copy-or-sigint = Copy or SIGINT copy-or-sigint = Copy or SIGINT
disable = Disable disable = Disable
focus-pane-down = Focus pane down focus-pane-down = Focus pane down
@ -81,6 +84,7 @@ password-manager = Password manager
paste-primary = Paste primary paste-primary = Paste primary
replace = Replace replace = Replace
reset-to-default = Reset to default reset-to-default = Reset to default
reset = Reset
shortcut-capture-hint = Press the key combination shortcut-capture-hint = Press the key combination
shortcut-group-clipboard = Clipboard shortcut-group-clipboard = Clipboard
shortcut-group-other = Other 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-body = { $binding } is already assigned to { $existing }. Replace it with { $new_action }?
shortcut-replace-title = Replace shortcut? shortcut-replace-title = Replace shortcut?
tab-activate = Activate tab { $number } tab-activate = Activate tab { $number }
rename-tab = Rename tab
tab-name-placeholder = Tab name
tab-rename-title = Rename tab
toggle-fullscreen = Toggle fullscreen toggle-fullscreen = Toggle fullscreen
type-to-search = Type to search... type-to-search = Type to search...

View file

@ -68,6 +68,8 @@ focus-follow-mouse = El enfoque de escritura sigue al mouse
advanced = Avanzado advanced = Avanzado
show-headerbar = Mostrar encabezado show-headerbar = Mostrar encabezado
show-header-description = Mostrar el encabezado desde el menú contextual. 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
find-placeholder = Buscar... find-placeholder = Buscar...
find-previous = Buscar anterior find-previous = Buscar anterior

View file

@ -70,6 +70,8 @@ focus-follow-mouse = Enfoque del tecleo sigue el ratón
advanced = Avanzado advanced = Avanzado
show-headerbar = Mostrar encabezado show-headerbar = Mostrar encabezado
show-header-description = Mostrar encabezado desde el menú del clic secundario. 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
find-placeholder = Buscar... find-placeholder = Buscar...
find-previous = Buscar previo 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 export = Vie
delete = Poista delete = Poista
import = Tuo import = Tuo
import-errors = Tuo virheet import-errors = Tuotaessa tapahtuneet virheet
## Profiles ## Profiles
@ -26,9 +26,9 @@ tab-title-description = Ylikirjoita välilehden oletusotsikko
add-profile = Lisää profiili add-profile = Lisää profiili
new-profile = Uusi profiili new-profile = Uusi profiili
make-default = Aseta oletukseksi make-default = Aseta oletukseksi
working-directory = Työkansio working-directory = Työhakemisto
hold = Pidä hold = Pidä
remain-open = Pysy auki lapsiprosessin sulkeutumisen jälkeen. remain-open = Pysy avoinna lapsiprosessin sulkeutumisen jälkeen.
## Settings ## Settings
@ -38,13 +38,13 @@ settings = Asetukset
appearance = Ulkoasu appearance = Ulkoasu
theme = Teema theme = Teema
match-desktop = Sovita työpöydän kanssa 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
syntax-light = Vaalea väriteema syntax-light = Vaalea väriteema
default-zoom-step = Zoomausaskeleet default-zoom-step = Zoomauksen askeleet
opacity = Taustan läpinäkyvyys opacity = Taustan peittävyys
### Font ### Font
@ -52,11 +52,11 @@ font = Fontti
advanced-font-settings = Fontin lisäasetukset advanced-font-settings = Fontin lisäasetukset
default-font = Fontti default-font = Fontti
default-font-size = Fontin koko default-font-size = Fontin koko
default-font-stretch = Kirjasimen venyvyys default-font-stretch = Fontin venyvyys
default-font-weight = Oletuskirjasimen paino default-font-weight = Fontin normaalipaino
default-dim-font-weight = Kirjasimen painon himmennys default-dim-font-weight = Himmennetyn fontin paino
default-bold-font-weight = Paksun kirjasimen paino default-bold-font-weight = Lihavoidun fontin paino
use-bright-bold = Näytä paksu kirjasin kirkkaana use-bright-bold = Näytä lihavoitu teksti kirkkaampana
### Splits ### Splits
@ -67,7 +67,7 @@ focus-follow-mouse = Kirjoituksen kohdistus seuraa hiirtä
advanced = Lisäasetukset advanced = Lisäasetukset
show-headerbar = Näytä otsake show-headerbar = Näytä otsake
show-header-description = Paljasta otsake hiiren oikean painikkeen valikosta. show-header-description = Paljasta otsake hiiren oikean painikkeen valikosta
# Find # Find
@ -107,7 +107,7 @@ next-tab = Seuraava välilehti
previous-tab = Edellinen välilehti previous-tab = Edellinen välilehti
split-horizontal = Halkaise näkymä vaakasuunnassa split-horizontal = Halkaise näkymä vaakasuunnassa
split-vertical = Halkaise näkymä pystysuunnassa 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-color-schemes = Väriteemat…
menu-settings = Asetukset… menu-settings = Asetukset…
menu-about = Tietoa COSMICin päätteestä… menu-about = Tietoa COSMICin päätteestä…
@ -134,3 +134,20 @@ menu-keyboard-shortcuts = Pikanäppäimet…
tab-activate = Aktivoi välilehti { $number } tab-activate = Aktivoi välilehti { $number }
type-to-search = Etsi kirjoittamalla… type-to-search = Etsi kirjoittamalla…
password-manager = Salasanahallinta 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 add-another-keybinding = Ajouter un autre raccourci clavier
cancel = Annuler cancel = Annuler
close-window = Fermer la fenêtre close-window = Fermer la fenêtre
confirm = Confirmer
copy-or-sigint = Copier ou SIGINT copy-or-sigint = Copier ou SIGINT
disable = Désactiver disable = Désactiver
keyboard-shortcuts = Raccourcis clavier 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-right = Passer au panneau de droite
focus-pane-up = Passer au panneau du dessus focus-pane-up = Passer au panneau du dessus
reset-to-default = Rétablir les paramètres par défaut reset-to-default = Rétablir les paramètres par défaut
reset = Réinitialiser
toggle-fullscreen = Basculer en plein écran 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 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 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-size = Betűméret
default-font-stretch = Betűszélesség default-font-stretch = Betűszélesség
default-font-weight = Normál betűsúly 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 default-bold-font-weight = Félkövér betűsúly
use-bright-bold = Félkövér szöveg világosítása 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 toggle-fullscreen = Teljes képernyő váltása
type-to-search = Gépelj a kereséshez… 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 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 comment = Emulator terminal untuk desktop COSMIC
keywords = Perintah;Shell;Terminal;CLI; keywords = Perintah;Shell;Terminal;CLI;
copy-link = Salin Tautan 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 advanced = Avanzate
show-headerbar = Mostra intestazione show-headerbar = Mostra intestazione
show-header-description = Mostra intestazione dal menu click destro. 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
find-placeholder = Trova... find-placeholder = Trova...
find-previous = Trova precedente 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 жұмыс үстелі үшін терминал эмуляторы 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-description = Жаңа беттерді белсенді беттің жұмыс бумасында ашу

View file

@ -51,7 +51,7 @@ default-dim-font-weight = 희미한 글꼴 굵기
advanced = 고급 advanced = 고급
use-bright-bold = 굵은 텍스트를 더 밝게 표시 use-bright-bold = 굵은 텍스트를 더 밝게 표시
default-bold-font-weight = 굵은 글꼴 굵기 default-bold-font-weight = 굵은 글꼴 굵기
show-header-description = 오른쪽 클릭 메뉴를 통해 헤더를 나타냅니다. show-header-description = 우클릭 메뉴를 통해 헤더를 나타냅니다
password-input-description = 설명 password-input-description = 설명
default-font = 글꼴 default-font = 글꼴
paste = 붙여넣기 paste = 붙여넣기
@ -78,3 +78,23 @@ find = 찾기
profile = 프로필 profile = 프로필
new-tab = 새 탭 new-tab = 새 탭
comment = COSMIC 데스크톱용 터미널 에뮬레이터 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 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 = Nustatymai settings = Nuostatos
appearance = Išvaizda appearance = Išvaizda
theme = Stilius theme = Stilius
match-desktop = Pagal darbalaukio temą match-desktop = Pagal darbalaukio temą
default-zoom-step = Priartinimo žingsniai default-zoom-step = Artinimo žingsniai
opacity = Fono skaidrumas opacity = Fono skaidrumas
font = Šriftas font = Šriftas
advanced-font-settings = Išplėstiniai šrifto nustatymai advanced-font-settings = Išplėstiniai šrifto nustatymai
@ -38,9 +38,9 @@ focus-follow-mouse = Teksto laukelio aktyvavimas sekant žymeklį
advanced = Išplėstiniai advanced = Išplėstiniai
show-headerbar = Rodyti antraštę show-headerbar = Rodyti antraštę
show-header-description = Rodyti antraštę kontekstiname meniu atidaromu dešiniu klavišu show-header-description = Rodyti antraštę kontekstiname meniu atidaromu dešiniu klavišu
find-placeholder = Surasti... find-placeholder = Rasti...
find-previous = Atgalinis ieškojimas find-previous = Ieškoti ankstesnio
find-next = Ieškoti sekančio find-next = Ieškoti tolesnio
file = Failas file = Failas
new-tab = Naujas skirtukas new-tab = Naujas skirtukas
new-window = Naujas langas new-window = Naujas langas
@ -50,9 +50,9 @@ close-tab = Uždaryti skirtuką
quit = Išeiti quit = Išeiti
edit = Redaguoti edit = Redaguoti
copy = Kopijuoti copy = Kopijuoti
paste = Įklijuoti paste = Įdėti
select-all = Pažymėti viską select-all = Žymėti viską
find = Surasti find = Rasti
clear-scrollback = Išvalyti scrollback clear-scrollback = Išvalyti scrollback
open-link = Atidaryti Nuorodą open-link = Atidaryti Nuorodą
view = Rodymas view = Rodymas
@ -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 = Nustatymai... 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
@ -82,12 +82,12 @@ cancel = Atšaukti
close-window = Uždaryti langą close-window = Uždaryti langą
copy-or-sigint = Kopijuoti arba SIGINT copy-or-sigint = Kopijuoti arba SIGINT
disable = Išjungti disable = Išjungti
keyboard-shortcuts = Klaviatūros greitieji klavišai keyboard-shortcuts = Spartieji klavišai
menu-keyboard-shortcuts = Klaviatūros greitieji klavišai... menu-keyboard-shortcuts = Spartieji klavišai...
no-shortcuts = Nėra nustatytų klaviatūros derinių no-shortcuts = Nėra nustatytų klaviatūros derinių
password-manager = Slaptažodžių tvarkyklė password-manager = Slaptažodžių tvarkyklė
paste-primary = Įklijuotiį pirminį paste-primary = Įklijuotiį pirminį
replace = Pakeisti replace = Keisti
reset-to-default = Nustatyti į numatytąjį reset-to-default = Nustatyti į numatytąjį
shortcut-capture-hint = Nuspauskite klavišų derinį shortcut-capture-hint = Nuspauskite klavišų derinį
shortcut-group-clipboard = Iškarpinė shortcut-group-clipboard = Iškarpinė
@ -101,3 +101,4 @@ tab-activate = Aktyvuoti skirtuką { $number }
toggle-fullscreen = Įjungti/išjungti viso ekrano režimą toggle-fullscreen = Įjungti/išjungti viso ekrano režimą
type-to-search = Norint ieškoti, pradėkite rašyti… type-to-search = Norint ieškoti, pradėkite rašyti…
copy-link = Kopijuoti Nuorodą copy-link = Kopijuoti Nuorodą
syntax-dark = Tamsi spalvų paletė

View file

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

View file

@ -147,3 +147,5 @@ focus-pane-left = Aktywuj lewy panel
focus-pane-right = Aktywuj prawy panel focus-pane-right = Aktywuj prawy panel
focus-pane-up = Aktywuj panel wyżej focus-pane-up = Aktywuj panel wyżej
copy-link = Skopiuj Odnośnik 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-color-schemes = Esquemas de cores...
menu-settings = Configurações... menu-settings = Configurações...
menu-about = Sobre o Terminal... menu-about = Sobre o Terminal...
open-link = Abrir Link open-link = Abrir link
menu-password-manager = Senhas... menu-password-manager = Senhas...
passwords-title = Senhas passwords-title = Senhas
add-password = Adicionar Senha add-password = Adicionar senha
password-input = Senha password-input = Senha
password-input-description = Descrição password-input-description = Descrição
add-another-keybinding = Adicionar outra combinação de teclas add-another-keybinding = Adicionar outra combinação de teclas
@ -124,15 +124,15 @@ cancel = Cancelar
close-window = Fechar janela close-window = Fechar janela
copy-or-sigint = Copiar ou SIGINT copy-or-sigint = Copiar ou SIGINT
disable = Desabilitar disable = Desabilitar
focus-pane-down = Focar painel abaixo focus-pane-down = Focar o quadro abaixo
focus-pane-left = Focar painel à esquerda focus-pane-left = Focar o quadro à esquerda
focus-pane-right = Focar painel à direita focus-pane-right = Focar o quadro à direita
focus-pane-up = Focar painel acima focus-pane-up = Focar o quadro acima
keyboard-shortcuts = Atalhos de teclado keyboard-shortcuts = Atalhos de teclado
menu-keyboard-shortcuts = Atalhos de teclado... menu-keyboard-shortcuts = Atalhos de teclado...
no-shortcuts = Sem atalhos no-shortcuts = Sem atalhos
password-manager = Gerenciador de senhas password-manager = Gerenciador de senhas
paste-primary = Colar paste-primary = Colar primário
replace = Substituir replace = Substituir
reset-to-default = Restaurar padrão reset-to-default = Restaurar padrão
shortcut-capture-hint = Pressione a combinação de teclas shortcut-capture-hint = Pressione a combinação de teclas
@ -146,4 +146,6 @@ shortcut-replace-title = Substituir atalho?
tab-activate = Ativar aba { $number } tab-activate = Ativar aba { $number }
toggle-fullscreen = Alternar para tela cheia toggle-fullscreen = Alternar para tela cheia
type-to-search = Digite para pesquisar... 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 = Вкл./выкл. полноэкранный режим toggle-fullscreen = Вкл./выкл. полноэкранный режим
type-to-search = Введите для поиска... type-to-search = Введите для поиска...
copy-link = Копировать ссылку 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-tabs = Flikar
shortcut-group-zoom = Zooma shortcut-group-zoom = Zooma
copy-link = Kopiera länk 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 comment = Емулятор терміналу для середовища COSMIC
keywords = Команда;Оболонка;Термінал;Інтерфейс;CLI; keywords = Команда;Оболонка;Термінал;Інтерфейс;CLI;
copy-link = Копіювати ланку copy-link = Копіювати ланку
tab-new-inherit-working-directory = У нових вкладках використовується поточний каталог
tab-new-inherit-working-directory-description = Відкривати нові вкладки в робочому каталозі активної вкладки

View file

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

View file

@ -1,5 +1,5 @@
cosmic-terminal = COSMIC 終端機 cosmic-terminal = COSMIC 終端機
new-terminal = 新增 終端機 new-terminal = 新建終端機
# Context Pages # Context Pages
@ -9,7 +9,7 @@ new-terminal = 新增 終端機
## Color schemes ## Color schemes
color-schemes = 主題 color-schemes = 配色方案
rename = 重命名 rename = 重命名
export = 匯出 export = 匯出
delete = 刪除 delete = 刪除
@ -38,36 +38,36 @@ settings = 設定
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
font = 字體 font = 字型
advanced-font-settings = 進階字體設定 advanced-font-settings = 進階字型設定
default-font = 字體 default-font = 字型
default-font-size = 字體大小 default-font-size = 字型大小
default-font-stretch = 字體延伸 default-font-stretch = 字型伸展
default-font-weight = 字體粗細 default-font-weight = 正常字型粗細
default-dim-font-weight = 淡色字體粗細 default-dim-font-weight = 黯淡字型粗細
default-bold-font-weight = 粗字體粗細 default-bold-font-weight = 粗體字型粗細
use-bright-bold = 使粗體字更亮 use-bright-bold = 使粗體文字更亮
### Splits ### Splits
splits = 終端介面分割 splits = 分割
focus-follow-mouse = 滑鼠點擊選擇輸入窗口 focus-follow-mouse = 輸入焦點追隨滑鼠
### Advanced ### Advanced
advanced = 進階 advanced = 進階
show-headerbar = 顯示標題列 show-headerbar = 顯示標題列
show-header-description = 右鍵選單提供標題列選項。 show-header-description = 右鍵選單提供標題列選項
# Find # Find
find-placeholder = 尋找... find-placeholder = 尋找...
find-previous = 上一個 find-previous = 上一個
@ -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
@ -97,14 +97,55 @@ find = 尋找
## View ## View
view = 檢視 view = 檢視
zoom-in = 放大文字 zoom-in = 較大文字
zoom-reset = 重設文字大小 zoom-reset = 預設文字大小
zoom-out = 縮小文字 zoom-out = 較小文字
next-tab = 下個分頁 next-tab = 下個分頁
previous-tab = 上個分頁 previous-tab = 上個分頁
split-horizontal = 水平分割 split-horizontal = 水平分割
split-vertical = 垂直分割 split-vertical = 垂直分割
pane-toggle-maximize = 切換最大化 pane-toggle-maximize = 切換最大化
menu-color-schemes = 主題... menu-color-schemes = 配色方案...
menu-settings = 設定... 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_dark: String,
pub syntax_theme_light: String, pub syntax_theme_light: String,
pub focus_follow_mouse: bool, pub focus_follow_mouse: bool,
#[serde(default)]
pub tab_new_inherit_working_directory: bool,
pub default_profile: Option<ProfileId>, pub default_profile: Option<ProfileId>,
#[serde(default)] #[serde(default)]
pub shortcuts_custom: Shortcuts, pub shortcuts_custom: Shortcuts,
@ -249,6 +251,7 @@ impl Default for Config {
color_schemes_light: BTreeMap::new(), color_schemes_light: BTreeMap::new(),
dim_font_weight: Weight::NORMAL.0, dim_font_weight: Weight::NORMAL.0,
focus_follow_mouse: false, focus_follow_mouse: false,
tab_new_inherit_working_directory: false,
font_name: "Noto Sans Mono".to_string(), font_name: "Noto Sans Mono".to_string(),
font_size: 14, font_size: 14,
font_size_zoom_step_mul_100: 100, 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::{ use cosmic::{
Element, Element,
app::Core, app::Core,
iced::core::Border,
iced::{Background, Length, advanced::widget::text::Style as TextStyle}, iced::{Background, Length, advanced::widget::text::Style as TextStyle},
iced_core::Border,
theme, theme,
widget::{ widget::{
self, divider, self, divider,
@ -26,6 +26,7 @@ static MENU_ID: LazyLock<cosmic::widget::Id> =
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct MenuState { pub struct MenuState {
pub position: Option<Point>, pub position: Option<Point>,
pub local_position: Option<Point>,
pub link: Option<String>, pub link: Option<String>,
} }
@ -93,7 +94,9 @@ pub fn context_menu<'a>(
)), )),
Element::from(divider::horizontal::light()), Element::from(divider::horizontal::light()),
Element::from(menu_item(fl!("new-tab"), Action::TabNew)), 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-settings"), Action::Settings)),
Element::from(menu_item(fl!("menu-about"), Action::About)),
]; ];
#[cfg(feature = "password_manager")] #[cfg(feature = "password_manager")]
{ {
@ -223,6 +226,7 @@ pub fn menu_bar<'a>(
MenuItem::Folder(fl!("profile"), profile_items), MenuItem::Folder(fl!("profile"), profile_items),
MenuItem::Button(fl!("menu-profiles"), None, Action::Profiles), MenuItem::Button(fl!("menu-profiles"), None, Action::Profiles),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("rename-tab"), None, Action::TabRename),
MenuItem::Button(fl!("close-tab"), None, Action::TabClose), MenuItem::Button(fl!("close-tab"), None, Action::TabClose),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("quit"), None, Action::WindowClose), MenuItem::Button(fl!("quit"), None, Action::WindowClose),

View file

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

View file

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

View file

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

View file

@ -10,17 +10,10 @@ use alacritty_terminal::{
use cosmic::{ use cosmic::{
Renderer, Renderer,
cosmic_theme::palette::{WithAlpha, blend::Compose}, cosmic_theme::palette::{WithAlpha, blend::Compose},
iced::{ iced::core::{
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::{
Border, Shell, Border, Shell,
clipboard::Clipboard, clipboard::Clipboard,
input_method::{self, InputMethod},
keyboard::key::Named, keyboard::key::Named,
layout::{self, Layout}, layout::{self, Layout},
renderer::{self, Quad, Renderer as _}, renderer::{self, Quad, Renderer as _},
@ -31,9 +24,16 @@ use cosmic::{
tree, 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, 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 cosmic_text::LayoutGlyph;
use indexmap::IndexSet; use indexmap::IndexSet;
use std::{ use std::{
@ -234,6 +234,49 @@ where
self.disabled = disabled; self.disabled = disabled;
self 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>( pub fn terminal_box<'a, Message>(
@ -863,8 +906,8 @@ where
if is_mouse_mode { if is_mouse_mode {
state.autoscroll.stop(); state.autoscroll.stop();
} else { } else {
if let Some((pointer, multiplier)) = state.autoscroll.next_due() { if let Some((pointer, multiplier)) = state.autoscroll.next_due()
if update_buffer_drag( && update_buffer_drag(
state, state,
&mut terminal, &mut terminal,
buffer_size, buffer_size,
@ -872,14 +915,15 @@ where
layout.bounds(), layout.bounds(),
self.padding, self.padding,
multiplier, multiplier,
) { )
shell.capture_event(); {
} shell.capture_event();
} }
if state.autoscroll.is_active() { if state.autoscroll.is_active() {
shell.request_redraw(); shell.request_redraw();
} }
} }
shell.request_input_method(&self.input_method(state, layout, &terminal));
} }
cosmic::iced::window::Event::Unfocused => { cosmic::iced::window::Event::Unfocused => {
state.is_focused = false; 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)) => { Event::Mouse(MouseEvent::ButtonPressed(button)) => {
if let Some(p) = cursor_position.position_in(layout.bounds()) { if let Some(p) = cursor_position.position_in(layout.bounds()) {
let x = p.x - self.padding.left; let x = p.x - self.padding.left;
@ -1300,8 +1366,13 @@ where
None, None,
); );
let link = get_hyperlink(&terminal, location); 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 { shell.publish(on_context_menu(Some(MenuState {
position: Some(p), position: Some(abs),
local_position: Some(p),
link, link,
}))); })));
} }
@ -1310,25 +1381,26 @@ where
} }
shell.capture_event(); shell.capture_event();
} }
} else {
state.is_focused = false;
} }
} }
Event::Mouse(MouseEvent::ButtonReleased(Button::Left)) => { Event::Mouse(MouseEvent::ButtonReleased(Button::Left)) => {
state.autoscroll.stop(); state.autoscroll.stop();
if let Some(dragging) = state.dragging.take() { if let Some(dragging) = state.dragging.take()
if let Dragging::Buffer { && let Dragging::Buffer {
last_point, last_point,
last_side, last_side,
.. ..
} = dragging } = dragging
{
{ {
{ let mut term = terminal.term.lock();
let mut term = terminal.term.lock(); if let Some(selection) = &mut term.selection {
if let Some(selection) = &mut term.selection { selection.update(last_point, last_side);
selection.update(last_point, last_side);
}
} }
terminal.needs_update = true;
} }
terminal.needs_update = true;
} }
if let Some(p) = cursor_position.position_in(layout.bounds()) { if let Some(p) = cursor_position.position_in(layout.bounds()) {
let x = p.x - self.padding.left; let x = p.x - self.padding.left;
@ -1339,13 +1411,12 @@ where
let location = terminal let location = terminal
.viewport_to_point(TermPoint::new(row as usize, TermColumn(col as usize))); .viewport_to_point(TermPoint::new(row as usize, TermColumn(col as usize)));
if state.modifiers.control() { if state.modifiers.control()
if let Some(on_open_hyperlink) = &self.on_open_hyperlink { && let Some(on_open_hyperlink) = &self.on_open_hyperlink
if let Some(hyperlink) = get_hyperlink(&terminal, location) { && let Some(hyperlink) = get_hyperlink(&terminal, location)
shell.publish(on_open_hyperlink(hyperlink)); {
shell.capture_event(); shell.publish(on_open_hyperlink(hyperlink));
} shell.capture_event();
}
} }
if is_mouse_mode { if is_mouse_mode {
@ -1358,8 +1429,6 @@ where
} else { } else {
shell.capture_event(); shell.capture_event();
} }
} else {
shell.capture_event();
} }
} }
Event::Mouse(MouseEvent::ButtonReleased(_button)) => { Event::Mouse(MouseEvent::ButtonReleased(_button)) => {
@ -1650,10 +1719,10 @@ fn update_active_regex_match(
.find(|bounds| bounds.contains(&location)) .find(|bounds| bounds.contains(&location))
{ {
'update: { 'update: {
if let Some(active_match) = &terminal.active_regex_match { if let Some(active_match) = &terminal.active_regex_match
if active_match == match_ { && active_match == match_
break 'update; {
} break 'update;
} }
terminal.active_regex_match = Some(match_.clone()); terminal.active_regex_match = Some(match_.clone());
terminal.needs_update = true; terminal.needs_update = true;
@ -1714,6 +1783,7 @@ enum EdgeScrollDirection {
Bottom, Bottom,
} }
#[allow(clippy::too_many_arguments)]
fn edge_scroll_adjustment( fn edge_scroll_adjustment(
y: f32, y: f32,
buffer_height: f32, buffer_height: f32,
@ -1866,6 +1936,7 @@ pub struct State {
scroll_pixels: f32, scroll_pixels: f32,
scrollbar_rect: Cell<Rectangle<f32>>, scrollbar_rect: Cell<Rectangle<f32>>,
autoscroll: DragAutoscroll, autoscroll: DragAutoscroll,
preedit: Option<input_method::Preedit>,
} }
impl State { impl State {
@ -1879,6 +1950,7 @@ impl State {
scroll_pixels: 0.0, scroll_pixels: 0.0,
scrollbar_rect: Cell::new(Rectangle::default()), scrollbar_rect: Cell::new(Rectangle::default()),
autoscroll: DragAutoscroll::new(AUTOSCROLL_INTERVAL), autoscroll: DragAutoscroll::new(AUTOSCROLL_INTERVAL),
preedit: None,
} }
} }
} }