Compare commits

...

170 Commits

Author SHA1 Message Date
Matt Rose 6d225c7aee
Merge pull request #821 from LeoDog896/patch-1
chore: bump ations/checkout (v2 -> v4)
2023-09-15 08:24:00 -04:00
Tristan F 8f8343f95f
ci: bump actions/checkout ~> v4 2023-09-12 18:53:52 -04:00
Tristan F 7fa87058d5
chore: bump ations/checkout (v2 -> v3) 2023-09-03 10:11:00 -04:00
Matt Rose a6a0eca553
Merge pull request #736 from rkashinin/issue-676
Fix for issue #676: title field not seem to be working with JSON profile
2023-08-26 21:49:12 -04:00
Matthew Rose 43c5c55c35 Merge branch 'dantecalderon-feature/add-command-line-command-to-reload-configuration' 2023-08-26 21:40:21 -04:00
Matthew Rose 3c2d1ef047 Merge branch 'feature/add-command-line-command-to-reload-configuration' of https://github.com/dantecalderon/terminator into dantecalderon-feature/add-command-line-command-to-reload-configuration 2023-08-26 21:39:29 -04:00
Matt Rose f3841c640f
Merge pull request #741 from nautics889/minor-fixes-configjson
fix: Minor fixes in terminatorlib/configjson.py
2023-08-26 21:21:23 -04:00
Matt Rose cb4d84d52d
Merge pull request #770 from Tyler-Hardin/master
Enable sixel support in VTE if it's available.
2023-08-26 21:14:15 -04:00
Matt Rose 00ec42c7d2
Merge pull request #797 from j-d-r/master
Add command line option --toggle-visibility
2023-08-26 13:50:45 -04:00
Matt Rose f537eaabe5
Merge pull request #798 from gnome-terminator/translations_po-terminator-pot--master_zh_CN
Updates for file po/terminator.pot in zh_CN on branch master
2023-08-26 13:40:11 -04:00
Matt Rose 1806e583a8
Merge pull request #807 from xuezhixin/master
Document syntax error
2023-08-26 13:38:47 -04:00
Matt Rose bf103c2e94
Merge pull request #810 from vssdeo/681-Plugin-Submission-Plugin-Utility-KeyBinding-Mouseless-Keyboard-URL-Open
681 Plugin submission mouseless keyboard url open decoupled code
2023-08-26 13:37:56 -04:00
Vishweshwar Saran Singh Deo bd4e3b3470 Merge remote-tracking branch 'upstream/master' into 681-Plugin-Submission-Plugin-Utility-KeyBinding-Mouseless-Keyboard-URL-Open 2023-08-26 20:47:10 +05:30
Matt Rose 27814c2386
Merge pull request #819 from mattrose/fix_insert_term_name2
Fix Insert Term Name Plugin error
2023-08-26 09:38:54 -04:00
Matthew Rose f7b6ea07bc Fix Insert Term Name Plugin error
The "Insert terminal name" Plugin causes the following traceback
Traceback (most recent call last):
  File "/Users/mattrose/Code/terminator/terminatorlib/terminator.py", line 588, in do_insert_term_name
    term.feed(name)
  File "/Users/mattrose/Code/terminator/terminatorlib/terminal.py", line 1709, in feed
    self.vte.feed_child(text)

This PR fixes it so the plugin inserts the terminal name, as intended.
2023-08-26 09:21:18 -04:00
Matt Rose 9c054ac29e
Merge pull request #806 from vssdeo/805-keyboard-shortcut-support-for-plugins-code-decoupling
805 keyboard shortcut support for plugins code decoupling
2023-08-25 21:20:05 -04:00
Matt Rose 2dd7b8ea17
Merge pull request #809 from vssdeo/808-Plugins-dont-receive-keboard-signals-on-newly-opened-windows
[bug 808] Plugins-dont-receive-keboard-signals-on-newly-opened-windows
2023-08-25 20:51:02 -04:00
Vishweshwar Saran Singh Deo 3b4d32cda3 [bug 808] Plugins-dont-receive-keboard-signals-on-newly-opened-windows
- code separated for force loading of plugins on every terminal instance
2023-08-09 16:31:41 +05:30
Vishweshwar Saran Singh Deo d39968ebba - [bug 681] removed force plugin load from plugin and separated the code in a diff issue
Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature: Mouseless / Mousefree / Keyboard URL opening or yanking
2023-08-09 16:11:59 +05:30
xuezhixin fdfaa80907 Document syntax error
Signed-off-by: xuezhixin <xuezhixin@uniontech.com>
2023-08-09 17:33:12 +08:00
Vishweshwar Saran Singh Deo 64a6e391ac - more changes from 681-Plugin-Submission-Plugin-Utility-KeyBinding-Mouseless-Keyboard-URL-Open that were to be decoupled 2023-08-09 14:47:42 +05:30
Vishweshwar Saran Singh Deo 11639159b4 - removed KeyBindUtil dependency as its now a seperate pull request
- this branch is further decoupled using the current commit, 681-Plugin-Submission-Plugin-Utility-KeyBinding-Mouseless-Keyboard-URL-Open
2023-08-09 14:39:45 +05:30
Vishweshwar Saran Singh Deo d91d017e20 -remove the plugin from the plugin shortcut util / helper code 2023-08-06 20:18:28 +05:30
Vishweshwar Saran Singh Deo a0ed310094 Merge remote-tracking branch 'upstream/master' into 681-Plugin-Submission-Plugin-Utility-KeyBinding-Mouseless-Keyboard-URL-Open 2023-07-28 20:08:37 +05:30
transifex-integration[bot] 98659bdd8d
Translate po/terminator.pot in zh_CN
100% translated source file: 'po/terminator.pot'
on 'zh_CN'.
2023-07-21 08:55:55 +00:00
transifex-integration[bot] 368666c0af
Translate po/terminator.pot in zh_CN
100% translated source file: 'po/terminator.pot'
on 'zh_CN'.
2023-07-21 08:55:44 +00:00
transifex-integration[bot] 7173bb1c38
Translate po/terminator.pot in zh_CN
100% translated source file: 'po/terminator.pot'
on 'zh_CN'.
2023-07-21 08:54:43 +00:00
Julien Dusser e61fc1ce60 Add command line option --toggle-visibility
Useful for Wayland where global shortcuts are not available. Use window
manager to bind "terminator --toggle-visibilty" to a keyboard shortcut.
2023-07-20 17:38:37 +02:00
Tyler Hardin d0e366ff8d Enable sixel support in VTE if it's available. 2023-06-21 13:14:20 -04:00
Matt Rose 0fea7d47e5
Merge pull request #767 from x000zh/master
add new tab after current tab option
2023-06-20 20:56:37 -04:00
Matt Rose c96ebf7670
Merge pull request #774 from gnome-terminator/translations_po-terminator-pot--master_hr
Updates for po/terminator.pot in hr
2023-06-20 20:00:29 -04:00
Matt Rose 7023fdc5ab
Merge pull request #778 from mattrose/fix_ratio
Revert "modify terminator separater size setting in gui to start from 1"
2023-06-20 19:58:50 -04:00
Matt Rose b7e91b1ede
Merge pull request #777 from mattrose/776-fix-logger
Alter get_text_range call based on VTE version
2023-06-20 19:57:16 -04:00
Matt Rose 1a4921b262 Alter get_text_range call based on VTE version
In vte 0.72 there was a regression that caused
Vte.Terminal.get_text_range() to fail to return the text requested
However, in the same version, there was a new call introduced that
does retrieve the text, so if I detect a vte minor version above
72, I call that instead.
2023-06-17 21:31:00 -04:00
transifex-integration[bot] 64bccd27b5
Translate po/terminator.pot in hr
100% translated source file: 'po/terminator.pot'
on 'hr'.
2023-06-12 15:55:16 +00:00
transifex-integration[bot] 635e5338ec
Translate po/terminator.pot in hr
100% translated source file: 'po/terminator.pot'
on 'hr'.
2023-06-12 15:53:15 +00:00
transifex-integration[bot] 685aa75170
Translate po/terminator.pot in hr
100% translated source file: 'po/terminator.pot'
on 'hr'.
2023-06-12 15:52:51 +00:00
transifex-integration[bot] ea97c21871
Translate po/terminator.pot in hr
100% translated source file: 'po/terminator.pot'
on 'hr'.
2023-06-12 15:52:30 +00:00
Matt Rose 928a3dc5ec Revert "modify terminator separater size setting in gui to start from 1"
This reverts commit c8cd50ba9a.
2023-06-09 23:16:34 -04:00
x000zh cd04443e29 add new tab after current tab option 2023-06-04 19:13:37 +08:00
Matt Rose e0592eaf4f
Merge pull request #698 from zpalmtree/add-detchable-tabs-preference
Add detachable tabs feature to preferences
2023-04-24 09:55:48 -04:00
Matt Rose e8816382fd
Merge pull request #747 from Vulcalien/asciidoc-manpages-2
Rewrite terminator_config.5 man page in AsciiDoc format
2023-04-24 09:48:45 -04:00
Vulcalien f68f288c33 Update terminator_config.5
This file is now compiled from 'terminator_config.adoc'
2023-04-22 14:50:45 +02:00
Vulcalien 20ddb13490 terminator_config: add description to all remaining settings
+ reword some descriptions
+ fix the link to ConfigObj's documentation
2023-04-22 14:41:19 +02:00
Vulcalien fec901d09e terminator_config: add layouts and plugins sections
+ add description to some settings
2023-04-21 16:16:21 +02:00
nautics889 ed5f1c9b0a fix: Minor fixes in terminatorlib/configjson.py
Remove unused import of 'sys' module;
Fix typo in log message;
Removed unused variable in `get_layout()` method.
2023-04-11 22:51:57 +03:00
Ruslan Kashinin e2a88a2855
Fix for issue #676: title field not seem to be working with JSON profile 2023-04-09 18:01:41 +02:00
Vulcalien b0cb125287 terminator_config: add description to some settings 2023-04-07 22:15:50 +02:00
Ruslan Kashinin 1440dd924b Merge remote-tracking branch 'upstream/master' into issue-676 2023-04-07 22:00:38 +02:00
Vulcalien 3a710cd6d6 terminator_config: add keybindings 2023-04-07 15:44:30 +02:00
Vulcalien 9a63671fe8 terminator_config: move 'default value' to the end of description 2023-04-07 12:43:31 +02:00
Matt Rose 7a5fc01594
Merge pull request #735 from Vulcalien/remove-deprecated-settings-2
Remove more unused settings and update the docs accordingly
2023-04-05 16:13:47 -04:00
Matt Rose 03104b791c
Merge pull request #738 from Thibault-Brocheton/patch-1
fix: typo in french translation
2023-04-05 16:13:13 -04:00
Thibault Brocheton beae56f2b8
fix: typo in french translation
dans = in
sans = without
2023-04-04 11:01:51 +02:00
Vulcalien 9b93abb8fe terminator_config: add profile settings 2023-04-04 00:55:50 +02:00
Ruslan Kashinin 468ef23c79
Fix for issue #676: title field not seem to be working with JSON profile 2023-04-03 01:17:02 +02:00
Vulcalien 0570307ecb Remove unused 'color_scheme' setting
The color scheme in use is determined by checking the
'foreground_color' and 'background_color' settings.
2023-04-02 17:26:24 +02:00
Vulcalien a9c5e18365 Remove more unused settings and update the docs accordingly
Removed settings: scroll_background, focus_on_close, cycle_term_tab,
ignore_hosts.
2023-04-01 21:44:28 +02:00
Vulcalien aadb6ebaf9 terminator_config.adoc: add text for the 'FILE FORMAT' section
+ add a descriptions to some of the new settings
2023-04-01 19:20:18 +02:00
Matt Rose 0df00c49e2
Merge pull request #734 from Vulcalien/remove-deprecated-settings
Remove settings 'hide_tabbar' and 'disable_real_transparency'
2023-03-31 14:40:01 -04:00
Matt Rose 4ec2add3e3
Merge pull request #733 from Vulcalien/asciidoc-manpages
Rewrite terminator.1 man page in AsciiDoc format
2023-03-31 14:38:51 -04:00
Vulcalien 3f30aa58f7 Remove settings 'hide_tabbar' and 'disable_real_transparency'
'disable_real_transparency' is already completely unused,
'hide_tabbar' was replaced by 'tab_position' = 'hidden' and marked as
deprecated in 2010.
2023-03-31 17:14:27 +02:00
Vulcalien 8847d635f6 Begin working on terminator_config.adoc 2023-03-31 16:58:52 +02:00
Vulcalien 1ce3d50069 Generate terminator.1 from terminator.adoc using asciidoctor 2023-03-31 01:17:22 +02:00
Vulcalien dd075a243d Minor improvements to terminator.adoc
1. Decapitalize some words
2. Replace 'Hide/Show' with 'Toggle'
3. Replace 'AUTHOR' with 'AUTHORS'
4. Move the 'SEE ALSO' section to the bottom
2023-03-31 01:04:51 +02:00
Vulcalien cac4c9e458 Rewrite terminator.1 man page in AsciiDoc format 2023-03-29 23:59:38 +02:00
Matt Rose 10e9d04e78
Merge pull request #722 from magical-heyrovsky/Fix-typo-in-man-page
Fix typo in man page
2023-03-28 09:23:48 -04:00
Matt Rose 2285ceb68b
Merge pull request #720 from pedroflor/patch-1
Capitalize the first letter for "Read only"
2023-03-22 18:13:22 -04:00
Matt Rose 6592e2bda1
Merge pull request #728 from mattrose/727-fixdnd
fix drag and drop
2023-03-22 17:51:29 -04:00
Matt Rose 41c9d344b4 fix drag and drop 2023-03-22 17:43:04 -04:00
Matt Rose a38152d691
Merge pull request #726 from Vulcalien/master 2023-03-12 12:43:54 -04:00
Vulcalien d8852f1e54 Do not remove focus from the last_active_window
This caused all the new windows to be unfocused, forcing the user to
manually focus one.
The 'last_active_window' feature might be broken anyway.
2023-03-11 12:48:20 +01:00
Matt Rose 3d79ca5072
Merge pull request #716 from mattrose/714-fixdadt
Remove hack to ensure that focus is set.
2023-03-09 17:11:02 -05:00
Matt Rose 8ae6f93f55
Merge pull request #725 from mattrose/724-unset-keybinding-toggle_scrollbar-prevents-right-click-menu-from-opening
Fix context menu keybinding reading.
2023-03-08 17:31:03 -05:00
Matt Rose e4be854668 Fix context menu keybinding reading.
When the keybinding for an action that also appears in the context menu
is None, python can't do it's usual string tricks and throws a
backtrace, and doesn't display the menu.
2023-03-08 17:17:57 -05:00
magical-heyrovsky bb1ddf3ee5
Fix typo in man page 2023-03-07 10:16:49 +01:00
PF 599b9b8bf4
Capitalize the first letter for "Read only" 2023-03-06 22:25:27 -04:00
Matthew Rose 9eaf0cbd6b Release version 2.1.3 2023-03-01 17:36:20 -05:00
Matt Rose 380be99c9f
Merge pull request #709 from KKoovalsky/master
Better distinguishing of inactive windows from the active one, by changing the background brightness
2023-03-01 16:45:25 -05:00
Matt Rose 45a8b4c75c
Merge pull request #691 from nicbn/patch-1
Ctrl+Click on group button automatically creates groups whenever needed
2023-03-01 16:23:33 -05:00
Matt Rose b0f4463055
Merge pull request #713 from Vulcalien/bg-image-draw-modes
Background image drawing modes and alignment
2023-03-01 16:13:23 -05:00
Matthew Rose d6d9cce90c should not commit this late at night. 2023-02-28 22:32:14 -05:00
Matthew Rose ed763df331 Further fix to last_active_window 2023-02-28 22:22:57 -05:00
Matthew Rose 066acd779a Remove hack to ensure that focus is set.
set_focus() should do the trick according to the docs, so
let's just use that, and not go to extraordinary measures.
2023-02-28 21:42:29 -05:00
Kacper Kowalski c1d9253acc Make inactive background brightness default 1.0 (100%) 2023-02-21 11:04:37 +01:00
zpalmtree ca86d083f0
Merge pull request #1 from Vulcalien/origin/add-detchable-tabs-preference
Detachable tabs: reposition preferences code
2023-02-15 20:05:34 -05:00
Vulcalien d52fa5a5d4 Detachable tabs: reposition the code 2023-02-15 11:44:42 +01:00
Vulcalien 6cc3052ba7 Add background image's drawing mode and alignment to preferences GUI 2023-02-14 16:59:59 +01:00
Vulcalien df8890199c Add background image alignment
background_image_align_horiz: left, center, right
background_image_align_vert: top, middle, bottom
2023-02-14 15:13:54 +01:00
Vulcalien 21529cec6c Add different background image modes
stretch_and_fill, scale_and_fit, scale_and_crop, tiling
2023-02-14 15:13:32 +01:00
Kacper Kowalski 39cf34e295 Fix typo 2023-02-03 18:26:54 +01:00
Kacper Kowalski dd511778c8 Add debug messages for the inactive background color change 2023-02-03 15:56:46 +01:00
Kacper Kowalski 272328c82d Add inactive background color adjustment in prefs 2023-02-03 15:50:33 +01:00
Kacper Kowalski 6551dba9dc Add config option for inactive background offset 2023-02-03 14:59:36 +01:00
Kacper Kowalski 3854a7c0e2 Allow setting hardcoded background darkening
Normally, one can only change the background of the foreground for the
inactive window. With this change the background of the inactive window
will also change it's brightness by 20%.
2023-02-03 14:34:16 +01:00
zpalmtree 808d2efaa9 Add detachable tabs feature to preferences 2022-12-28 23:20:28 -05:00
nicbn c84821e36a Make Ctrl+Click on group button automatically create groups 2022-12-06 18:08:01 -03:00
Dante Calderon 285022ef29
Update comment 2022-12-05 20:37:57 -05:00
Matt Rose 403bf540d0
Merge pull request #686 from vssdeo/680-open-up-keybindings-page-on-keypress
[bug 680] Open up keybindings page on keypress #680
2022-11-29 21:12:15 -05:00
Vishweshwar Saran Singh Deo 98dcd0efec [bug 680] Open up keybindings page on keypress #680
- implemented the short-cut
- seems the key combo is already taken 'go_prev' : 'p'
- How about : 'k', I will make the change for now.
- But adding key seq to a long list of keypress function breaks my heart, If the plugin util keybind makes it to the main branch, I will take this out and may be have a shortcut plugin to handle these.
- Also selecting of Keybindings page is being done for this specific case Page = 3
- A notebook tab number and title map would remove this. Which can be configurable, later.
2022-11-23 20:02:26 +05:30
Vishweshwar Saran Singh Deo 8e5e6d1642 [bug 681] Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature: Mouseless / Mousefree / Keyboard URL opening or yanking #681
- renamed api interfacted for better clarity
- removed double checking of short-cut binding for plugins in keybindings
2022-11-23 15:34:22 +05:30
Matt Rose 857d759485
Merge pull request #684 from gnome-terminator/translations_po-terminator-pot--master_pt_BR
Translate '/po/terminator.pot' in 'pt_BR'
2022-11-22 12:50:32 -05:00
Vishweshwar Saran Singh Deo 8edebc6ca5 [bug 681] Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature: Mouseless / Mousefree / Keyboard URL opening or yanking #681
- removed plugin_util
- added key unbind feature
- updated plugin helper
- updated plugin helper - to have config as part of constructor
- updated MouseFreeURLHandler for plugin.py, unload
- removed circular dependency between plugin.py and config.py due to KeyBindUtil due to merging of plugin_util.py
2022-11-22 15:18:26 +05:30
transifex-integration[bot] d3d64d406d
Translate /po/terminator.pot in pt_BR
translation completed for the source file '/po/terminator.pot'
on the 'pt_BR' language.
2022-11-22 00:48:20 +00:00
Vishweshwar Saran Singh Deo 3e15ae40df [bug 681] Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature: Mouseless / Mousefree / Keyboard URL opening or yanking #681
-convert control keys keyval to standard lowercase, else signals are missing
2022-11-21 18:12:54 +05:30
Vishweshwar Saran Singh Deo 7bbb07c993 [bug 681] Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature: Mouseless / Mousefree / Keyboard URL opening or yanking #681
- there was a bug wherein the duplicate keybindings from plugins were not throwing the error "Duplicate Key Bindings Are Not Allowed", now while checking they are merged and then final list of keybindings are checked.
2022-11-21 16:24:32 +05:30
Matt Rose 13ff8cdcf5
Merge pull request #683 from mattrose/insert-term-name-plugin
Plugin and Group menu item that inserts the name of the terminal.
2022-11-20 16:11:25 -05:00
Matthew Rose 35e7e026cd add "Insert Terminal Name" to the group menu 2022-11-20 13:42:20 -05:00
Matthew Rose 3d63c91517 [New Plugin] Plugin that inserts the name
This plugin inserts the name of the terminal, as determined by
Terminal.get_window_title() to all open terminals. Fixes #540
2022-11-19 23:01:05 -05:00
Matt Rose c939efa5a3
Merge pull request #647 from libreajans/rebranding
data: Remove GNOME branding
2022-11-19 15:16:03 -05:00
Matt Rose 4e5e790a81
Merge pull request #189 from phidebian/phi-zero-padded
Use the term 'zero padded' instead of 'padded'.
2022-11-19 15:09:43 -05:00
Vishweshwar Saran Singh Deo 8802e9b912 [bug 681] 681-Plugin-Submission-Plugin-Utility-KeyBinding-Mouseless-Keyboard-URL-Open #681
Merge remote-tracking branch 'upstream/master' into 450-mouseless-URL-opening-or-yanking
1) Mouse less/free opening / yanking feature
2) plugin_util  file to assist this and other plugins with key-press Helper function
3) adding Key Binding Help Functions in above (2) to config and preferences->keybinding to have a consistent behavior
2022-11-19 21:07:34 +05:30
Vishweshwar Saran Singh Deo 0ae2aba167 1) Mouse less/free opening / yanking feature
2) plugin_util  file to assist this and other plugins with key-press Helper function
3) adding Key Binding Help Functions in above (2) to config and preferences->keybinding to have a consistent behavior
2022-11-19 20:06:24 +05:30
Matt Rose a83ee32840
Merge pull request #589 from Vulcalien/zoom-on-notebook
Zoom on notebook even if there is only one terminal in the tab + keep tab position and label in notebook rotation
2022-11-18 23:28:17 -05:00
Matt Rose 2aff8dbf30
Merge pull request #679 from mattrose/add-readonly
Add Readonly toggle to popup menu
2022-11-18 23:15:43 -05:00
Matt Rose 1d5351ed86
Merge pull request #665 from vssdeo/559-Add-menu-autocomplete
[bug 559] Add menu autocomplete #559
2022-11-18 23:10:10 -05:00
Matt Rose a6b78bbbf0
Merge pull request #666 from vssdeo/662-In-the-Context-Menu-right-click-show-keyboard-shortcuts
[bug 662] [Feature Request] - In the Context Menu(Right-Click) show k…
2022-11-18 21:29:46 -05:00
Matt Rose 230e1e5985
Merge pull request #671 from vssdeo/613-shortcut-autosplit-h-v-dependingon-terminal-size
[bug 613] -  Shortcut for autosplit h/v depending on active terminal …
2022-11-18 21:22:44 -05:00
Matthew Rose 0d362fc0f5 Add Readonly toggle to popup menu
Fixes #649
2022-11-18 21:14:42 -05:00
Matt Rose 1d1e57b8f2
Merge pull request #674 from mattrose/remove-ibus-hacks
Remove all ibus workarounds
2022-11-18 16:13:41 -05:00
Matt Rose bcb9cbc6ff
Merge pull request #678 from shawn-ogg/master
Fix argument handling of the --execute flag
2022-11-18 15:31:47 -05:00
Matt Rose a92f675bbc clean up comment 2022-11-18 15:19:04 -05:00
Tobias Farrenkopf 91cc928f0d Fix argument handling of the --execute flag
--execute behaves now like in the docs:
	Runs  the rest of the command line instead of your default shell
        or profile specified command.

This fixes it's proper usage with tools like gio or xdg_open
2022-11-18 13:12:59 +00:00
Matt Rose 044b3eaee1 Remove all ibus workarounds
I am sick of ibus breaking every single time we issue a new
release, so as of now, I've gone through the code and removed
all of the workarounds that we have put in to try and get
around issues in ibus, and GTK Input Methods in general.

The code as it stands should work, I'm going to mention a
bunch of people in this PR and ask them to beta test this
change.
2022-11-14 11:00:25 -05:00
Vishweshwar Saran Singh Deo 85f57543ed -added split_auto to prefseditor
-had to comment out test for ctrl shift a (need to cross check)
2022-11-05 15:29:42 +05:30
Vishweshwar Saran Singh Deo 6bdb0c648c [bug 613] - Shortcut for autosplit h/v depending on active terminal size #613
-added auto split feature
-new signal split-auto was added
-currently this uses widget dimensions for the split as rows, cols were having different space and was not consistent, this can be changed if needed
-short cut was also added
-icon for the menu item needs to be added
2022-11-05 11:42:38 +05:30
Vishweshwar Saran Singh Deo d08cee42ee [bug 559] Add menu autocomplete
Follwing errors were being thrown:

FAILED tests/test_prefseditor_keybindings.py::test_keybinding_successfully_reassigned_after_clearing[accel_params0] - AttributeError: 'TreeModelFilter' object has no attribute 'set'

It seems earlier the Gtk.ListStore()  was directly being passed in the test cases. After the changes to the Preferences to add a search filter bar we had added a filter Gtk.TreeModelFilter and for the widget we were setting it:
        widget.set_model(self.treemodelfilter)

Now it seemed that instead of Gtk.ListStore() the object Gtk.TreeModelFilter was being received and since it did not have a "set" function the above error was thrown.

I have made changes so that the Gtk.ListStore() is taken from Gtk.TreeModelFilter via get_model function and this indirection is removed.
2022-11-01 18:24:15 +05:30
Vishweshwar Saran Singh Deo ffd7ae518e [bug 662] [Feature Request] - In the Context Menu(Right-Click) show keyboard shortcuts / accelarators #662
-fixed: The problem in displaying is happening as the the config the key for eg Control is being saved as <Primary> and the short cut alphabetic character is being picked when creating the menu item and not being overwritten from config
-Note: the short cut for function keys are not being displayed in context-menu
2022-11-01 16:28:09 +05:30
Vishweshwar Saran Singh Deo fdcf8facf4 [bug 559] Add menu autocomplete #559
- added a filter to the preferences menu for easy access to shortcuts
- may require some tweak, on search term size and update
Note: when edited in prefs it seems the Short Cut Labes in (right click) Context Menu are not updated will fix that in that bug Issue #662
2022-11-01 15:29:07 +05:30
Matt Rose 1aa437d6e3
Merge pull request #663 from vssdeo/662-In-the-Context-Menu-right-click-show-keyboard-shortcuts
[bug 662] [Feature Request] - In the Context Menu(Right-Click) show k…
2022-10-31 12:50:11 -04:00
Vishweshwar Saran Singh Deo 548a51c6bb [bug 662] [Feature Request] - In the Context Menu(Right-Click) show keyboard shortcuts / accelarators #662
- added short cuts / accelarators to right click context menu
- menu is updated from config so changes in preferences keybindings appear dynamically
- Note: I think there is a bug or discrepancy where
        for the action edit window title config.py says:
            'edit_window_title': 'w where as in code: terminal_popup_menu.py
            item = Gtk.ImageMenuItem.new_with_mnemonic(_('Set W_indow Title'))
            Character i is selected as mnemonic.
- fixed the above discrepancy
2022-10-31 12:26:34 +05:30
Matt Rose f289b4df33
Merge pull request #632 from xuezhixin/master
this line has an extra ';' symbol
2022-10-30 21:30:34 -04:00
Matt Rose 3fa8669050
Merge pull request #661 from vssdeo/654-Plugin-Submission-SaveLastSessionLayout-Uses-Layout-to-Auto-Save-Last
[bug 654] - Plugin Submission : SaveLastSessionLayout Uses Layout to …
2022-10-30 21:23:15 -04:00
Vishweshwar Saran Singh Deo 3aaf54b5de [bug 654] - Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD on Terminal Window Close
- changes for the pre-close-term event in the plugin
- submitting as I had first thought of using current event close-term, but later thought of a consistent solution
2022-10-30 23:26:10 +05:30
Matt Rose 6f99890dd3
Merge pull request #628 from MihaiBabiac/fix-desktop-file-not-found
Fix missing icons when started with Ctrl-Alt-T
2022-10-30 11:37:04 -04:00
Matt Rose df1a433c61
Merge pull request #651 from kianmeng/fix-typos
Fix typos
2022-10-30 11:29:12 -04:00
Matt Rose c512beb993
Merge pull request #657 from pktiuk/master
docs: Change number of columns in repology badge
2022-10-30 11:24:00 -04:00
Matt Rose 7c83d23e55
Merge pull request #659 from flaviosteimacher/patch-1
Update terminal.py
2022-10-30 11:15:46 -04:00
Matt Rose c4d7253d66
Merge pull request #655 from vssdeo/654-Plugin-Submission-SaveLastSessionLayout-Uses-Layout-to-Auto-Save-Last
Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD
2022-10-30 10:57:18 -04:00
Matt Rose af1ec64c93
Merge pull request #653 from vssdeo/bug-652-loading-layout-loads-the-last-added-layout
- bug context menu (right click)->layouts->"Layout Name" always selec…
2022-10-30 10:38:45 -04:00
flaviosteimacher 295cfd9f60
Update terminal.py
Fix error insert terminal number
2022-10-27 16:02:02 -03:00
Dante Calderon 2e1dd1f316
Add CLI command to reload configuration 2022-10-24 00:51:53 -05:00
Kian-Meng Ang 25111f2402 Fix typos
Found via `codespell -S .eggs,po,*.css -L boddy,maco,trough,wont,poing,gir,visibles`
2022-10-22 00:07:07 +08:00
Paweł Kotiuk 270d4afb04
docs: Change number of columns in repology badge
It greatly improves visibility
2022-10-21 16:41:21 +02:00
Matt Rose c447ae0201 Release version 2.1.2 2022-10-19 10:22:21 -04:00
Matt Rose bf3ce6c81e
Merge pull request #656 from mattrose/update-translations-Oct2022
update translations
2022-10-19 09:35:30 -04:00
Matt Rose 6557ad5450 update translations 2022-10-19 09:32:14 -04:00
Vishweshwar Saran Singh Deo e7f9c731e8 - bug context menu (right click)->layouts->"Layout Name" always selects the last Layout
- fixed so the right layout is picked and loaded
2022-10-16 01:47:36 +05:30
Vishweshwar Saran Singh Deo 5bd81ce478 - added plugin save_last_session_layout.py
- saves the working directory and layout of last session (last window) closed
- layout is saved under name of SaveLastSessionLayout
- can be loaded from context menu (right click) -> layouts -> "SaveLastSessionLayout"
- last working directory is also saved
2022-10-16 01:32:30 +05:30
sabriunal d8141a86c3 data: Remove GNOME branding
This MR is part of an [initiative](GNOME/Initiatives#35) to fade out legacy app branding. Following the [Software Policy](https://wiki.gnome.org/Foundation/SoftwarePolicy), GNOME branding is reserved for official GNOME software (Core apps and Development tools.) You can find a summary in [this blog post](https://blogs.gnome.org/sophieh/2022/06/08/apps-attempt-of-a-status-report/).

If you think that your app is a special case that needs an exception from the software policy, we would ask you to leave a comment about your app's case in GNOME/Initiatives#35.

/label ~"9. Initiative: Legacy app branding"
2022-10-05 14:14:07 +03:00
Vulcalien df0643b1a4 Notebook rotate: keep tab position and label 2022-08-27 22:06:00 +02:00
xuezhixin 6c2e3b8bf7 this line has an extra ';' symbol 2022-08-15 14:33:01 +08:00
Mihai Babiac 3245d671bb Add program_name to fix missing icons
By default, GTK sets the prgname to argv[0], which is then used to
choose the correct .desktop file. If the program is run through a
symlink, such as through `/etc/alternatives/x-terminal-emulator`,
argv[0] is not `terminator` so under Wayland the desktop file is not
detected, leading to a missing icon.
2022-07-29 18:49:16 +02:00
Matt Rose 7b39058b0e
Merge pull request #609 from Vulcalien/mousewheel-modifiers
Terminal ctrl+mousewheel: do not try to zoom if shift is pressed
2022-06-27 15:31:02 -04:00
Vulcalien 784dc4946e Terminal mousewheel event: check for all modifiers 2022-06-13 15:16:24 +02:00
Vulcalien 06ada7c655 Notebook tab zoom: keep label and position 2022-05-20 13:12:16 +02:00
Matt Rose d33c145ba8
Merge pull request #592 from mattrose/fix-prefs-setcolor
More fixes to the Color pickers in the Preferences Editor
2022-04-18 13:24:28 -04:00
Matt Rose 0e04376afb
Merge pull request #588 from mattrose/586-fix-readme
Various README fixes
2022-04-18 12:56:33 -04:00
Matt Rose eb7c2ddf25
Merge pull request #590 from amaan211/master
Modification in the /terminatorlib/prefseditor.py file
2022-04-18 12:39:49 -04:00
amaan khan 33f7927bfa fixed indent 2022-04-16 12:09:38 +05:30
amaan khan ed93ccb7e5 no need to go to custom to set custom palette 2022-04-16 12:05:29 +05:30
Vulcalien c2f2addf05 Remove unused code (container.py, toggle_zoom) 2022-04-09 11:19:36 +02:00
Vulcalien 04bd693586 Zoom/maximize with one terminal in notebook tab 2022-04-09 11:15:36 +02:00
Matt Rose 978e0c9fd8
Merge pull request #588 from mattrose/586-fix-readme
Various README fixes
2022-04-04 18:19:07 -04:00
Matthew Rose 8055e2ae65 Various README fixes 2022-04-03 20:51:20 -04:00
Matt Rose 529d4749ee
Merge pull request #570 from JayDoubleu/flatpak_experimental
Add initial flatpak-spawn support
2022-03-29 10:31:47 -04:00
Jay W 886412fcf1 Add logic to remove duplicate shell from args 2022-02-01 19:06:23 +00:00
Jay W 967f039e60 Simplify flatpak-spawn args 2022-01-31 19:59:34 +00:00
Jay W a41a38bcc9 Add flatpak support to terminatorlib 2022-01-31 19:12:16 +00:00
Phi e8c366ae54 Use the term 'zero padded' instead of 'padded' in prefs key binding and terminal pop up menu, to be consistent with the doc. 2020-08-22 11:28:06 +02:00
44 changed files with 5156 additions and 1843 deletions

View File

@ -20,7 +20,7 @@ jobs:
- '3.9'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v1

56
AUTHORS
View File

@ -5,8 +5,8 @@ This list is generated from the GIT log.
* Aaron Faanes <dafrito@gmail.com>
* Adrian A <a.adrian.tech@googlemail.com>
* Alexey Sokolov <sokolov@google.com>
* Andrea Corbellini <corbellini.andrea@gmail.com>
* Andre Hilsendeger <Andre.Hilsendeger@gmail.com>
* Andrea Corbellini <corbellini.andrea@gmail.com>
* Andrew Felske <knopper67@archlinux.us>
* Antonio Terceiro <asa@terceiro.xyz>
* Antonio Terceiro <terceiro@debian.org>
@ -25,7 +25,7 @@ This list is generated from the GIT log.
* David Caro Estévez <david.caro.estevez@gmail.com>
* David Levanon <dvdlevanon@gmail.com>
* David Sowder <github.com@david.sowder.com>
* dkmvs <67212386+dkmvs@users.noreply.github.com>
* Dennis Benzinger | SAP Hybris <dennis.benzinger@sap.com>
* Dmitry Soldatov <grapescan@gmail.com>
* Douglas Bacon <douglaswbacon@gmail.com>
* Edoardo Batini <eodbat@gmail.com>
@ -33,7 +33,6 @@ This list is generated from the GIT log.
* Emilien Klein <emilien@klein.st>
* Emilio Pozuelo Monfort <pochu@debian.org>
* Emmanuel Bretelle <chantra@debuntu.org>
* evandrocoan <evandrocoan@hotmail.com>
* Felix Mölder <56774350+Brambleberry4@users.noreply.github.com>
* Fernando Basso <fernandobasso.br@gmail.com>
* Filip Kilibarda <filipcsc@gmail.com>
@ -46,51 +45,82 @@ This list is generated from the GIT log.
* Ivar Smolin <okul@ivotingcentre.ee>
* Jakub Vaněk <vanek.jakub4@seznam.cz>
* Jamu Kakar <jkakar@kakar.ca>
* Jay W <git.jaydoubleu@gmail.com>
* Jean-Sebastien Trottier <strottie@cisco.com>
* Joe Peled <joe.peled@vimeo.com>
* Jonas L <jooola@users.noreply.github.com>
* José Augusto <joseaugusto.881@outlook.com>
* Jose Augusto <jose.augusto@chiligum.com.br>
* Jose I. Monreal <jmonreal@gmail.com>
* judgedreads <pearce@millerdedmon.com>
* José Augusto <joseaugusto.881@outlook.com>
* Juliano Fischer Naves <julianofischer@gmail.com>
* Julien Nicoulaud <julien.nicoulaud@gmail.com>
* Julien Thewys <jth@openerp.com>
* Kacper Kowalski <kacper.s.kowalski@gmail.com>
* Kees Cook <kees@outflux.net>
* Kian-Meng Ang <kianmeng@cpan.org>
* Leandro Thimóteo <leandro.s.thimoteo@gmail.com>
* Lucian Adrian Grijincu <lucian.grijincu@gmail.com>
* Mackenzie Morgan <maco.m@ubuntu.com>
* Mark Timarev <marktimarev@gmail.com>
* Markus Frosch <markus@lazyfrosch.de>
* Markus Korn <thekorn@gmx.de>
* Matt Rose <mattrose@folkwolf.net>
* milotype <43657314+milotype@users.noreply.github.com>
* Matthew Rose <mattrose@folkwolf.net>
* Mihai Babiac <mihai.babiac@gmail.com>
* MuhammadJivani <masad@peekaboo.guru>
* Nathan Handler <nhandler@ubuntu.com>
* Nathaniel M. Beaver <nathanielmbeaver@gmail.com>
* Nathaniel Morck Beaver <nathanielmbeaver@gmail.com>
* Neal Fultz <nfultz@neal-1015pe>
* Nicolas Valcárcel <nvalcarcel@ubuntu.com>
* Pavel Khlebovich <pas.anddev@gmail.com>
* Paweł Kotiuk <45544416+pktiuk@users.noreply.github.com>
* Paweł Kotiuk <kotiuk@zohomail.eu>
* Peter B. Jørgensen <peterbjorgensen@gmail.com>
* Peter Bjørn Jørgensen <peterbjorgensen@gmail.com>
* Peter Lind <peter.e.lind@gmail.com>
* Phi <phi@kernel-tools.com>
* planet36 <planet36@users.noreply.github.com>
* Przemek Wesolek <jest@luna>
* Roberto Aguilar <roberto.c.aguilar@gmail.com>
* robertoetcheverryr <yggdrasil.raiker@gmail.com>
* R the Troublemaker <5971066+br0kenbuild@users.noreply.github.com>
* Rafael Kitover <rkitover@gmail.com>
* Roberto Aguilar <roberto.c.aguilar@gmail.com>
* Ryan Fonnesbeck <fonz@fonzinc.com>
* shiraeeshi <shiraeeshi@mail.ru>
* Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
* Simeon Simeonov <sgs@pichove.org>
* Stephen Boddy <stephen.j.boddy@gmail.com>
* thebigs <TheBigS@users.noreply.github.com>
* StephenPeringer <StephenPeringer@users.noreply.github.com>
* Thomas Hurst <tom@hur.st>
* Thomas Meire <blackskad@gmail.com>
* Tobias Farrenkopf <tf@emptyset.de>
* Tom Yan <tom.ty89@gmail.com>
* Tomek Sabała <sabala.tomek@gmail.com>
* Tony Baker <frd91gt@gmail.com>
* waldner <waldner@katamail.com>
* Vishweshwar Saran Singh Deo <vssdeo@gmail.com>
* Vojtech Duchon (Ext) <vojtech.duchon@gmail.com>
* Vulcalien <vulcalien+github@gmail.com>
* Vulcalien <vulcalien@gmail.com>
* Yousof <yousofebneddin@yahoo.com>
* Yusuf Güngör <yusuf.gungor@hepsiburada.com>
* amaan khan <khanamaan827@gmail.com>
* caprinux <123jinkai@gmail.com>
* coder <none@non.no>
* dkmvs <67212386+dkmvs@users.noreply.github.com>
* evandrocoan <evandrocoan@hotmail.com>
* flaviosteimacher <39162591+flaviosteimacher@users.noreply.github.com>
* judgedreads <pearce@millerdedmon.com>
* kocho1984 <eblebleo2@gmail.com>
* milotype <43657314+milotype@users.noreply.github.com>
* nicbn <contact@nicbn.com>
* nojhan <nojhan@nojhan.net>
* ozzdemir <oguz.ozdemir@ieee.metu.edu.tr>
* planet36 <planet36@users.noreply.github.com>
* robertoetcheverryr <yggdrasil.raiker@gmail.com>
* sabriunal <libreajans@gmail.com>
* shiraeeshi <shiraeeshi@mail.ru>
* thebigs <TheBigS@users.noreply.github.com>
* transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* waldner <waldner@katamail.com>
* xuezhixin <xuezhixin@uniontech.com>
## Other contributors
@ -112,5 +142,7 @@ People that contributed to Terminator in other ways.
* Maxim Derkach
* Mats Henrikson
* Nizar Kerkeni
* "Data"
* Cristian Grada
* "zhuqin"
* and many others.

View File

@ -151,14 +151,14 @@ terminator 1.90:
* Preselect the current layout when opening Prefs window, and also
save config after using the layout 'Save' button (Steve Boddy)
* Set some default shortcuts based on my preference (Steve Boddy)
* Add high contast icons, make the main window icon loading work
* Add high contrast icons, make the main window icon loading work
better, and respect the theme changes (Steve Boddy, LP#305579)
* Additional windows icon loading works better, and respect the
theme changes (LP#305579)
* Adjust the config section name to InactivityWatch for
InactivityWatch class
* Add a new setting for ActivityWatch to set the time between
activty notifications
activity notifications
* BIG update to translations, due to additions and changes.
* Make the random default group names translatable
* Add and improve the mnemonics in the group menu
@ -170,7 +170,7 @@ terminator 1.90:
* A few changes to doc strings to make the autodoc prettier
* Added help shortcut, by default F1 to open the local manual
* Added button to About tab (in Prefs window) to launch manual
* Small tweak to setup.py to seperate build and install, and
* Small tweak to setup.py to separate build and install, and
always attempt to install manual by default.
* Sort entries in config file, so they don't jump around every
time config is saved for easier troubleshooting
@ -258,7 +258,7 @@ terminator 1.90:
terminator class
* Fix the scroll up/down key bindings to use gtk3 method
* Fix getting the handle size (gtk2->gtk3 diff)
* Fix scrollbar doubleclick rebalancing (LP#1423686)
* Fix scrollbar double-click rebalancing (LP#1423686)
* Fix allocations (no longer an attribute) when balancing
(gtk2->gtk3 diff)
* Fix allocations not having the x,y position just w,h (gtk3 bug?
@ -351,7 +351,7 @@ terminator 1.90:
(Egmont Koblinger, LP#1518108)
* Fix copy on selection to work on already open terminals (Egmont
Koblinger, LP#1518109)
* Fix unwanted seperator size change, and increase granularity of
* Fix unwanted separator size change, and increase granularity of
dim/transparent sliders (Egmont Koblinger, LP#1518114)
* Fix cwd when new term spawned from a symlinked directory (Egmont
Koblinger, LP#1518554)

View File

@ -1,6 +1,236 @@
# Changelog
## [v2.1.1](https://github.com/gnome-terminator/terminator/tree/v2.1.1) (2021-04-01)
## [v2.1.3](https://github.com/gnome-terminator/terminator/tree/v2.1.3) (2023-03-01)
[Full Changelog](https://github.com/gnome-terminator/terminator/compare/v2.1.2...v2.1.3)
**Implemented enhancements:**
- Option to set split ratio of terminals [\#708](https://github.com/gnome-terminator/terminator/issues/708)
- Add option to set given terminal to "read only" [\#649](https://github.com/gnome-terminator/terminator/issues/649)
- background image - respect ratio [\#644](https://github.com/gnome-terminator/terminator/issues/644)
- Shortcut for autosplit h/v depending on active terminal size [\#613](https://github.com/gnome-terminator/terminator/issues/613)
- Feature: Insert terminal name to terminal \(for broadcast\) [\#540](https://github.com/gnome-terminator/terminator/issues/540)
- Background image drawing modes and alignment [\#713](https://github.com/gnome-terminator/terminator/pull/713) ([Vulcalien](https://github.com/Vulcalien))
- Zoom on notebook even if there is only one terminal in the tab + keep tab position and label in notebook rotation [\#589](https://github.com/gnome-terminator/terminator/pull/589) ([Vulcalien](https://github.com/Vulcalien))
**Fixed bugs:**
- Resets the tab title on rotation [\#624](https://github.com/gnome-terminator/terminator/issues/624)
- - bug context menu \(right click\)-\>layouts-\>"Layout Name" always selec… [\#653](https://github.com/gnome-terminator/terminator/pull/653) ([vssdeo](https://github.com/vssdeo))
- Fix missing icons when started with Ctrl-Alt-T [\#628](https://github.com/gnome-terminator/terminator/pull/628) ([MihaiBabiac](https://github.com/MihaiBabiac))
**Closed issues:**
- Terminator not working with latest version of python-cairo [\#711](https://github.com/gnome-terminator/terminator/issues/711)
- \[Bug\]\[Fedora 36 KDE\]\[terminator v2.1.1\] "broadcast group" sends each terminal input/keystroke depending on the group's members count to everyone in the group [\#704](https://github.com/gnome-terminator/terminator/issues/704)
- reset\_clear doesn't show new prompt [\#703](https://github.com/gnome-terminator/terminator/issues/703)
- `-x`/`--execute` still broken [\#702](https://github.com/gnome-terminator/terminator/issues/702)
- Make unfocused terminal text transparent instead of blacker [\#694](https://github.com/gnome-terminator/terminator/issues/694)
- A translucent separation occurs between terminals [\#687](https://github.com/gnome-terminator/terminator/issues/687)
- \[2.1.2\] Foreground processes started in new window close immediately [\#673](https://github.com/gnome-terminator/terminator/issues/673)
- Is there a official page to maintain a offical/third-part plugin list? [\#668](https://github.com/gnome-terminator/terminator/issues/668)
- What happened to the change terminal titlebar under preferences? [\#664](https://github.com/gnome-terminator/terminator/issues/664)
- \[Feature Request\] - In the Context Menu\(Right-Click\) show keyboard shortcuts / accelarators [\#662](https://github.com/gnome-terminator/terminator/issues/662)
- terminator: error: unrecognized arguments [\#660](https://github.com/gnome-terminator/terminator/issues/660)
- Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD on Terminal Window Close [\#654](https://github.com/gnome-terminator/terminator/issues/654)
- Loading layout loads only the last added layout from context menu \(right click\) [\#652](https://github.com/gnome-terminator/terminator/issues/652)
- When can we expect a new release? [\#650](https://github.com/gnome-terminator/terminator/issues/650)
- Profiles for different Shells - is it possible? how does it work? [\#640](https://github.com/gnome-terminator/terminator/issues/640)
- Double input to broadcasted group [\#623](https://github.com/gnome-terminator/terminator/issues/623)
- background images only displaying on default profile [\#595](https://github.com/gnome-terminator/terminator/issues/595)
- The repository 'https://ppa.launchpadcontent.net/mattrose/terminator/ubuntu jammy Release' does not have a Release file. [\#594](https://github.com/gnome-terminator/terminator/issues/594)
- Increase the usage of augmented assignment statements [\#555](https://github.com/gnome-terminator/terminator/issues/555)
**Merged pull requests:**
- Better distinguishing of inactive windows from the active one, by changing the background brightness [\#709](https://github.com/gnome-terminator/terminator/pull/709) ([KKoovalsky](https://github.com/KKoovalsky))
- Ctrl+Click on group button automatically creates groups whenever needed [\#691](https://github.com/gnome-terminator/terminator/pull/691) ([nicbn](https://github.com/nicbn))
- \[bug 680\] Open up keybindings page on keypress \#680 [\#686](https://github.com/gnome-terminator/terminator/pull/686) ([vssdeo](https://github.com/vssdeo))
- Translate '/po/terminator.pot' in 'pt\_BR' [\#684](https://github.com/gnome-terminator/terminator/pull/684) ([transifex-integration[bot]](https://github.com/apps/transifex-integration))
- Plugin and Group menu item that inserts the name of the terminal. [\#683](https://github.com/gnome-terminator/terminator/pull/683) ([mattrose](https://github.com/mattrose))
- Add Readonly toggle to popup menu [\#679](https://github.com/gnome-terminator/terminator/pull/679) ([mattrose](https://github.com/mattrose))
- Fix argument handling of the --execute flag [\#678](https://github.com/gnome-terminator/terminator/pull/678) ([shawn-ogg](https://github.com/shawn-ogg))
- Remove all ibus workarounds [\#674](https://github.com/gnome-terminator/terminator/pull/674) ([mattrose](https://github.com/mattrose))
- \[bug 613\] - Shortcut for autosplit h/v depending on active terminal … [\#671](https://github.com/gnome-terminator/terminator/pull/671) ([vssdeo](https://github.com/vssdeo))
- \[bug 662\] \[Feature Request\] - In the Context Menu\(Right-Click\) show k… [\#666](https://github.com/gnome-terminator/terminator/pull/666) ([vssdeo](https://github.com/vssdeo))
- \[bug 559\] Add menu autocomplete \#559 [\#665](https://github.com/gnome-terminator/terminator/pull/665) ([vssdeo](https://github.com/vssdeo))
- \[bug 662\] \[Feature Request\] - In the Context Menu\(Right-Click\) show k… [\#663](https://github.com/gnome-terminator/terminator/pull/663) ([vssdeo](https://github.com/vssdeo))
- \[bug 654\] - Plugin Submission : SaveLastSessionLayout Uses Layout to … [\#661](https://github.com/gnome-terminator/terminator/pull/661) ([vssdeo](https://github.com/vssdeo))
- Update terminal.py [\#659](https://github.com/gnome-terminator/terminator/pull/659) ([flaviosteimacher](https://github.com/flaviosteimacher))
- docs: Change number of columns in repology badge [\#657](https://github.com/gnome-terminator/terminator/pull/657) ([pktiuk](https://github.com/pktiuk))
- Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD [\#655](https://github.com/gnome-terminator/terminator/pull/655) ([vssdeo](https://github.com/vssdeo))
- Fix typos [\#651](https://github.com/gnome-terminator/terminator/pull/651) ([kianmeng](https://github.com/kianmeng))
- data: Remove GNOME branding [\#647](https://github.com/gnome-terminator/terminator/pull/647) ([sabriunal](https://github.com/sabriunal))
- this line has an extra ';' symbol [\#632](https://github.com/gnome-terminator/terminator/pull/632) ([xuezhixin](https://github.com/xuezhixin))
- Use the term 'zero padded' instead of 'padded'. [\#189](https://github.com/gnome-terminator/terminator/pull/189) ([phidebian](https://github.com/phidebian))
## [v2.1.2](https://github.com/gnome-terminator/terminator/tree/v2.1.2) (2022-10-19)
[Full Changelog](https://github.com/gnome-terminator/terminator/compare/v2.1.1...v2.1.2)
**Implemented enhancements:**
- \[Feature request\] move layout/session definitions into separate files with a dedicated extension in a dedicated directory [\#604](https://github.com/gnome-terminator/terminator/issues/604)
- Bash completion [\#495](https://github.com/gnome-terminator/terminator/issues/495)
- Changing cursor foreground color [\#467](https://github.com/gnome-terminator/terminator/issues/467)
- Wallpaper configuration option from terminal [\#466](https://github.com/gnome-terminator/terminator/issues/466)
- Launch a new command in a vertical or horizontal split. [\#446](https://github.com/gnome-terminator/terminator/issues/446)
- Separators is wider after upgrading to ubuntu 21.04 [\#445](https://github.com/gnome-terminator/terminator/issues/445)
- Broadcast profile changes to existing terminals [\#421](https://github.com/gnome-terminator/terminator/issues/421)
- How to deactivate the middle mouse button paste? [\#415](https://github.com/gnome-terminator/terminator/issues/415)
- Feature request: expose the window and terminal title setting features in context menu [\#405](https://github.com/gnome-terminator/terminator/issues/405)
- Integrate --layout-json command line parameter so that it can be passed to dbus [\#401](https://github.com/gnome-terminator/terminator/issues/401)
- Feature request: move titlebar colors config to profiles, rather than global settings [\#379](https://github.com/gnome-terminator/terminator/issues/379)
- Visual aids [\#367](https://github.com/gnome-terminator/terminator/issues/367)
- Feature Request: detach tab [\#302](https://github.com/gnome-terminator/terminator/issues/302)
- Pls add version on OS X [\#283](https://github.com/gnome-terminator/terminator/issues/283)
**Fixed bugs:**
- Ctrl+Shift+Mouse-Scroll triggers Ctrl+Mouse Scroll [\#606](https://github.com/gnome-terminator/terminator/issues/606)
- None isn't a valid value of keybindings config anymore [\#548](https://github.com/gnome-terminator/terminator/issues/548)
- psutil.AccessDenied: psutil.AccessDenied \(pid=1\) [\#539](https://github.com/gnome-terminator/terminator/issues/539)
- Find functionality does not show matches on same line [\#511](https://github.com/gnome-terminator/terminator/issues/511)
- Ratio and/or position on a config file's layout ignored [\#433](https://github.com/gnome-terminator/terminator/issues/433)
- Black background remains after hide\_window [\#425](https://github.com/gnome-terminator/terminator/issues/425)
- Cannot create working config file with 5 terminals [\#409](https://github.com/gnome-terminator/terminator/issues/409)
- Terminal loses focus versus tab title [\#400](https://github.com/gnome-terminator/terminator/issues/400)
- Terminal title-bars are transparent on first start [\#392](https://github.com/gnome-terminator/terminator/issues/392)
**Closed issues:**
- Hide window in waybar [\#633](https://github.com/gnome-terminator/terminator/issues/633)
- Split window profile incorrect inheritance [\#631](https://github.com/gnome-terminator/terminator/issues/631)
- \[Question\] is there a way to prevent Terminator from dereferencing symbolic links? [\#617](https://github.com/gnome-terminator/terminator/issues/617)
- Terminator not working on RHEL 9 [\#616](https://github.com/gnome-terminator/terminator/issues/616)
- Is there a right-click menu in sway? [\#614](https://github.com/gnome-terminator/terminator/issues/614)
- Set Terminator tab title via command line [\#603](https://github.com/gnome-terminator/terminator/issues/603)
- Unable to launch KeyError: b'Rss:' [\#601](https://github.com/gnome-terminator/terminator/issues/601)
- Cannot view emoji [\#599](https://github.com/gnome-terminator/terminator/issues/599)
- Clickable filepath:rownumber [\#598](https://github.com/gnome-terminator/terminator/issues/598)
- Feature Request: set initial window size in preferences [\#593](https://github.com/gnome-terminator/terminator/issues/593)
- Update the authorship in README [\#586](https://github.com/gnome-terminator/terminator/issues/586)
- xbindkeys doesn't work in Terminator, but works in other apps [\#582](https://github.com/gnome-terminator/terminator/issues/582)
- Unable to load Keybinder module [\#580](https://github.com/gnome-terminator/terminator/issues/580)
- terminator for MacOS user [\#578](https://github.com/gnome-terminator/terminator/issues/578)
- UTF-8 character breaks terminator config file [\#577](https://github.com/gnome-terminator/terminator/issues/577)
- Terminator need to highlight search string [\#575](https://github.com/gnome-terminator/terminator/issues/575)
- Custom Commands NOT Working in Linux Mint 20.3 [\#573](https://github.com/gnome-terminator/terminator/issues/573)
- Can't add/remove terminal panes from layout editor [\#572](https://github.com/gnome-terminator/terminator/issues/572)
- Language not applied after build [\#569](https://github.com/gnome-terminator/terminator/issues/569)
- Moving Cursor Word By Word using ALT + Arrows [\#566](https://github.com/gnome-terminator/terminator/issues/566)
- Enabling "putty style paste" causes context menu to be unreachable with 2-button mouse [\#565](https://github.com/gnome-terminator/terminator/issues/565)
- Setting stty options [\#564](https://github.com/gnome-terminator/terminator/issues/564)
- Switch focus and splits don't work when terminal is zoomed [\#550](https://github.com/gnome-terminator/terminator/issues/550)
- Will terminator ever consider picking up ligature support? [\#543](https://github.com/gnome-terminator/terminator/issues/543)
- feature request: Implement line spacing as a configuration option [\#542](https://github.com/gnome-terminator/terminator/issues/542)
- Change separator color [\#538](https://github.com/gnome-terminator/terminator/issues/538)
- remotinator split and execute command — cannot determine uuid [\#537](https://github.com/gnome-terminator/terminator/issues/537)
- Split vertical keyboard don't work on debian 11 [\#535](https://github.com/gnome-terminator/terminator/issues/535)
- Vte.Terminal\(\).set\_encoding deprecated [\#534](https://github.com/gnome-terminator/terminator/issues/534)
- Fix Keyboard Input [\#533](https://github.com/gnome-terminator/terminator/issues/533)
- group broadcasting switched on/off for all groups [\#532](https://github.com/gnome-terminator/terminator/issues/532)
- Drop a file from nautilus onto terminator window no longer works \(it used to paste the path a la gnome terminal\) [\#530](https://github.com/gnome-terminator/terminator/issues/530)
- Crash everytime after encoding is changed to TCVN [\#529](https://github.com/gnome-terminator/terminator/issues/529)
- Change the color of the current tab to highlight it better [\#522](https://github.com/gnome-terminator/terminator/issues/522)
- Feature: Configuration to colorize split screens from default grey colour, Issue: Remove ability to select 0 and 1 handle\_size from configuration gui [\#518](https://github.com/gnome-terminator/terminator/issues/518)
- Error when using "Insert Terminal Number" \(Solved?\) [\#517](https://github.com/gnome-terminator/terminator/issues/517)
- Auto-scroll to the cursor position when typing [\#513](https://github.com/gnome-terminator/terminator/issues/513)
- hide\_window mapped with Shift+Control+Alt+$an\_alphabet catches Control+Alt+$an\_alphabet instead [\#509](https://github.com/gnome-terminator/terminator/issues/509)
- Cursor is blinking on inactive windows [\#508](https://github.com/gnome-terminator/terminator/issues/508)
- custom commands are not persisted [\#505](https://github.com/gnome-terminator/terminator/issues/505)
- Terminator slow to close if xclip was invoked [\#503](https://github.com/gnome-terminator/terminator/issues/503)
- terminator failing to open on ubuntu 21.04 [\#502](https://github.com/gnome-terminator/terminator/issues/502)
- Monospace Bold isn't working [\#497](https://github.com/gnome-terminator/terminator/issues/497)
- No prompt when closing terminator now, despite say vim running in terminal [\#496](https://github.com/gnome-terminator/terminator/issues/496)
- suppor for sixel graphics [\#492](https://github.com/gnome-terminator/terminator/issues/492)
- which is deprecated and should not be used [\#488](https://github.com/gnome-terminator/terminator/issues/488)
- could tmux Key bindings using in terminator? [\#474](https://github.com/gnome-terminator/terminator/issues/474)
- Support OpenType font features [\#473](https://github.com/gnome-terminator/terminator/issues/473)
- Crash on Terminal resize when using fish [\#458](https://github.com/gnome-terminator/terminator/issues/458)
- Incorrect layout sorting in notebook [\#453](https://github.com/gnome-terminator/terminator/issues/453)
- Coloring Tabs / Tabs Appearance [\#449](https://github.com/gnome-terminator/terminator/issues/449)
- Option to disable system notifications [\#448](https://github.com/gnome-terminator/terminator/issues/448)
- Window vanishes [\#447](https://github.com/gnome-terminator/terminator/issues/447)
- Multiple Terminator instances randomly crash on Ubuntu 20.04 [\#444](https://github.com/gnome-terminator/terminator/issues/444)
- Option to open URLs with just a click [\#434](https://github.com/gnome-terminator/terminator/issues/434)
- Doubled input from keyboard when broadcasting in tabs [\#432](https://github.com/gnome-terminator/terminator/issues/432)
- Does this tool support macOS Big Sur? [\#430](https://github.com/gnome-terminator/terminator/issues/430)
- terminator is slow [\#426](https://github.com/gnome-terminator/terminator/issues/426)
- Add more fundamental "editor-ish" feature [\#424](https://github.com/gnome-terminator/terminator/issues/424)
- Allow disabling and resetting keybindings in Preferences [\#423](https://github.com/gnome-terminator/terminator/issues/423)
- Project based layout [\#418](https://github.com/gnome-terminator/terminator/issues/418)
- Unable to Install from Source [\#412](https://github.com/gnome-terminator/terminator/issues/412)
- CTRL+A behaviour abnormal [\#384](https://github.com/gnome-terminator/terminator/issues/384)
- regexp/command hyperlink handler [\#381](https://github.com/gnome-terminator/terminator/issues/381)
- Update PPA to 2.1.0 [\#374](https://github.com/gnome-terminator/terminator/issues/374)
- Create Snap and Flatpak for Terminator [\#206](https://github.com/gnome-terminator/terminator/issues/206)
- Remove gtk-update-icon-cache handling in setup [\#102](https://github.com/gnome-terminator/terminator/issues/102)
**Merged pull requests:**
- update translations [\#656](https://github.com/gnome-terminator/terminator/pull/656) ([mattrose](https://github.com/mattrose))
- Terminal ctrl+mousewheel: do not try to zoom if shift is pressed [\#609](https://github.com/gnome-terminator/terminator/pull/609) ([Vulcalien](https://github.com/Vulcalien))
- More fixes to the Color pickers in the Preferences Editor [\#592](https://github.com/gnome-terminator/terminator/pull/592) ([mattrose](https://github.com/mattrose))
- Modification in the /terminatorlib/prefseditor.py file [\#590](https://github.com/gnome-terminator/terminator/pull/590) ([amaan211](https://github.com/amaan211))
- Various README fixes [\#588](https://github.com/gnome-terminator/terminator/pull/588) ([mattrose](https://github.com/mattrose))
- Remove duplicated info in some debug messages [\#576](https://github.com/gnome-terminator/terminator/pull/576) ([Vulcalien](https://github.com/Vulcalien))
- Added hotfix for \#78 that deletes GTK\_IM\_MODULE environment variable [\#574](https://github.com/gnome-terminator/terminator/pull/574) ([ozzdemir](https://github.com/ozzdemir))
- Fix POTFILES.in + update translation files [\#571](https://github.com/gnome-terminator/terminator/pull/571) ([Vulcalien](https://github.com/Vulcalien))
- Add initial flatpak-spawn support [\#570](https://github.com/gnome-terminator/terminator/pull/570) ([JayDoubleu](https://github.com/JayDoubleu))
- Fix: handle\_size treated as cell\_width [\#561](https://github.com/gnome-terminator/terminator/pull/561) ([Vulcalien](https://github.com/Vulcalien))
- Transifex translations from Dec 20 2021 [\#558](https://github.com/gnome-terminator/terminator/pull/558) ([mattrose](https://github.com/mattrose))
- Unzoom terminal on interaction [\#553](https://github.com/gnome-terminator/terminator/pull/553) ([Vulcalien](https://github.com/Vulcalien))
- Add ability to configure cell width \(font character spacing\) [\#552](https://github.com/gnome-terminator/terminator/pull/552) ([FernandoBasso](https://github.com/FernandoBasso))
- Improve and optimize the code for background images [\#551](https://github.com/gnome-terminator/terminator/pull/551) ([Vulcalien](https://github.com/Vulcalien))
- Fix: 'None' value for keybindings breaks editor [\#549](https://github.com/gnome-terminator/terminator/pull/549) ([Vulcalien](https://github.com/Vulcalien))
- don't traceback while searching through /proc [\#546](https://github.com/gnome-terminator/terminator/pull/546) ([mattrose](https://github.com/mattrose))
- os.environ does not have LANGUAGE in Centos8. [\#544](https://github.com/gnome-terminator/terminator/pull/544) ([xuezhixin](https://github.com/xuezhixin))
- Remove Encoding settings \(deprecated\) [\#536](https://github.com/gnome-terminator/terminator/pull/536) ([Vulcalien](https://github.com/Vulcalien))
- Allow multiline commands in Custom Commands plugin [\#525](https://github.com/gnome-terminator/terminator/pull/525) ([VDuchon](https://github.com/VDuchon))
- Add paste\_selection keybinding. [\#520](https://github.com/gnome-terminator/terminator/pull/520) ([rkitover](https://github.com/rkitover))
- Fix terminal separator size setting [\#519](https://github.com/gnome-terminator/terminator/pull/519) ([caprinux](https://github.com/caprinux))
- Automatically focus the Keybindings menu [\#516](https://github.com/gnome-terminator/terminator/pull/516) ([Vulcalien](https://github.com/Vulcalien))
- Fix hide\_window keybinding unset check [\#515](https://github.com/gnome-terminator/terminator/pull/515) ([tomty89](https://github.com/tomty89))
- Add 'Disable mouse paste' [\#512](https://github.com/gnome-terminator/terminator/pull/512) ([Vulcalien](https://github.com/Vulcalien))
- Bug Fix: hide\_window keybinding ignores Shift key [\#510](https://github.com/gnome-terminator/terminator/pull/510) ([Vulcalien](https://github.com/Vulcalien))
- Improve argument parser + implement bash completion [\#506](https://github.com/gnome-terminator/terminator/pull/506) ([Vulcalien](https://github.com/Vulcalien))
- add Set Window Title item to context menu [\#501](https://github.com/gnome-terminator/terminator/pull/501) ([mattrose](https://github.com/mattrose))
- BugFix: terminal won't restart if there is no custom command [\#500](https://github.com/gnome-terminator/terminator/pull/500) ([Vulcalien](https://github.com/Vulcalien))
- Add a "Copy" button to clone profiles [\#499](https://github.com/gnome-terminator/terminator/pull/499) ([Vulcalien](https://github.com/Vulcalien))
- Make tabs detachable + minor bugfix [\#494](https://github.com/gnome-terminator/terminator/pull/494) ([Vulcalien](https://github.com/Vulcalien))
- remove gtk-update-icon-cache from setup.py [\#493](https://github.com/gnome-terminator/terminator/pull/493) ([mattrose](https://github.com/mattrose))
- remove vsplit\_cmd and hsplit\_cmd from ipc.py, superseded by newer hsp… [\#491](https://github.com/gnome-terminator/terminator/pull/491) ([mattrose](https://github.com/mattrose))
- Update tr.po [\#490](https://github.com/gnome-terminator/terminator/pull/490) ([StephenPeringer](https://github.com/StephenPeringer))
- add bg\_img and bg\_img\_all commands to remotinator [\#487](https://github.com/gnome-terminator/terminator/pull/487) ([mattrose](https://github.com/mattrose))
- Cursor: make it possible to change foreground color \(\#467\) [\#486](https://github.com/gnome-terminator/terminator/pull/486) ([Vulcalien](https://github.com/Vulcalien))
- fixes for --config-json [\#484](https://github.com/gnome-terminator/terminator/pull/484) ([mattrose](https://github.com/mattrose))
- GUI: set all CheckButtons off to avoid blinking + remove grid empty rows/columns [\#482](https://github.com/gnome-terminator/terminator/pull/482) ([Vulcalien](https://github.com/Vulcalien))
- Move titlebar settings to profiles \(\#379\) [\#481](https://github.com/gnome-terminator/terminator/pull/481) ([Vulcalien](https://github.com/Vulcalien))
- Issue 365 [\#480](https://github.com/gnome-terminator/terminator/pull/480) ([mattrose](https://github.com/mattrose))
- Fix typo in `po/de.po` [\#476](https://github.com/gnome-terminator/terminator/pull/476) ([dennis-benzinger-hybris](https://github.com/dennis-benzinger-hybris))
- add parameters to remotinator split commands [\#472](https://github.com/gnome-terminator/terminator/pull/472) ([mattrose](https://github.com/mattrose))
- add switch\_profile\_all command to remotinator [\#471](https://github.com/gnome-terminator/terminator/pull/471) ([mattrose](https://github.com/mattrose))
- Set CAN\_FOCUS to False for notebook widgets [\#470](https://github.com/gnome-terminator/terminator/pull/470) ([marktimarev](https://github.com/marktimarev))
- tell titlebar to start focussed out if it does not have focus [\#462](https://github.com/gnome-terminator/terminator/pull/462) ([mattrose](https://github.com/mattrose))
- Update translation [\#460](https://github.com/gnome-terminator/terminator/pull/460) ([pktiuk](https://github.com/pktiuk))
- Add new plugin for opening current directory using right mouse button [\#459](https://github.com/gnome-terminator/terminator/pull/459) ([pktiuk](https://github.com/pktiuk))
- Fixed Issue \#425 \(hide\_window will try to show a destroyed window\) [\#456](https://github.com/gnome-terminator/terminator/pull/456) ([Vulcalien](https://github.com/Vulcalien))
- Incorrect layout sorting in notebook [\#454](https://github.com/gnome-terminator/terminator/pull/454) ([AsadJivani](https://github.com/AsadJivani))
- Closing tab on middle mouse button press [\#451](https://github.com/gnome-terminator/terminator/pull/451) ([kocho1984](https://github.com/kocho1984))
- Bug Fix: 'Clear selection on copy' is always unchecked [\#443](https://github.com/gnome-terminator/terminator/pull/443) ([Vulcalien](https://github.com/Vulcalien))
- Fixed issue \#433 \(layout sometimes ignores ratio\) [\#442](https://github.com/gnome-terminator/terminator/pull/442) ([Vulcalien](https://github.com/Vulcalien))
- Fix the background image loading exception handling [\#436](https://github.com/gnome-terminator/terminator/pull/436) ([GerbenWelter](https://github.com/GerbenWelter))
- Added set\_tab\_title command to remotinator. [\#435](https://github.com/gnome-terminator/terminator/pull/435) ([yusufgungor](https://github.com/yusufgungor))
- Ukrainianized by 93% [\#428](https://github.com/gnome-terminator/terminator/pull/428) ([balac-ode](https://github.com/balac-ode))
- Fixed geometry hints [\#416](https://github.com/gnome-terminator/terminator/pull/416) ([Vulcalien](https://github.com/Vulcalien))
- Feat+run cmd on match [\#399](https://github.com/gnome-terminator/terminator/pull/399) ([nojhan](https://github.com/nojhan))
- add feat: config to open links with single click [\#398](https://github.com/gnome-terminator/terminator/pull/398) ([nojhan](https://github.com/nojhan))
- Add new vsplit hsplit cmd dbus [\#390](https://github.com/gnome-terminator/terminator/pull/390) ([TheBigS](https://github.com/TheBigS))
- Added new get\_focused\_terminal dbus command which returns uuid of current focused terminal [\#389](https://github.com/gnome-terminator/terminator/pull/389) ([TheBigS](https://github.com/TheBigS))
## [v2.1.1](https://github.com/gnome-terminator/terminator/tree/v2.1.1) (2021-04-02)
[Full Changelog](https://github.com/gnome-terminator/terminator/compare/v2.1.0...v2.1.1)
@ -43,6 +273,7 @@
**Merged pull requests:**
- Release version 2.1.1 [\#413](https://github.com/gnome-terminator/terminator/pull/413) ([mattrose](https://github.com/mattrose))
- i18n: pt\_BR: add missing space in translations with shortcuts [\#406](https://github.com/gnome-terminator/terminator/pull/406) ([terceiro](https://github.com/terceiro))
- Fixed race condition when calling grab\_focus after underlying vte could be closed [\#388](https://github.com/gnome-terminator/terminator/pull/388) ([TheBigS](https://github.com/TheBigS))
- disable 2.7 tests until we can figure out how to run them in GH [\#386](https://github.com/gnome-terminator/terminator/pull/386) ([mattrose](https://github.com/mattrose))

View File

@ -117,5 +117,5 @@ Ubuntu | copied from Debian | [launchpad.net/ubuntu] | | [bugs.launchpad.n
A more extensive list can be found on Repology:
[![Packaging status](https://repology.org/badge/vertical-allrepos/terminator.svg)](https://repology.org/project/terminator/versions)
[![Packaging status](https://repology.org/badge/vertical-allrepos/terminator.svg?columns=3)](https://repology.org/project/terminator/versions)

View File

@ -1,7 +1,7 @@
Terminator
==========
by Chris Jones <cmsj@tenshu.net> and others.
Started by Chris Jones <cmsj@tenshu.net> in 2007, maintained from 2014 to 2020 by Stephen Boddy, currently maintained by Matt Rose. Terminator has had contributions from countless others listed in the [AUTHORS](AUTHORS) file
## Description
@ -82,6 +82,9 @@ vte-demo.py was not my code and is copyright its original author. While it
does not contain any specific licensing information in it, the VTE package
appears to be licenced under LGPL v2.
The original version 0.1 release of Terminator was on Saturday, 28 July 2007.
[Here is the archived Terminator 0.1 release announcement](http://cmsj.net/2007/07/28/terminator-01-released.html)
## Licensing
The gedit terminal plugin is part of the gedit-plugins package, which is

View File

@ -1,6 +1,6 @@
The JSONs files in this directory are example config files used by `--config-json` option.
Once this feature would be documented officialy this directoy can be removed.
Once this feature would be documented officially this directory can be removed.
Example:
```

View File

@ -47,4 +47,5 @@
</screenshots>
<url type="homepage">https://github.com/gnome-terminator/terminator</url>
<updatecontact>terminator@lazyfrosch.de</updatecontact>
<developer_name>The Terminator Team</developer_name>
</component>

4
doc/gen_manpages.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
asciidoctor -b manpage terminator.adoc
asciidoctor -b manpage terminator_config.adoc

View File

@ -1,286 +1,485 @@
.TH "TERMINATOR" "1" "Jan 5, 2008" "" ""
'\" t
.\" Title: terminator
.\" Author: [see the "AUTHOR(S)" section]
.\" Generator: Asciidoctor 2.0.18
.\" Date: 2023-04-01
.\" Manual: Manual for Terminator
.\" Source: Terminator
.\" Language: English
.\"
.TH "TERMINATOR" "1" "2023-04-01" "Terminator" "Manual for Terminator"
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.ss \n[.ss] 0
.nh
.ad l
.de URL
\fI\\$2\fP <\\$1>\\$3
..
.als MTO URL
.if \n[.g] \{\
. mso www.tmac
. am URL
. ad l
. .
. am MTO
. ad l
. .
. LINKSTYLE blue R < >
.\}
.SH "NAME"
Terminator \- Multiple GNOME terminals in one window
terminator \- multiple GNOME terminals in one window
.SH "SYNOPSIS"
.B terminator
.RI [ options ]
.br
.sp
\fBterminator\fP [\fIoptions\fP]
.SH "DESCRIPTION"
.sp
This manual page documents \fBTerminator\fP, a terminal emulator application.
.PP
.sp
\fBTerminator\fP is a program that allows users to set up flexible
arrangements of GNOME terminals. It is aimed at those who normally
arrange lots of terminals near each other, but don't want to use a
arrange lots of terminals near each other, but don\(cqt want to use a
frame based window manager.
.SH "OPTIONS"
This program follow the usual GNU command line syntax, with long
options starting with two dashes (`\-').
.sp
This program follows the usual GNU command line syntax, with long
options starting with two dashes (`\-\*(Aq).
A summary of options is included below.
.TP
.B \-h, \-\-help
Show summary of options
.TP
.B \-v, \-\-version
Show the version of the Terminator installation
.TP
.B \-m, \-\-maximise
Start with a maximised window
.B \-M, \-\-maximize
Start with a maximized window
.TP
.B \-f, \-\-fullscreen
Start with a fullscreen window
.TP
.B \-b, \-\-borderless
Instruct the window manager not to render borders/decoration on the
Terminator window (this works well with \-m)
.TP
.B \-H, \-\-hidden
.sp
\fB\-h\fP, \fB\-\-help\fP
.RS 4
Show summary of options.
.RE
.sp
\fB\-v\fP, \fB\-\-version\fP
.RS 4
Show the version of the Terminator installation.
.RE
.sp
\fB\-m\fP, \fB\-M\fP, \fB\-\-maximise\fP, \fB\-\-maximize\fP
.RS 4
Start with a maximised window.
.RE
.sp
\fB\-f\fP, \fB\-\-fullscreen\fP
.RS 4
Start with a fullscreen window.
.RE
.sp
\fB\-b\fP, \fB\-\-borderless\fP
.RS 4
Instruct the window manager not to render borders/decorations on the
Terminator window (this works well with \-\-maximise).
.RE
.sp
\fB\-H\fP, \fB\-\-hidden\fP
.RS 4
Hide the Terminator window by default. Its visibility can be toggled
with the \fBhide_window\fR keyboard shortcut (Ctrl-Shift-Alt-a by default)
.TP
.B \-T, \-\-title
Force the Terminator window to use a specific name rather than updating it dynamically
based on the wishes of the child shell.
.TP
.B \-\-geometry=GEOMETRY
Specifies the preferred size and position of Terminator's window; see X(7).
.TP
.B \-e, \-\-command=COMMAND
Runs the specified command instead of your default shell or profile specified command. Note: if
Terminator is launched as x-terminal-emulator \-e behaves like \-x, and the longform becomes
\-\-execute2=COMMAND
.TP
.B \-x, \-\-execute COMMAND [ARGS]
Runs \fBthe rest of the command line\fR instead of your default shell or profile specified command.
.TP
.B \-\-working\-directory=DIR
Set the terminal's working directory
.TP
.B \-g, \-\-config FILE
Use the specified FILE for configuration
.TP
.B \-r, \-\-role=ROLE
Set a custom WM_WINDOW_ROLE property on the window
.TP
.B \-l, \-\-layout=LAYOUT
with the \fBhide_window\fP keyboard shortcut (Ctrl+Shift+Alt+A by default).
.RE
.sp
\fB\-T\fP \fIFORCEDTITLE\fP, \fB\-\-title\fP=\fIFORCEDTITLE\fP
.RS 4
Force the Terminator window to use a specific name rather than updating
it dynamically based on the wishes of the child shell.
.RE
.sp
\fB\-\-geometry\fP=\fIGEOMETRY\fP
.RS 4
Specify the preferred size and position of Terminator\(cqs window;
see \fBX\fP(7).
.RE
.sp
\fB\-e\fP \fICOMMAND\fP, \fB\-\-command\fP=\fICOMMAND\fP
.RS 4
Run the specified command instead of the default shell or profile
specified command.
.br
Note: if Terminator is launched as x\-terminal\-emulator \-e behaves like
\-x, and the longform becomes \-\-execute2=COMMAND.
.RE
.sp
\fB\-x\fP \fICOMMAND\fP [\fIARGS\fP], \fB\-\-execute\fP=\fICOMMAND\fP [\fIARGS\fP]
.RS 4
Run \fBthe rest of the command line\fP instead of the default shell or
profile specified command.
.RE
.sp
\fB\-\-working\-directory\fP=\fIDIR\fP
.RS 4
Set the terminal\(cqs working directory.
.RE
.sp
\fB\-g\fP \fIFILE\fP, \fB\-\-config\fP=\fIFILE\fP
.RS 4
Use the specified file for configuration.
.RE
.sp
\fB\-r\fP \fIROLE\fP, \fB\-\-role\fP=\fIROLE\fP
.RS 4
Set a custom WM_WINDOW_ROLE property on the window.
.RE
.sp
\fB\-l\fP \fILAYOUT\fP, \fB\-\-layout\fP=\fILAYOUT\fP
.RS 4
Start Terminator with a specific layout. The argument here is the name
of a saved layout.
.TP
.B \-s, \-\-select-layout=LAYOUT
.RE
.sp
\fB\-s\fP \fILAYOUT\fP, \fB\-\-select\-layout\fP=\fILAYOUT\fP
.RS 4
Open the layout launcher window instead of the normal terminal.
.TP
.B \-p, \-\-profile=PROFILE
Use a different profile as the default
.TP
.B \-i, \-\-icon=FORCEDICON
.RE
.sp
\fB\-p\fP, \fB\-\-profile\fP=\fIPROFILE\fP
.RS 4
Use a different profile as the default.
.RE
.sp
\fB\-i\fP, \fB\-\-icon\fP=\fIFORCEDICON\fP
.RS 4
Set a custom icon for the window (by file or name)
.TP
.B \-u, \-\-no-dbus
Disable DBus
.TP
.B \-d, \-\-debug
Enable debugging output (please use this when reporting bugs). This
can be specified twice to enable a built-in python debugging server.
.TP
.B \-\-debug\-classes=DEBUG_CLASSES
.RE
.sp
\fB\-u\fP, \fB\-\-no\-dbus\fP
.RS 4
Disable DBus.
.RE
.sp
\fB\-d\fP, \fB\-\-debug\fP
.RS 4
Enable debugging output (please use this when reporting bugs). This can
be specified twice to enable a built\-in python debugging server.
.RE
.sp
\fB\-\-debug\-classes\fP=\fIDEBUG_CLASSES\fP
.RS 4
If this is specified as a comma separated list, debugging output will
only be printed from the specified classes.
.TP
.B \-\-debug\-methods=DEBUG_METHODS
.RE
.sp
\fB\-\-debug\-methods\fP=\fIDEBUG_METHODS\fP
.RS 4
If this is specified as a comma separated list, debugging output will
only be printed from the specified functions. If this is specified in
addition to \-\-debug-classes, only the intersection of the two lists
will be displayed
.TP
.B \-\-new-tab
addition to \-\-debug\-classes, only the intersection of the two lists will
be displayed.
.RE
.sp
\fB\-\-new\-tab\fP
.RS 4
If this is specified and Terminator is already running, DBus will be
used to spawn a new tab in the first Terminator window.
.RE
.sp
\fB\-\-toggle\-visibility\fP
.RS 4
If this is specified and Terminator is already running, DBus will be
used to toggle Terminator window visibility. Usable under Wayland to
replace hide keyboad shortcut.
.RE
.SH "KEYBINDINGS"
The following default keybindings can be used to control Terminator:
.TP
.B F1
.sp
The following default keybindings can be used to control Terminator.
Most of these keybindings can be changed in the Preferences.
.sp
\fBF1\fP
.RS 4
Launches the full HTML manual.
.SS Creation & Destruction
.PP
.RE
.SS "Creation & Destruction"
.sp
The following items relate to creating and destroying terminals.
.TP
.B Ctrl+Shift+O
Split terminals H\fBo\fRrizontally.
.TP
.B Ctrl+Shift+E
Split terminals V\fBe\fRrtically.
.TP
.B Ctrl+Shift+T
Open new \fBt\fRab.
.TP
.B Ctrl+Shift+I
Open a new window. (Note: Unlike in previous releases, this window is
part of the same Terminator process.)
.TP
.B Super+I
.sp
\fBCtrl+Shift+O\fP
.RS 4
Split terminals H\fIo\fPrizontally.
.RE
.sp
\fBCtrl+Shift+E\fP
.RS 4
Split terminals V\fIe\fPrtically.
.RE
.sp
\fBCtrl+Shift+T\fP
.RS 4
Open new \fIt\fPab.
.RE
.sp
\fBCtrl+Shift+I\fP
.RS 4
Open a new window.
.br
(Note: unlike in previous releases, this window is part of the same
Terminator process.)
.RE
.sp
\fBSuper+I\fP
.RS 4
Spawn a new Terminator process.
.TP
.B Alt+L
Open \fBl\fRayout launcher.
.TP
.B Ctrl+Shift+W
.RE
.sp
\fBAlt+L\fP
.RS 4
Open \fIl\fPayout launcher.
.RE
.sp
\fBCtrl+Shift+W\fP
.RS 4
Close the current terminal.
.TP
.B Ctrl+Shift+Q
.RE
.sp
\fBCtrl+Shift+Q\fP
.RS 4
Close the current window.
.SS Navigation
.PP
.RE
.SS "Navigation"
.sp
The following items relate to moving between and around terminals.
.TP
.B Alt+Up
Move to the terminal \fBabove\fR the current one.
.TP
.B Alt+Down
Move to the terminal \fBbelow\fR the current one.
.TP
.B Alt+Left
Move to the terminal \fBleft of\fR the current one.
.TP
.B Alt+Right
Move to the terminal \fBright of\fR the current one.
.TP
.B Ctrl+PageDown
Move to next Tab.
.TP
.B Ctrl+PageUp
Move to previous Tab.
.TP
.B Ctrl+Shift+N or Ctrl+Tab
Move to \fBn\fRext terminal within the same tab, use Ctrl+PageDown to move to the next tab.
If \fBcycle_term_tab\fR is \fBFalse\fR, cycle within the same tab will be disabled.
.TP
.B Ctrl+Shift+P or Ctrl+Shift+Tab
Move to \fBp\fRrevious terminal within the same tab, use Ctrl+PageUp to move to the previous tab.
If \fBcycle_term_tab\fR is \fBFalse\fR, cycle within the same tab will be disabled.
.SS Organisation
.PP
.sp
\fBAlt+Up\fP
.RS 4
Move to the terminal \fBabove\fP the current one.
.RE
.sp
\fBAlt+Down\fP
.RS 4
Move to the terminal \fBbelow\fP the current one.
.RE
.sp
\fBAlt+Left\fP
.RS 4
Move to the terminal \fBleft of\fP the current one.
.RE
.sp
\fBAlt+Right\fP
.RS 4
Move to the terminal \fBright of\fP the current one.
.RE
.sp
\fBCtrl+PageDown\fP
.RS 4
Move to next tab.
.RE
.sp
\fBCtrl+PageUp\fP
.RS 4
Move to previous tab.
.RE
.sp
\fBCtrl+Shift+N\fP or \fBCtrl+Tab\fP
.RS 4
Move to the \fIn\fPext terminal within the same tab.
.br
.RE
.sp
\fBCtrl+Shift+P\fP or \fBCtrl+Shift+Tab\fP
.RS 4
Move to the \fIp\fPrevious terminal within the same tab.
.br
.RE
.SS "Organisation"
.sp
The following items relate to arranging and resizing terminals.
.TP
.B Ctrl+Shift+Right
Move parent dragbar \fBRight\fR.
.TP
.B Ctrl+Shift+Left
Move parent dragbar \fBLeft\fR.
.TP
.B Ctrl+Shift+Up
Move parent dragbar \fBUp\fR.
.TP
.B Ctrl+Shift+Down
Move parent dragbar \fBDown\fR.
.TP
.B Super+R
\fBR\fRotate terminals clockwise.
.TP
.B Super+Shift+R
\fBR\fRotate terminals counter-clockwise.
.TP
.SH "Drag and Drop"
.sp
\fBCtrl+Shift+Right\fP
.RS 4
Move parent dragbar \fBright\fP.
.RE
.sp
\fBCtrl+Shift+Left\fP
.RS 4
Move parent dragbar \fBleft\fP.
.RE
.sp
\fBCtrl+Shift+Up\fP
.RS 4
Move parent dragbar \fBup\fP.
.RE
.sp
\fBCtrl+Shift+Down\fP
.RS 4
Move parent dragbar \fBdown\fP.
.RE
.sp
\fBSuper+R\fP
.RS 4
\fIR\fPotate terminals clockwise.
.RE
.sp
\fBSuper+Shift+R\fP
.RS 4
\fIR\fPotate terminals counter\-clockwise.
.RE
.sp
\fBCtrl+Shift+PageDown\fP
.RS 4
Swap tab position with next tab.
.RE
.sp
\fBCtrl+Shift+PageUp\fP
.RS 4
Swap tab position with previous tab.
.RE
.sp
\fBDrag and Drop\fP
.RS 4
The layout can be modified by moving terminals with Drag and Drop.
To start dragging a terminal, click and hold on its titlebar.
Alternatively, hold down \fBCtrl\fP, click and hold the \fBright\fP mouse button.
Then, \fB**Release Ctrl**\fP. You can now drag the terminal to the point in the layout you would like it to be.
The zone where the terminal would be inserted will be highlighted.
.TP
.B Ctrl+Shift+PageDown
Swap tab position with next Tab.
.TP
.B Ctrl+Shift+PageUp
Swap tab position with previous Tab.
.SS Miscellaneous
.PP
The following items relate to miscellaneous terminal related functions.
.TP
.B Ctrl+Shift+C
Copy selected text to clipboard.
.TP
.B Ctrl+Shift+V
Paste clipboard text.
.TP
.B Ctrl+Shift+S
Hide/Show \fBS\fRcrollbar.
.TP
.B Ctrl+Shift+F
Search within terminal scrollback.
.TP
.B Ctrl+Shift+R
Reset terminal state.
.TP
.B Ctrl+Shift+G
Reset terminal state and clear window.
.TP
.B Ctrl+Plus (+)
Increase font size. \fBNote:\fP This may require you to press shift, depending on your keyboard.
.TP
.B Ctrl+Minus (-)
Decrease font size. \fBNote:\fP This may require you to press shift, depending on your keyboard.
.TP
.B Ctrl+Zero (0)
Restore font size to original setting.
.TP
.B Ctrl+Alt+W
Rename window title.
.TP
.B Ctrl+Alt+A
Rename tab title.
.TP
.B Ctrl+Alt+X
Rename terminal title.
.TP
.B Super+1
Insert terminal number, i.e. 1 to 12.
.TP
.B Super+0
Insert padded terminal number, i.e. 01 to 12.
.SS Grouping & Broadcasting
.PP
Then, \fB**release Ctrl**\fP. You can now drag the terminal to the point
in the layout you would like it to be. The zone where the terminal would
be inserted will be highlighted.
.RE
.SS "Focus"
.sp
The following items relate to helping to focus on a specific terminal.
.TP
.B F11
.sp
\fBF11\fP
.RS 4
Toggle window to fullscreen.
.TP
.B Ctrl+Shift+X
Toggle between showing all terminals and only showing the current one (maximise).
.TP
.B Ctrl+Shift+Z
Toggle between showing all terminals and only showing a scaled version of the current one (zoom).
.TP
.B Ctrl+Shift+Alt+A
Hide the initial window. Note that this is a global binding, and can only be bound once.
.PP
.RE
.sp
\fBCtrl+Shift+X\fP
.RS 4
Toggle between showing all terminals and only showing the current one
(maximise).
.RE
.sp
\fBCtrl+Shift+Z\fP
.RS 4
Toggle between showing all terminals and only showing a scaled version
of the current one (zoom).
.RE
.sp
\fBCtrl+Shift+Alt+A\fP
.RS 4
Hide the initial window. Note that this is a X11 global binding, and can
only be bound once. On Wayland use window manager keyboard shortcuts to
call \fBterminator \-\-toggle\-visibility\fP.
.RE
.SS "Grouping & Broadcasting"
.sp
The following items relate to grouping and broadcasting.
.TP
.B Super+T
Group all terminals in the current tab so input sent to one of them, goes to all terminals in the current tab.
.TP
.B Super+Shift+T
.sp
\fBSuper+T\fP
.RS 4
Group all terminals in the current tab so that any input sent to one of
them goes to all of them.
.RE
.sp
\fBSuper+Shift+T\fP
.RS 4
Remove grouping from all terminals in the current tab.
.TP
.B Super+G
Group all terminals so that any input sent to one of them, goes to all of them.
.TP
.B Super+Shift+G
.RE
.sp
\fBSuper+G\fP
.RS 4
Group all terminals so that any input sent to one of them goes to all of
them.
.RE
.sp
\fBSuper+Shift+G\fP
.RS 4
Remove grouping from all terminals.
.TP
.B Alt+A
Broadcast to All terminals.
.TP
.B Alt+G
Broadcast to Grouped terminals.
.TP
.B Alt+O
Broadcast Off.
.PP
Most of these keybindings are changeable in the Preferences.
.SH "SEE ALSO"
.BR terminator_config(5)
.SH "AUTHOR"
.RE
.sp
\fBAlt+A\fP
.RS 4
Broadcast to \fIa\fPll terminals.
.RE
.sp
\fBAlt+G\fP
.RS 4
Broadcast to \fIg\fProuped terminals.
.RE
.sp
\fBAlt+O\fP
.RS 4
Broadcast \fIo\fPff.
.RE
.SS "Miscellaneous"
.sp
The following items relate to miscellaneous terminal related functions.
.sp
\fBCtrl+Shift+C\fP
.RS 4
Copy selected text to clipboard.
.RE
.sp
\fBCtrl+Shift+V\fP
.RS 4
Paste clipboard text.
.RE
.sp
\fBCtrl+Shift+S\fP
.RS 4
Toggle \fIs\fPcrollbar.
.RE
.sp
\fBCtrl+Shift+F\fP
.RS 4
Search within terminal scrollback.
.RE
.sp
\fBCtrl+Shift+R\fP
.RS 4
Reset terminal state.
.RE
.sp
\fBCtrl+Shift+G\fP
.RS 4
Reset terminal state and clear window.
.RE
.sp
\fBCtrl+Plus (+)\fP
.RS 4
Increase font size.
.br
Note: this may require you to press shift, depending on your keyboard.
.RE
.sp
\fBCtrl+Minus (\-)\fP
.RS 4
Decrease font size.
.br
Note: this may require you to press shift, depending on your keyboard.
.RE
.sp
\fBCtrl+Zero (0)\fP
.RS 4
Restore font size to original setting.
.RE
.sp
\fBCtrl+Alt+W\fP
.RS 4
Rename window title.
.RE
.sp
\fBCtrl+Alt+A\fP
.RS 4
Rename tab title.
.RE
.sp
\fBCtrl+Alt+X\fP
.RS 4
Rename terminal title.
.RE
.sp
\fBSuper+1\fP
.RS 4
Insert terminal number, i.e. 1 to 12.
.RE
.sp
\fBSuper+0\fP
.RS 4
Insert padded terminal number, i.e. 01 to 12.
.RE
.SH "AUTHORS"
.sp
Terminator was written by Chris Jones <cmsj@tenshu.net> and others.
.PP
This manual page was written by Chris Jones <cmsj@tenshu.net>
and others.
.sp
This manual page was written by Chris Jones <cmsj@tenshu.net> and others.
.SH "SEE ALSO"
.sp
\fBterminator_config\fP(5)

312
doc/terminator.adoc Normal file
View File

@ -0,0 +1,312 @@
= Terminator(1)
:doctype: manpage
:manmanual: Manual for Terminator
:mansource: Terminator
:revdate: 2023-04-01
:docdate: {revdate}
== NAME
terminator - multiple GNOME terminals in one window
== SYNOPSIS
*terminator* [_options_]
== DESCRIPTION
This manual page documents *Terminator*, a terminal emulator application.
*Terminator* is a program that allows users to set up flexible
arrangements of GNOME terminals. It is aimed at those who normally
arrange lots of terminals near each other, but don't want to use a
frame based window manager.
== OPTIONS
This program follows the usual GNU command line syntax, with long
options starting with two dashes (`-').
A summary of options is included below.
*-h*, *--help*::
Show summary of options.
*-v*, *--version*::
Show the version of the Terminator installation.
*-m*, *-M*, *--maximise*, *--maximize*::
Start with a maximised window.
*-f*, *--fullscreen*::
Start with a fullscreen window.
*-b*, *--borderless*::
Instruct the window manager not to render borders/decoration on the
Terminator window (this works well with --maximise).
*-H*, *--hidden*::
Hide the Terminator window by default. Its visibility can be toggled
with the *hide_window* keyboard shortcut (Ctrl+Shift+Alt+A by default).
*-T* _FORCEDTITLE_, **--title**=__FORCEDTITLE__::
Force the Terminator window to use a specific name rather than updating
it dynamically based on the wishes of the child shell.
**--geometry**=__GEOMETRY__::
Specify the preferred size and position of Terminator's window;
see *X*(7).
*-e* _COMMAND_, **--command**=__COMMAND__::
Run the specified command instead of the default shell or profile
specified command. +
Note: if Terminator is launched as x-terminal-emulator -e behaves like
-x, and the longform becomes --execute2=COMMAND.
*-x* _COMMAND_ [__ARGS__], **--execute**=__COMMAND__ [__ARGS__]::
Run *the rest of the command line* instead of the default shell or
profile specified command.
**--working-directory**=__DIR__::
Set the terminal's working directory.
*-g* _FILE_, **--config**=__FILE__::
Use the specified file for configuration.
// TODO --config-json option
*-r* _ROLE_, **--role**=__ROLE__::
Set a custom WM_WINDOW_ROLE property on the window.
*-l* _LAYOUT_, **--layout**=__LAYOUT__::
Start Terminator with a specific layout. The argument here is the name
of a saved layout.
*-s* _LAYOUT_, **--select-layout**=__LAYOUT__::
Open the layout launcher window instead of the normal terminal.
*-p*, **--profile**=__PROFILE__::
Use a different profile as the default.
*-i*, **--icon**=__FORCEDICON__::
Set a custom icon for the window (by file or name)
*-u*, *--no-dbus*::
Disable DBus.
// Could 'Start Terminator with DBus disabled.' be better?
*-d*, *--debug*::
Enable debugging output (please use this when reporting bugs). This can
be specified twice to enable a built-in python debugging server.
**--debug-classes**=__DEBUG_CLASSES__::
If this is specified as a comma separated list, debugging output will
only be printed from the specified classes.
**--debug-methods**=__DEBUG_METHODS__::
If this is specified as a comma separated list, debugging output will
only be printed from the specified functions. If this is specified in
addition to --debug-classes, only the intersection of the two lists will
be displayed.
*--new-tab*::
If this is specified and Terminator is already running, DBus will be
used to spawn a new tab in the first Terminator window.
*--toggle-visibility*::
If this is specified and Terminator is already running, DBus will be
used to toggle Terminator window visibility. Usable under Wayland to
replace hide keyboad shortcut.
== KEYBINDINGS
The following default keybindings can be used to control Terminator.
Most of these keybindings can be changed in the Preferences.
*F1*::
Launches the full HTML manual.
=== Creation & Destruction
The following items relate to creating and destroying terminals.
*Ctrl+Shift+O*::
Split terminals H__o__rizontally.
*Ctrl+Shift+E*::
Split terminals V__e__rtically.
*Ctrl+Shift+T*::
Open new __t__ab.
*Ctrl+Shift+I*::
Open a new window. +
(Note: unlike in previous releases, this window is part of the same
Terminator process.)
*Super+I*::
Spawn a new Terminator process.
*Alt+L*::
Open __l__ayout launcher.
*Ctrl+Shift+W*::
Close the current terminal.
*Ctrl+Shift+Q*::
Close the current window.
=== Navigation
The following items relate to moving between and around terminals.
*Alt+Up*::
Move to the terminal *above* the current one.
*Alt+Down*::
Move to the terminal *below* the current one.
*Alt+Left*::
Move to the terminal *left of* the current one.
*Alt+Right*::
Move to the terminal *right of* the current one.
*Ctrl+PageDown*::
Move to next tab.
*Ctrl+PageUp*::
Move to previous tab.
*Ctrl+Shift+N* or *Ctrl+Tab*::
Move to the __n__ext terminal within the same tab. +
*Ctrl+Shift+P* or *Ctrl+Shift+Tab*::
Move to the __p__revious terminal within the same tab. +
=== Organisation
The following items relate to arranging and resizing terminals.
*Ctrl+Shift+Right*::
Move parent dragbar *right*.
*Ctrl+Shift+Left*::
Move parent dragbar *left*.
*Ctrl+Shift+Up*::
Move parent dragbar *up*.
*Ctrl+Shift+Down*::
Move parent dragbar *down*.
*Super+R*::
__R__otate terminals clockwise.
*Super+Shift+R*::
__R__otate terminals counter-clockwise.
*Ctrl+Shift+PageDown*::
Swap tab position with next tab.
*Ctrl+Shift+PageUp*::
Swap tab position with previous tab.
*Drag and Drop*::
The layout can be modified by moving terminals with Drag and Drop.
To start dragging a terminal, click and hold on its titlebar.
Alternatively, hold down *Ctrl*, click and hold the *right* mouse button.
Then, *+**release Ctrl**+*. You can now drag the terminal to the point
in the layout you would like it to be. The zone where the terminal would
be inserted will be highlighted.
=== Focus
The following items relate to helping to focus on a specific terminal.
*F11*::
Toggle window to fullscreen.
*Ctrl+Shift+X*::
Toggle between showing all terminals and only showing the current one
(maximise).
*Ctrl+Shift+Z*::
Toggle between showing all terminals and only showing a scaled version
of the current one (zoom).
*Ctrl+Shift+Alt+A*::
Hide the initial window. Note that this is a X11 global binding, and can
only be bound once. On Wayland use window manager keyboard shortcuts to
call *terminator --toggle-visibility*.
=== Grouping & Broadcasting
The following items relate to grouping and broadcasting.
*Super+T*::
Group all terminals in the current tab so that any input sent to one of
them goes to all of them.
*Super+Shift+T*::
Remove grouping from all terminals in the current tab.
*Super+G*::
Group all terminals so that any input sent to one of them goes to all of
them.
*Super+Shift+G*::
Remove grouping from all terminals.
*Alt+A*::
Broadcast to __a__ll terminals.
*Alt+G*::
Broadcast to __g__rouped terminals.
*Alt+O*::
Broadcast __o__ff.
=== Miscellaneous
The following items relate to miscellaneous terminal related functions.
*Ctrl+Shift+C*::
Copy selected text to clipboard.
*Ctrl+Shift+V*::
Paste clipboard text.
*Ctrl+Shift+S*::
Toggle __s__crollbar.
*Ctrl+Shift+F*::
Search within terminal scrollback.
*Ctrl+Shift+R*::
Reset terminal state.
*Ctrl+Shift+G*::
Reset terminal state and clear window.
*Ctrl+Plus (+)*::
Increase font size. +
Note: this may require you to press shift, depending on your keyboard.
*Ctrl+Minus (-)*::
Decrease font size. +
Note: this may require you to press shift, depending on your keyboard.
*Ctrl+Zero (0)*::
Restore font size to original setting.
*Ctrl+Alt+W*::
Rename window title.
*Ctrl+Alt+A*::
Rename tab title.
*Ctrl+Alt+X*::
Rename terminal title.
*Super+1*::
Insert terminal number, i.e. 1 to 12.
*Super+0*::
Insert padded terminal number, i.e. 01 to 12.
== AUTHORS
Terminator was written by Chris Jones <\cmsj@tenshu.net> and others.
This manual page was written by Chris Jones <\cmsj@tenshu.net> and others.
== SEE ALSO
*terminator_config*(5)

File diff suppressed because it is too large Load Diff

927
doc/terminator_config.adoc Normal file
View File

@ -0,0 +1,927 @@
= Terminator_config(5)
:doctype: manpage
:manmanual: Manual for Terminator
:mansource: Terminator
:revdate: 2023-04-22
:docdate: {revdate}
== NAME
terminator_config - the config file for Terminator terminal emulator
== DESCRIPTION
This file contains the configuration for *terminator*(1).
Terminator manages its configuration file via the ConfigObj library to
combine flexibility with clear, human editable files. +
Terminator offers a full GUI preferences editor which automatically
saves its config file so you don't need to write a config file by hand.
== FILE LOCATION
Normally the config file will be *~/.config/terminator/config*, but it
may be overridden with *$XDG_CONFIG_HOME* (in which case it will be
*$XDG_CONFIG_HOME/terminator/config*).
== FILE FORMAT
This is what a Terminator config file should look like:
----
# This is a comment
[global_config]
focus = system
[keybindings]
full_screen = <Ctrl><Shift>F11
[profiles]
[[default]]
font = Fixed 10
background_color = "#000000" # A comment
foreground_color = "#FFFFFF" # Note that hex colour values must be quoted
scrollback_lines = '500' #More comment. Single quotes are valid too
cursor_blink = True
custom_command = "echo \"foo#bar\"" #Final comment - this will work as expected.
[layouts]
[[default]]
[[[window0]]]
type = Window
parent = ""
[[[child1]]]
type = Terminal
parent = window0
[plugins]
----
// ================================================================== \\
== global_config
These are the options Terminator currently supports in the
*global_config* section.
=== Window Behavior & Appearance
// --- Window behavior ---
*window_state* = _string_::
Control how the Terminator window opens.
'normal' to open normally.
'maximise' to open in a maximised state.
'fullscreen' to open in a fullscreen state.
'hidden' to stay hidden. +
Default value: *normal*
*always_on_top* = _boolean_::
If set to True, the window will always stay on top of other windows. +
Default value: *False*
*sticky* = _boolean_::
If set to True, the window will be visible on all workspaces. +
Default value: *False*
*hide_on_lose_focus* = _boolean_::
If set to True, the window will be hidden when focus is lost. +
Default value: *False*
*hide_from_taskbar* = _boolean_::
If set to True, the window will be hidden from the taskbar. +
Default value: *False*
*geometry_hinting* = _boolean_::
If set to True, the window will resize in step with font sizes. +
Default value: *False*
*suppress_multiple_term_dialog* = _boolean_::
If set to True, Terminator will ask for confirmation when closing
multiple terminals. +
Default value: *False*
// --- Window appearance ---
*borderless* = _boolean_::
If set to True, the window will be started without window borders. +
Default value: *False*
=== Tab Behavior & Appearance
*tab_position* = _string_::
Specify where tabs are placed.
Can be any of: 'top', 'left', 'right', 'bottom', 'hidden'.
If set to 'hidden', the tab bar will not be shown. Hiding the tab is not
recommended, as it can be very confusing. +
Default value: *top*
*close_button_on_tab* = _boolean_::
If set to True, tabs will have a close button on them. +
Default value: *True*
// what is this???
*scroll_tabbar* = _boolean_::
If set to True, the tab bar will not fill the width of the window.
The titlebars of the tabs will only take as much space as is necessary
for the text they contain. Except, that is, if the tabs no longer fit
the width of the window - in that case scroll buttons will appear to
move through the tabs. +
Default value: *False*
=== Terminal Behavior & Appearance
// --- Terminal behavior ---
*focus* = _string_::
Specify how focus is given to terminals.
'click' means the focus only moves to a terminal after you click in it.
'sloppy' means the focus will follow the mouse pointer.
'system' means the focus will match that used by a GNOME window manager. +
Default value: *click*
*always_split_with_profile* = _boolean_::
Specify whether splits/tabs will continue to use the profile of their
peer terminal. If set to False, they will always use the default profile. +
Default value: *False*
*link_single_click* = _boolean_::
If set to True, clicking a link will open it even if *Ctrl* is not
pressed. +
Default value: *False*
// --- Copy & Paste behavior ---
*putty_paste_style* = _boolean_::
If set to True, right-click will paste text, while middle-click will
popup the context menu. The source for the pasted text depends on the
value of *putty_paste_style_source_clipboard*. +
Default value: *False*
*putty_paste_style_source_clipboard* = _boolean_::
If set to True, the Clipboard will be used as source for pasting in
PuTTY style. Otherwise, the Primary Selection will be used. +
This option is ignored unless *putty_paste_style* is set to True. +
Default value: *False*
*disable_mouse_paste* = _boolean_::
If set to True, mouse pasting will be disabled. +
Default value: *False*
*smart_copy* = _boolean_::
If set to True, and there is no selection, the shortcut is allowed to
pass through. This is useful for overloading Ctrl-C to copy a selection,
or send the SIGINT to the current process if there is no selection.
If False, the shortcut does not pass through at all, and the SIGINT does
not get sent. +
Default value: *True*
*clear_select_on_copy* = _boolean_::
If set to True, text selection will be cleared after copying using the
*copy* keybinding. +
Default value: *False*
// --- Terminal appearance ---
*handle_size* = _integer_::
Specify the width of the separator between terminals.
Anything outside the range 0-20 (inclusive) will be ignored and the
default theme value will be used instead. +
Default value: *1*
*inactive_color_offset* = _float_::
Specify how much to reduce the color values of fonts in terminals that
do not have focus. +
Default value: *0.8*
*inactive_bg_color_offset* = _float_::
Specify how much to reduce the color values of the background in
terminals that do not have focus. +
Default value: *1.0*
*cell_width* = _float_::
Specify the horizontal scale of character cells in the terminal. +
Default value: *1.0*
*cell_height* = _float_::
Specify the vertical scale of character cells in the terminal. +
Default value: *1.0*
*title_at_bottom* = _boolean_::
If set to True, the terminal's titlebar will be drawn at the bottom
instead of the top. +
Default value: *False*
=== Miscellaneous
*dbus* = _boolean_::
Specify whether Terminator will load its DBus server.
When this server is loaded, running Terminator multiple times will cause
the first Terminator process to open additional windows.
If this configuration item is set to False, or the python dbus module is
unavailable, running Terminator multiple times will run a separate
Terminator process for each invocation. +
Default value: *True*
*extra_styling* = _boolean_::
If set to True, Terminator may load an additional CSS styling file,
depending on the theme. +
Default value: *True*
*broadcast_default* = _string_::
Specify the default broadcast behavior.
Can be any of: 'all', 'group', 'off'. +
Default value: *group*
*use_custom_url_handler* = _boolean_::
If set to True, URL handling will be given over entirely to the program
specified by 'custom_url_handler'. +
Default value: *False*
*custom_url_handler* = _string_::
Specify the path to a program which accepts a URI as an argument and
does something relevant with it.
This option is ignored unless *use_custom_url_handler* is set to True.
*case_sensitive* = _boolean_::
If set to True, uppercase and lowercase characters will be considered
different when searching text in the terminal. +
Default value: *True*
*invert_search* = _boolean_::
If set to True, the search direction will be inverted (bottom to top)
when searching text in the terminal. +
Default value: *False*
*enabled_plugins* = _list of strings_::
Specify which plugins will be loaded by default. All other plugin
classes will be ignored. +
Default value: *['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler']*
// ================================================================== \\
== keybindings
These are the options Terminator currently supports in the *keybindings*
section.
=== Creation & Destruction
*split_horiz*::
Split the current terminal horizontally. +
Default value: *<Ctrl><Shift>O*
*split_vert*::
Split the current terminal vertically. +
Default value: *<Ctrl><Shift>E*
*split_auto*::
Split the current terminal automatically, along the longer side. +
Default value: *<Ctrl><Shift>A*
*new_tab*::
Open a new tab. +
Default value: *<Ctrl><Shift>T*
*new_window*::
Open a new window as part of the existing process. +
Default value: *<Ctrl><Shift>I*
*new_terminator*::
Spawn a new Terminator process. +
Default value: *<Super>I*
*layout_launcher*::
Open the layout launcher. +
Default value: *<Alt>L*
*close_term*::
Close the current terminal. +
Default value: *<Ctrl><Shift>W*
*close_window*::
Close the current window. +
Default value: *<Ctrl><Shift>Q*
=== Navigation
*cycle_next*::
Focus the next terminal. This is an alias for *go_next*. +
Default value: *<Ctrl>Tab*
*cycle_prev*::
Focus the previous terminal. This is an alias for *go_prev*. +
Default value: *<Ctrl><Shift>Tab*
*go_next*::
Focus the next terminal. +
Default value: *<Ctrl><Shift>N*
*go_prev*::
Focus the previous terminal. +
Default value: *<Ctrl><Shift>P*
*go_up*::
Focus the terminal above the current one. +
Default value: *<Alt>Up*
*go_down*::
Focus the terminal below the current one. +
Default value: *<Alt>Down*
*go_left*::
Focus the terminal to the left of the current one. +
Default value: *<Alt>Left*
*go_right*::
Focus the terminal to the right of the current one. +
Default value: *<Alt>Right*
// --- Scroll ---
*page_up*::
Scroll the terminal up one page.
*page_down*::
Scroll the terminal down one page.
*page_up_half*::
Scroll the terminal up half a page.
*page_down_half*::
Scroll the terminal down half a page.
*line_up*::
Scroll the terminal up one line.
*line_down*::
Scroll the terminal down one line.
// --- Tab ---
*next_tab*::
Move to the next tab. +
Default value: *<Ctrl>Page_Down*
*prev_tab*::
Move to the previous tab. +
Default value: *<Ctrl>Page_Up*
*switch_to_tab_1*, *switch_to_tab_2*, ... *switch_to_tab_10*::
Move to the **N**th tab.
Note that *<Alt><Shift>1* may be provided as *<Alt>!* or similar,
depending on the keyboard layout.
=== Organisation
*resize_up*::
Move the parent dragbar up. +
Default value: *<Ctrl><Shift>Up*
*resize_down*::
Move the parent dragbar down. +
Default value: *<Ctrl><Shift>Down*
*resize_left*::
Move the parent dragbar left. +
Default value: *<Ctrl><Shift>Left*
*resize_right*::
Move the parent dragbar right. +
Default value: *<Ctrl><Shift>Right*
*rotate_cw*::
Rotate terminals clockwise. +
Default value: *<Super>R*
*rotate_ccw*::
Rotate terminals counter+clockwise. +
Default value: *<Super><Shift>R*
*move_tab_right*::
Move the current tab to the right by swapping position with the next
tab. +
Default value: *<Ctrl><Shift>Page_Down*
*move_tab_left*::
Move the current tab to the left by swapping position with the previous
tab. +
Default value: *<Ctrl><Shift>Page_Up*
=== Focus
*full_screen*::
Toggle window to fullscreen. +
Default value: *F11*
*toggle_zoom*::
Toggle maximisation of the current terminal. +
Default value: *<Ctrl><Shift>X*
*scaled_zoom*::
Toggle maximisation of the current terminal and scale the font when
maximised. +
Default value: *<Ctrl><Shift>Z*
*hide_window*::
Hide/Show all Terminator windows. +
Default value: *<Ctrl><Shift><Alt>A*
=== Grouping & Broadcasting
*create_group*::
Create a new group.
// --- Grouping: All ---
*group_all*::
Group all terminals together. +
Default value: *<Super>G*
*ungroup_all*::
Ungroup all terminals.
*group_all_toggle*::
Toggle grouping of all terminals.
// --- Grouping: Window ---
*group_win*::
Group all terminals in the current window together.
*ungroup_win*::
Ungroup all terminals in the current window. +
Default value: *<Super><Shift>W*
*group_win_toggle*::
Toggle grouping of all terminals in the current window.
// --- Grouping: Tab ---
*group_tab*::
Group all terminals in the current tab together. +
Default value: *<Super>T*
*ungroup_tab*::
Ungroup all terminals in the current tab. +
Default value: *<Super><Shift>T*
*group_tab_toggle*::
Toggle grouping of all terminals in the current tab.
// Broadcasting
*broadcast_off*::
Turn broadcasting off.
*broadcast_group*::
Broadcast to all terminals in the same group as the current terminal.
*broadcast_all*::
Broadcast to all terminals.
=== Miscellaneous
*help*::
Open the full HTML manual in the browser. +
Default value: *F1*
*preferences*::
Open the Preferences window.
*preferences_keybindings*::
Open the Preferences window and show the Keybindings tab. +
Default value: *<Ctrl><Shift>K*
*copy*::
Copy the selected text to the Clipboard. +
Default value: *<Ctrl><Shift>C*
*paste*::
Paste the current contents of the Clipboard. +
Default value: *<Ctrl><Shift>V*
*paste_selection*::
Paste the current contents of the Primary Selection.
*toggle_scrollbar*::
Toggle the scrollbar. +
Default value: *<Ctrl><Shift>S*
*search*::
Search for text in the terminal scrollback history. +
Default value: *<Ctrl><Shift>F*
*reset*::
Reset the terminal state. +
Default value: *<Ctrl><Shift>R*
*reset_clear*::
Reset the terminal state and clear the terminal window. +
Default value: *<Ctrl><Shift>G*
*zoom_in*::
Increase the font size by one unit. +
Default value: *<Ctrl>plus*
*zoom_out*::
Decrease the font size by one unit. +
Default value: *<Ctrl>minus*
*zoom_normal*::
Restore the original font size. +
Default value: *<Ctrl>0*
*zoom_in_all*::
Increase the font size by one unit for all terminals.
*zoom_out_all*::
Decrease the font size by one unit for all terminals.
*zoom_normal_all*::
Restore the original font size for all terminals.
*edit_window_title*::
Rename the current window. +
Default value: *<Ctrl><Alt>W*
*edit_tab_title*::
Rename the current tab. +
Default value: *<Ctrl><Alt>A*
*edit_terminal_title*::
Rename the current terminal. +
Default value: *<Ctrl><Alt>X*
*insert_number*::
Insert the current terminal's number, i.e. 1 to 12. +
Default value: *<Super>1*
*insert_padded*::
Insert the current terminal's number, but zero padded, i.e. 01 to 12. +
Default value: *<Super>0*
*next_profile*::
Switch to the next profile.
*previous_profile*::
Switch to the previous profile.
// ================================================================== \\
== profiles
These are the options Terminator currently supports in the *profiles*
section. Each profile should be its own subsection with a header in the
format *\[[name]]*.
=== General
*allow_bold* = _boolean_::
If set to True, text in the terminal can displayed in bold. +
Default value: *True*
*copy_on_selection* = _boolean_::
If set to True, text selections will be automatically copied to the
Clipboard, in addition to being copied to the Primary Selection. +
Default value: *False*
*disable_mousewheel_zoom* = _boolean_::
If set to True, Ctrl+mouse_wheel will not zoom or unzoom the terminal. +
Default value: *False*
*word_chars* = _string_::
Specify the characters that will be considered part of a single word
when selecting text by word.
Hyphen and alphanumerics do not need to be specified.
Ranges can be given, e.g. "A-Z". +
For example, if *word_chars* = "," then "foo,bar" is considered a single
word. +
Default value: **-,./?%&#:_**
*mouse_autohide* = _boolean_::
If set to True, the mouse pointer will be hidden when typing. +
Default value: *True*
*term* = _string_::
Specify the value Terminator will assign to the 'TERM' environment
variable. +
Default value: *xterm-256color*
*colorterm* = _string_::
Specify the value Terminator will assign to the 'COLORTERM' environment
variable. +
Default value: *truecolor*
*split_to_group* = _boolean_::
If set to True, the terminal created by splitting will be inserted in
the current terminal's group. +
Default value: *False*
*autoclean_groups* = _boolean_::
If set to True, empty groups will be removed. +
Default value: *True*
// --- Font ---
*use_system_font* = _boolean_::
If set to True, the system default font will be used for text in the
terminal. Otherwise, the value of *font* will be used. +
Default value: *True*
*font* = _string_::
Specify which font to use for text in the terminal.
This option is ignored unless *use_system_font* is set to False. +
Default value: *Mono 10*
// --- Cursor ---
*cursor_blink* = _boolean_::
If set to True, the cursor will blink when not typing. +
Default value: *True*
*cursor_shape* = _string_::
Specify the shape of the cursor.
Can be any of: 'block', 'underline', 'ibeam'. +
Default value: *block*
*cursor_color_default* = _boolean_::
If set to True, the background and foreground colors of the terminal
will be used as foreground and background colors for the cursor,
respectively. +
Default value: *True*
*cursor_fg_color* = _color string_::
Specify the foreground color to use for the cursor.
This option is ignored unless *cursor_color_default* is set to False.
*cursor_bg_color* = _color string_::
Specify the background color to use for the cursor.
This option is ignored unless *cursor_color_default* is set to False.
// --- Bell ---
*audible_bell* = _boolean_::
If set to True, a sound will be played when an application writes the
escape sequence for the terminal bell. +
Default value: *False*
*visible_bell* = _boolean_::
If set to True, the terminal will flash when an application writes the
escape sequence for the terminal bell. +
Default value: *False*
*urgent_bell* = _boolean_::
If set to True, the window's urgency hint will be set when an
application writes the escape sequence for the terminal bell. +
Default value: *False*
*icon_bell* = _boolean_::
If set to True, a small icon will be shown on the terminal titlebar when
an application writes the escape sequence for the terminal bell. +
Default value: *True*
*force_no_bell* = _boolean_::
If set to True, the terminal bell will be completely disabled. +
Default value: *False*
=== Command
*login_shell* = _boolean_::
If set to True, the terminal will run the default shell (or the command
specified by *custom_command*) as a login shell.
This means the first argument passed to the shell/command will be '-l'. +
Default value: *False*
*use_custom_command* = _boolean_::
If set to True, the value of *custom_command* will be used instead of
the default shell. +
Default value: *False*
*custom_command* = _string_::
Specify the command to execute instead of the default shell.
This option is ignored unless *use_custom_command* is set to True.
*exit_action* = _string_::
Specify the action to perform when the terminal is closed.
'close' to remove the terminal.
'restart' to restart the shell (or the command specified by
*custom_command*).
'hold' to keep the terminal open, even if the process in it has
terminated. +
Default value: *close*
=== Colors
*use_theme_colors* = _boolean_::
If set to True, the theme's foreground and background colors will be
used for the terminal. Otherwise, the values of *foreground_color* and
*background_color* will be used. +
Default value: *False*
*foreground_color* = _color string_::
Specify the foreground color to use for the terminal.
This option is ignored unless *use_theme_colors* is set to False. +
Default value: *#AAAAAA*
*background_color* = _color string_::
Specify the background color to use for the terminal.
This option is ignored unless *use_theme_colors* is set to False. +
Default value: *#000000*
*palette* = _string list of colors_::
Specify the 16-color palette to use for the terminal.
The value must be a string containing a colon-separated list of colors
in hex format. +
For example, "#000000:#cd0000:#00cd00: ... ".
*bold_is_bright* = _boolean_::
If set to True, bold text will have brighter colors. +
Default value: *False*
=== Background
*background_darkness* = _float_::
Specify the transparency of the background color.
The value must be between 0.0 and 1.0.
This option is ignored unless *background_type* is set to 'transparent'
or 'image'. +
Default value: *0.5*
*background_type* = _string_::
Specify what type of background the terminal will have.
'solid' for a solid (opaque) background.
'transparent' for a transparent background.
'image' for a background image. +
If this is set to 'transparent', the transparency of the background will
be the value of *background_darkness*.
If this is set to 'image', the image specified by *background_image*
will be the background; the background color will then be drawn on top
of it, with a transparency specified by *background_darkness*. +
Default value: *solid*
*background_image* = _path string_::
Specify the path to an image that will be used as background.
This option is ignored unless *background_type* is set to 'image'.
*background_image_mode* = _string_::
Specify how the background image will be drawn.
'stretch_and_fill' to fill the terminal entirely, without necessarily
maintaining aspect ratio.
'scale_and_fit' to fit the image inside the terminal, eventually leaving
blank bars, while maintaining aspect ratio.
'scale_and_crop' to fill the terminal entirely, eventually cropping the
image, while maintaining aspect ratio.
'tiling' to repeat the image as to fill the terminal.
This option is ignored unless *background_type* is set to 'image'. +
Default value: *stretch_and_fill*
*background_image_align_horiz* = _string_::
Specify the horizontal alignment of the background image.
Can be any of: 'left', 'center', 'right'.
This option is ignored unless *background_type* is set to 'image'. +
Default value: *center*
*background_image_align_vert* = _string_::
Specify the vertical alignment of the background image.
Can be any of: 'top', 'middle', 'bottom'.
This option is ignored unless *background_type* is set to 'image'. +
Default value: *middle*
=== Scrolling
*scrollbar_position* = _string_::
Specify where the terminal scrollbar is put.
Can be any of: 'left', 'right', 'hidden'. +
Default value: *right*
*scroll_on_output* = _boolean_::
If set to True, the terminall will scroll to the bottom when an
application writes text to it. +
Default value: *False*
*scroll_on_keystroke* = _boolean_::
If set to True, the terminal will scroll to the bottom when typing. +
Default value: *True*
*scrollback_infinite* = _boolean_::
If set to True, the terminal will keep the entire scrollback history. +
Default value: *False*
*scrollback_lines* = _integer_::
Specify how many lines of scrollback history will be kept by the
terminal. Lines that don't fit in the scrollback history will be
discarted. Note that setting large values can slow down rewrapping and
resizing.
This option is ignored unless *scrollback_infinite* is set to False. +
Default value: *500*
=== Compatibility
*backspace_binding* = _string_::
Specify what code will be generated by the backspace key.
The value can be:
'ascii-del' for the ASCII DEL character;
'control-h' for the ASCII BS character (Ctrl+H);
'escape-sequence' for the escape sequence typically bound to backspace
or delete;
'automatic' for letting the terminal automatically decide the character
sequence to use. +
Default value: *ascii-del*
*delete_binding* = _string_::
Specify what code will be generated by the delete key.
The value can be:
'ascii-del' for the ASCII DEL character;
'control-h' for the ASCII BS character (Ctrl+H);
'escape-sequence' for the escape sequence typically bound to backspace
or delete;
'automatic' for letting the terminal automatically decide the character
sequence to use. +
Default value: *escape-sequence*
=== Titlebar
*show_titlebar* = _boolean_::
If set to True, the terminal will have a titlebar showing the current
title of that terminal. +
Default value: *True*
*title_hide_sizetext* = _boolean_::
If set to True, the size of the terminal will not be written on its
titlebar. +
Default value: *False*
*title_use_system_font* = _boolean_::
If set to True, the system default font will be used for text in the
terminal's titlebar. Otherwise, the value of *title_font* will be used. +
Default value: *True*
*title_font* = _string_::
Specify which font to use for text in the terminal's titlebar.
This option is ignored unless *title_use_system_font* is set to False. +
Default value: *Sans 9*
// --- Titlebar colors ---
*title_transmit_fg_color* = _color string_::
Specify the foreground color to use for the terminal's titlebar in case
the terminal is focused. +
Default value: *#ffffff*
*title_transmit_bg_color* = _color string_::
Specify the background color to use for the terminal's titlebar in case
the terminal is focused. +
Default value: *#c80003*
*title_inactive_fg_color* = _color string_::
Specify the foreground color to use for the terminal's titlebar in case
the terminal is unfocused. +
Default value: *#000000*
*title_inactive_bg_color* = _color string_::
Specify the background color to use for the terminal's titlebar in case
the terminal is unfocused. +
Default value: *#c0bebf*
*title_receive_fg_color* = _color string_::
Specify the foreground color to use for the terminal's titlebar in case
the terminal is in a group and is receiving input while unfocused. +
Default value: *#ffffff*
*title_receive_bg_color* = _color string_::
Specify the background color to use for the terminal's titlebar in case
the terminal is in a group and is receiving input while unfocused. +
Default value: *#0076c9*
// ================================================================== \\
== layouts
The *layouts* section contains all the saved layouts. Each layout should
be its own subsection with a header in the format *\[[name]]*.
Each object in a layout is a named sub-sub-section with various
properties.
*type* = _string_::
Can be any of: 'Window', 'Notebook', 'HPaned', 'VPaned', 'Terminal'.
*parent* = _string_::
Specify which object is the parent of the component being defined.
All objects, except those of type Window, must specify a parent.
This is an example of a *layouts* section containing only the layout
named "default".
----
[layouts]
[[default]]
[[[window0]]]
type = Window
parent = ""
[[[child1]]]
type = Terminal
parent = window0
----
// ================================================================== \\
== plugins
Terminator plugins can add their own configuration to the config file,
and it will appear as a subsection. Please refer to the documentation of
individual plugins for more information.
== SEE ALSO
*terminator*(1), https://configobj.readthedocs.io/

274
po/fr.po
View File

@ -2,26 +2,26 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#
# Translators:
# Gnome Terminator <terminator@lazyfrosch.de>, 2020
# Samuël Weber/GwendalD <samuel.weber@normalesup.org>, 2020
#
# fred lulu, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-22 00:51+0100\n"
"POT-Creation-Date: 2022-10-19 09:28-0400\n"
"PO-Revision-Date: 2020-04-22 08:11+0000\n"
"Last-Translator: Samuël Weber/GwendalD <samuel.weber@normalesup.org>, 2020\n"
"Language-Team: French (https://www.transifex.com/terminator/teams/109338/"
"fr/)\n"
"Language: fr\n"
"Last-Translator: fred lulu, 2022\n"
"Language-Team: French (https://www.transifex.com/terminator/teams/109338/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#. Command uuid req. Description
#: ../remotinator.py:39
@ -46,7 +46,7 @@ msgstr "Avoir la liste de tous les terminaux."
#: ../remotinator.py:44
msgid "Get the uuid of the current focused terminal"
msgstr ""
msgstr "Obtenir L'uuid du terminal actuellement actif"
#: ../remotinator.py:45
msgid "Get the UUID of a parent window"
@ -58,31 +58,31 @@ msgstr "Obtenir le titre de la fenêtre parente"
#: ../remotinator.py:47
msgid "Get the UUID of a parent tab"
msgstr "Obtenir l'UUID d'une table parente"
msgstr "Obtenir l'UUID d'un onglet parent"
#: ../remotinator.py:48
msgid "Get the title of a parent tab"
msgstr "Obtenir le titre d'une table parente"
msgstr "Obtenir le titre d'une onglet parent"
#: ../remotinator.py:49
msgid "Set the title of a parent tab"
msgstr ""
msgstr "Définir le titre d'un onglet parent"
#: ../remotinator.py:50
msgid "Set the background image"
msgstr ""
msgstr "Définir l'image de fond"
#: ../remotinator.py:51
msgid "Set the background image for all terminals"
msgstr ""
msgstr "Définir l'image de fond pour tous les terminaux"
#: ../remotinator.py:52
msgid "Switch current terminal profile"
msgstr ""
msgstr "Changer le profil du terminal actuel"
#: ../remotinator.py:53
msgid "Switch profile of all currently running terminals"
msgstr ""
msgstr "Changer le profil de tous les terminaux actuellement exécutés"
#: ../remotinator.py:70
#, python-format
@ -111,23 +111,25 @@ msgstr ""
#: ../remotinator.py:80
msgid "Profile name to switch to"
msgstr ""
msgstr "Nom du profil sur lequel basculer"
#: ../remotinator.py:83
msgid "File to pass to command"
msgstr ""
msgstr "Fichier à passer à la commande"
#: ../remotinator.py:86
msgid "Command to run in new terminal"
msgstr ""
msgstr "Commande à exécuter dans un nouveau terminal"
#: ../remotinator.py:89
msgid "Tab name to set. Only used with \"set_tab_title\" command."
msgstr ""
"Nom de l'onglet à définir. Utilisable seulement avec la commande "
"\"set_tab_title\"."
#: ../remotinator.py:92
msgid "Tab name to set."
msgstr ""
msgstr "Nom de l'onglet à définir."
#: ../data/terminator.desktop.in.h:1 ../data/terminator.appdata.xml.in.h:1
#: ../terminatorlib/plugins/activitywatch.py:83
@ -149,8 +151,8 @@ msgstr "Le futur robot des terminaux."
msgid ""
"A power-user tool for arranging terminals. It is inspired by programs such "
"as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging "
"terminals in grids (tabs is the most common default method, which Terminator "
"also supports)."
"terminals in grids (tabs is the most common default method, which Terminator"
" also supports)."
msgstr ""
"Un outil pour utilisateur et utilisatrice expérimenté⋅e d'organisation des "
"terminaux. Il s'inspire des programmes tels que gnome-multi-term, "
@ -369,14 +371,16 @@ msgstr "Si Terminator est déjà lancé, ouvrir seulement un nouvel onglet"
#: ../terminatorlib/optionparse.py:98
msgid "If Terminator is already running, just unhide all hidden windows"
msgstr ""
"SI Terminator est déjà en exécution, faire juste réapparaître toute les "
"fenêtres cachées"
#: ../terminatorlib/optionparse.py:100
msgid "List all profiles"
msgstr ""
msgstr "Lister tous les profils"
#: ../terminatorlib/optionparse.py:102
msgid "List all layouts"
msgstr ""
msgstr "Lister toutes les mises en pages"
#: ../terminatorlib/plugins/activitywatch.py:54
msgid "Watch for _activity"
@ -494,7 +498,7 @@ msgstr "Le nom *%s* existe déjà"
#: ../terminatorlib/plugins/dir_open.py:26
msgid "Open current directory"
msgstr ""
msgstr "Ouvrir le répertoire actuel"
#: ../terminatorlib/plugins/logger.py:21
#: ../terminatorlib/plugins/terminalshot.py:21
@ -764,15 +768,15 @@ msgstr "Presse-papier"
#: ../terminatorlib/preferences.glade.h:62
msgid "Clear selection on copy"
msgstr ""
msgstr "Effacer la sélection à la copie"
#: ../terminatorlib/preferences.glade.h:63
msgid "Open links with a single click (instead of Ctrl-left click)"
msgstr ""
msgstr "Ouvrir les liens avec un simple clic (au lieu de Crtl + clic gauche)"
#: ../terminatorlib/preferences.glade.h:64
msgid "Disable mouse paste"
msgstr ""
msgstr "Désactiver le coller de la souris"
#: ../terminatorlib/preferences.glade.h:65
msgid "Custom URL handler:"
@ -800,11 +804,11 @@ msgstr "Personnalisation extra (Suivant le thème)"
#: ../terminatorlib/preferences.glade.h:71
msgid "Cell Height:"
msgstr ""
msgstr "Hauteur de la cellule:"
#: ../terminatorlib/preferences.glade.h:72
msgid "Cell Width:"
msgstr ""
msgstr "Largeur de la cellule:"
#: ../terminatorlib/preferences.glade.h:73
msgid "Tab position:"
@ -876,11 +880,11 @@ msgstr "Clignotement"
#: ../terminatorlib/preferences.glade.h:90
msgid "Use default colors"
msgstr ""
msgstr "Utiliser les couleurs par défaut"
#: ../terminatorlib/preferences.glade.h:91
msgid "Foreground:"
msgstr ""
msgstr "Premier plan:"
#: ../terminatorlib/preferences.glade.h:92
msgid "Background:"
@ -940,11 +944,11 @@ msgstr "_Palettes prédéfinies :"
#: ../terminatorlib/preferences.glade.h:107
msgid "_Foreground:"
msgstr ""
msgstr "_Premier plan:"
#: ../terminatorlib/preferences.glade.h:108
msgid "_Background:"
msgstr ""
msgstr "_Arrière plan:"
#: ../terminatorlib/preferences.glade.h:109
msgid "<b>Palette</b>"
@ -976,11 +980,11 @@ msgstr "Arrière-plan _transparent"
#: ../terminatorlib/preferences.glade.h:116
msgid "Background Image"
msgstr ""
msgstr "Image d'arrière plan"
#: ../terminatorlib/preferences.glade.h:117
msgid "Background Image File:"
msgstr ""
msgstr "Fichier de l'image d'arrière plan:"
#: ../terminatorlib/preferences.glade.h:118
msgid "Choose file"
@ -988,7 +992,7 @@ msgstr "Choisir un fichier"
#: ../terminatorlib/preferences.glade.h:119
msgid "S_hade background:"
msgstr ""
msgstr "Arrière plan nuancé:"
#: ../terminatorlib/preferences.glade.h:120
msgid "<small><i>None</i></small>"
@ -1034,13 +1038,13 @@ msgstr "Défilement"
msgid ""
"<small><i><b>Note:</b> These options may cause some applications to behave "
"incorrectly. They are only here to allow you to work around certain "
"applications and operating systems that expect different terminal behavior.</"
"i></small>"
"applications and operating systems that expect different terminal "
"behavior.</i></small>"
msgstr ""
"<small><i><b>Note :</b> ces options peuvent gêner le fonctionnement de "
"certaines applications. Elles sont seulement là pour vous permettre de faire "
"fonctionner certaines applications et systèmes d'exploitation qui attendent "
"un comportement du terminal différent.</i></small>"
"certaines applications. Elles sont seulement là pour vous permettre de faire"
" fonctionner certaines applications et systèmes d'exploitation qui attendent"
" un comportement du terminal différent.</i></small>"
#: ../terminatorlib/preferences.glade.h:131
msgid "_Backspace key generates:"
@ -1084,7 +1088,7 @@ msgstr "Choisissez une police de caractères pour la barre de titre"
#: ../terminatorlib/preferences.glade.h:141
msgid "Titlebar"
msgstr ""
msgstr "Barre de titre:"
#: ../terminatorlib/preferences.glade.h:142
#: ../terminatorlib/terminal_popup_menu.py:204
@ -1137,33 +1141,17 @@ msgstr "Greffons"
#: ../terminatorlib/preferences.glade.h:158
msgid "Version: 2.1.1"
msgstr ""
msgstr "Version: 2.1.1"
#: ../terminatorlib/preferences.glade.h:159
msgid ""
"The goal of this project is to produce a useful tool for arranging "
"terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, "
"etc. in that the main focus is arranging terminals in grids (tabs is the "
"most common default method, which Terminator also supports).\n"
"The goal of this project is to produce a useful tool for arranging terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging terminals in grids (tabs is the most common default method, which Terminator also supports).\n"
"\n"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are "
"adding more features from that as time goes by, but we also want to extend "
"out in different directions with useful features for sysadmins and other "
"users. If you have any suggestions, please file wishlist bugs! (see left for "
"the Development link)"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are adding more features from that as time goes by, but we also want to extend out in different directions with useful features for sysadmins and other users. If you have any suggestions, please file wishlist bugs! (see left for the Development link)"
msgstr ""
"Le but de ce projet est de créer un outil puissant pour gèrer les terminaux. "
"Il est inspiré de programmes tels que gnome-multi-term, quadkonsole, etc. "
"car il se concentre aussi sur le fait de présenter les terminaux en grille "
"(les onglets sont la méthode par défaut la plus répandue, ce qui est "
"également supporté par terminator).\n"
"Le but de ce projet est de créer un outil puissant pour gèrer les terminaux. Il est inspiré de programmes tels que gnome-multi-term, quadkonsole, etc. car il se concentre aussi sur le fait de présenter les terminaux en grille (les onglets sont la méthode par défaut la plus répandue, ce qui est également supporté par terminator).\n"
"\n"
"Une grande partie du comportement de Terminator est basée sur le terminal "
"GNOME, nous ajoutons de nouvelles fonctionnalités au fil du temps, mais nous "
"désirons également nous étendre dans différentes directions avec des "
"capacités utiles aux administrateurs système et aux autres utilisateurs. Si "
"vous avez des suggestions, merci de remplir un bug de souhait! (regardez a "
"gauche pour le lien de développement)"
"Une grande partie du comportement de Terminator est basée sur le terminal GNOME, nous ajoutons de nouvelles fonctionnalités au fil du temps, mais nous désirons également nous étendre dans différentes directions avec des capacités utiles aux administrateurs système et aux autres utilisateurs. Si vous avez des suggestions, merci de remplir un bug de souhait! (regardez a gauche pour le lien de développement)"
#: ../terminatorlib/preferences.glade.h:162
msgid "The Manual"
@ -1172,13 +1160,10 @@ msgstr "Le manuel"
#: ../terminatorlib/preferences.glade.h:163
msgid ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Development</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / "
"Enhancements</a>"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / Enhancements</a>"
msgstr ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Développement</"
"a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / "
"Améliorations</a>"
"<a href=\"https://github.com/gnome-terminator/terminator\">Développement</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / Améliorations</a>"
#: ../terminatorlib/preferences.glade.h:165
msgid "About"
@ -1198,15 +1183,15 @@ msgstr "Restaurer la taille d'origine de la police de caractères"
#: ../terminatorlib/prefseditor.py:107
msgid "Increase font size on all terminals"
msgstr ""
msgstr "Augmenter la taille de la police sur tous les terminaux"
#: ../terminatorlib/prefseditor.py:108
msgid "Decrease font size on all terminals"
msgstr ""
msgstr "Diminuer la taille de la police sur tous les terminaux"
#: ../terminatorlib/prefseditor.py:109
msgid "Restore original font size on all terminals"
msgstr ""
msgstr "Restaurer la police originale sur tous les terminaux"
#: ../terminatorlib/prefseditor.py:110
msgid "Create a new tab"
@ -1266,7 +1251,7 @@ msgstr "Coller le contenu du presse-papier"
#: ../terminatorlib/prefseditor.py:126
msgid "Paste primary selection"
msgstr ""
msgstr "Coller la sélection primaire"
#: ../terminatorlib/prefseditor.py:127
msgid "Show/Hide the scrollbar"
@ -1418,15 +1403,15 @@ msgstr "Dégrouper tous les terminaux"
#: ../terminatorlib/prefseditor.py:164
msgid "Group terminals in window"
msgstr ""
msgstr "Grouper les terminaux dans une fenêtre"
#: ../terminatorlib/prefseditor.py:165
msgid "Group/Ungroup terminals in window"
msgstr ""
msgstr "Grouper/Dégrouper les terminaux dans une fenêtre"
#: ../terminatorlib/prefseditor.py:166
msgid "Ungroup terminals in window"
msgstr ""
msgstr "Dégrouper les terminaux dans une fenêtre"
#: ../terminatorlib/prefseditor.py:167
msgid "Group terminals in tab"
@ -1500,11 +1485,11 @@ msgstr "Ouvrir les préférences"
msgid "Open the manual"
msgstr "Ouvrir le manuel"
#: ../terminatorlib/prefseditor.py:1370
#: ../terminatorlib/prefseditor.py:1366
msgid "New Profile"
msgstr "Nouveau profil"
#: ../terminatorlib/prefseditor.py:1413 ../terminatorlib/prefseditor.py:1418
#: ../terminatorlib/prefseditor.py:1409 ../terminatorlib/prefseditor.py:1414
msgid "New Layout"
msgstr "Nouvel agencement"
@ -1551,7 +1536,7 @@ msgstr "C_oller"
#: ../terminatorlib/terminal_popup_menu.py:112
msgid "Set W_indow Title"
msgstr ""
msgstr "Définir Titre de la F_enêtre"
#: ../terminatorlib/terminal_popup_menu.py:117
msgid "Split H_orizontally"
@ -1591,7 +1576,7 @@ msgstr "Regroupement"
#: ../terminatorlib/terminal_popup_menu.py:186
msgid "Relaunch Command"
msgstr ""
msgstr "Relancer la commande"
#: ../terminatorlib/terminal_popup_menu.py:191
msgid "Show _scrollbar"
@ -1616,11 +1601,11 @@ msgstr "Supprimer le groupe %s"
#: ../terminatorlib/terminal.py:512
msgid "G_roup all in window"
msgstr ""
msgstr "Tout g_rouper dans une fenêtre"
#: ../terminatorlib/terminal.py:517
msgid "Ungro_up all in window"
msgstr ""
msgstr "Tout dégro_uper dans une fenêtre"
#: ../terminatorlib/terminal.py:522
msgid "G_roup all in tab"
@ -1667,25 +1652,25 @@ msgstr "_Insérer le numéro du terminal"
msgid "Insert _padded terminal number"
msgstr "Insérer le _numéro du terminal"
#: ../terminatorlib/terminal.py:1490
#: ../terminatorlib/terminal.py:1492
msgid "Unable to find a shell"
msgstr "Impossible de trouver un shell"
#: ../terminatorlib/terminal.py:1521
#: ../terminatorlib/terminal.py:1546
msgid "Unable to start shell:"
msgstr "Impossible de démarrer le shell :"
#: ../terminatorlib/terminal.py:1975
#: ../terminatorlib/terminal.py:2000
msgid "Rename Window"
msgstr "Renommer la fenêtre"
#: ../terminatorlib/terminal.py:1983
#: ../terminatorlib/terminal.py:2008
msgid "Enter a new title for the Terminator window..."
msgstr "Saisir un nouveau titre pour la fenêtre Terminator..."
#: ../terminatorlib/titlebar.py:112
msgid "[INACTIVE: Right-Click for Relaunch option] "
msgstr ""
msgstr "[INACTIF: Clic Droit pour Relancer l'option]"
#: ../terminatorlib/titlebar.py:258
msgid "Alpha"
@ -1790,120 +1775,9 @@ msgstr "fenêtre"
#: ../terminatorlib/window.py:773
#, python-format
msgid "Window group %s"
msgstr ""
msgstr "Groupe de fenêtres %s"
#: ../terminatorlib/window.py:799
#, python-format
msgid "Tab %d"
msgstr "Onglet %d"
#~ msgid "Current Locale"
#~ msgstr "Locale actuelle"
#~ msgid "Western"
#~ msgstr "Occidentale"
#~ msgid "Central European"
#~ msgstr "Europe centrale"
#~ msgid "South European"
#~ msgstr "Europe du Sud"
#~ msgid "Baltic"
#~ msgstr "Balte"
#~ msgid "Cyrillic"
#~ msgstr "Cyrillique"
#~ msgid "Arabic"
#~ msgstr "Arabe"
#~ msgid "Greek"
#~ msgstr "Grec"
#~ msgid "Hebrew Visual"
#~ msgstr "Hébreu visuel"
#~ msgid "Hebrew"
#~ msgstr "Hébreu"
#~ msgid "Turkish"
#~ msgstr "Turc"
#~ msgid "Nordic"
#~ msgstr "Nordique"
#~ msgid "Celtic"
#~ msgstr "Celte"
#~ msgid "Romanian"
#~ msgstr "Roumain"
#~ msgid "Unicode"
#~ msgstr "Unicode"
#~ msgid "Armenian"
#~ msgstr "Arménien"
#~ msgid "Chinese Traditional"
#~ msgstr "Chinois traditionnel"
#~ msgid "Cyrillic/Russian"
#~ msgstr "Cyrillique/russe"
#~ msgid "Japanese"
#~ msgstr "Japonais"
#~ msgid "Korean"
#~ msgstr "Coréen"
#~ msgid "Chinese Simplified"
#~ msgstr "Chinois simplifié"
#~ msgid "Georgian"
#~ msgstr "Géorgien"
#~ msgid "Cyrillic/Ukrainian"
#~ msgstr "Cyrillique/ukrainien"
#~ msgid "Croatian"
#~ msgstr "Croate"
#~ msgid "Hindi"
#~ msgstr "Hindi"
#~ msgid "Persian"
#~ msgstr "Persan"
#~ msgid "Gujarati"
#~ msgstr "Gujarati"
#~ msgid "Gurmukhi"
#~ msgstr "Gurmukhi"
#~ msgid "Icelandic"
#~ msgstr "Islandais"
#~ msgid "Vietnamese"
#~ msgstr "Vietnamien"
#~ msgid "Thai"
#~ msgstr "Thaï"
#~ msgid "Line Height:"
#~ msgstr "Hauteur de ligne :"
#~ msgid "Encoding:"
#~ msgstr "Codage des caractères :"
#~ msgid "Encodings"
#~ msgstr "Codages"
#~ msgid "Default"
#~ msgstr "Valeur par défaut"
#~ msgid "User defined"
#~ msgstr "Défini par l'utilisateur"
#~ msgid "Other Encodings"
#~ msgstr "Autres codages"

267
po/hr.po
View File

@ -2,28 +2,26 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#
# Translators:
# Gnome Terminator <terminator@lazyfrosch.de>, 2020
# Marko Dzidic <mdzidic@gmail.com>, 2020
# Markus Frosch <markus@lazyfrosch.de>, 2021
#
# Marko Dzidic <mdzidic@gmail.com>, 2023
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-22 00:51+0100\n"
"POT-Creation-Date: 2022-10-19 09:29-0400\n"
"PO-Revision-Date: 2020-04-22 08:11+0000\n"
"Last-Translator: Markus Frosch <markus@lazyfrosch.de>, 2021\n"
"Language-Team: Croatian (https://www.transifex.com/terminator/teams/109338/"
"hr/)\n"
"Language: hr\n"
"Last-Translator: Marko Dzidic <mdzidic@gmail.com>, 2023\n"
"Language-Team: Croatian (https://app.transifex.com/terminator/teams/109338/hr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Language: hr\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. Command uuid req. Description
#: ../remotinator.py:39
@ -48,7 +46,7 @@ msgstr "Dobij popis svih terminala"
#: ../remotinator.py:44
msgid "Get the uuid of the current focused terminal"
msgstr ""
msgstr "Dobij UUID trenutnog terminala u fokusu"
#: ../remotinator.py:45
msgid "Get the UUID of a parent window"
@ -68,23 +66,23 @@ msgstr "Dobij naslov nadređene kartice"
#: ../remotinator.py:49
msgid "Set the title of a parent tab"
msgstr ""
msgstr "Postavite naslov glavne kartice"
#: ../remotinator.py:50
msgid "Set the background image"
msgstr ""
msgstr "Postavite pozadinsku sliku"
#: ../remotinator.py:51
msgid "Set the background image for all terminals"
msgstr ""
msgstr "Postavite pozadinsku sliku za sve terminale"
#: ../remotinator.py:52
msgid "Switch current terminal profile"
msgstr ""
msgstr "Promijeni trenutni profil terminala"
#: ../remotinator.py:53
msgid "Switch profile of all currently running terminals"
msgstr ""
msgstr "Promijeni profil svih trenutno pokrenutih terminala"
#: ../remotinator.py:70
#, python-format
@ -111,23 +109,24 @@ msgstr "UUID terminala, kad nije u TERMINATOR_UUID varijabli okruženja"
#: ../remotinator.py:80
msgid "Profile name to switch to"
msgstr ""
msgstr "Naziv profila za prebacivanje"
#: ../remotinator.py:83
msgid "File to pass to command"
msgstr ""
msgstr "Datoteka za prosljeđivanje naredbi"
#: ../remotinator.py:86
msgid "Command to run in new terminal"
msgstr ""
msgstr "Naredba za pokretanje u novom terminalu"
#: ../remotinator.py:89
msgid "Tab name to set. Only used with \"set_tab_title\" command."
msgstr ""
"Naziv kartice za postavljanje. Koristi se samo s naredbom \"set_tab_title\"."
#: ../remotinator.py:92
msgid "Tab name to set."
msgstr ""
msgstr "Naziv kartice za postavljanje."
#: ../data/terminator.desktop.in.h:1 ../data/terminator.appdata.xml.in.h:1
#: ../terminatorlib/plugins/activitywatch.py:83
@ -149,11 +148,11 @@ msgstr "Robotska budućnost terminala"
msgid ""
"A power-user tool for arranging terminals. It is inspired by programs such "
"as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging "
"terminals in grids (tabs is the most common default method, which Terminator "
"also supports)."
"terminals in grids (tabs is the most common default method, which Terminator"
" also supports)."
msgstr ""
"Profesionalni korisnički alat za raspoređivanje terminala, slično programima "
"poput gnome-multi-term, quadkonsole, itd., a glavna ideja je pločasto "
"Profesionalni korisnički alat za raspoređivanje terminala, slično programima"
" poput gnome-multi-term, quadkonsole, itd., a glavna ideja je pločasto "
"raspoređivanje terminala (kartice su najraširenija metoda, koju Terminator "
"također podržava)."
@ -304,8 +303,8 @@ msgid ""
"Use the rest of the command line as a command to execute inside the "
"terminal, and its arguments"
msgstr ""
"Koristi ostatak naredbenog retka kao naredbu za izvršavanje unutar terminala "
"i njezine argumente"
"Koristi ostatak naredbenog retka kao naredbu za izvršavanje unutar terminala"
" i njezine argumente"
#: ../terminatorlib/optionparse.py:69
msgid "Specify a config file"
@ -361,15 +360,15 @@ msgstr "Ako je Terminator već pokrenut, jednostavno otvori novu karticu"
#: ../terminatorlib/optionparse.py:98
msgid "If Terminator is already running, just unhide all hidden windows"
msgstr ""
msgstr "Ako je Terminator već pokrenut, samo otkrijte sve skrivene prozore"
#: ../terminatorlib/optionparse.py:100
msgid "List all profiles"
msgstr ""
msgstr "Popis svih profila"
#: ../terminatorlib/optionparse.py:102
msgid "List all layouts"
msgstr ""
msgstr "Popis svih izgleda"
#: ../terminatorlib/plugins/activitywatch.py:54
msgid "Watch for _activity"
@ -487,7 +486,7 @@ msgstr "Naziv *%s* već postoji"
#: ../terminatorlib/plugins/dir_open.py:26
msgid "Open current directory"
msgstr ""
msgstr "Otvori trenutni direktorij"
#: ../terminatorlib/plugins/logger.py:21
#: ../terminatorlib/plugins/terminalshot.py:21
@ -757,15 +756,15 @@ msgstr "Međuspremnik"
#: ../terminatorlib/preferences.glade.h:62
msgid "Clear selection on copy"
msgstr ""
msgstr "Obriši obilježeno nakon kopiranja"
#: ../terminatorlib/preferences.glade.h:63
msgid "Open links with a single click (instead of Ctrl-left click)"
msgstr ""
msgstr "Otvaranje poveznica jednim klikom (umjesto Ctrl-lijevi klik)"
#: ../terminatorlib/preferences.glade.h:64
msgid "Disable mouse paste"
msgstr ""
msgstr "Onemogući umetanje mišom"
#: ../terminatorlib/preferences.glade.h:65
msgid "Custom URL handler:"
@ -793,11 +792,11 @@ msgstr "Dodatno stiliziranje (ovisno o temi)"
#: ../terminatorlib/preferences.glade.h:71
msgid "Cell Height:"
msgstr ""
msgstr "Visina ćelije:"
#: ../terminatorlib/preferences.glade.h:72
msgid "Cell Width:"
msgstr ""
msgstr "Širina ćelije:"
#: ../terminatorlib/preferences.glade.h:73
msgid "Tab position:"
@ -869,11 +868,11 @@ msgstr "Titranje"
#: ../terminatorlib/preferences.glade.h:90
msgid "Use default colors"
msgstr ""
msgstr "Koristi zadane boje"
#: ../terminatorlib/preferences.glade.h:91
msgid "Foreground:"
msgstr ""
msgstr "Prednji plan:"
#: ../terminatorlib/preferences.glade.h:92
msgid "Background:"
@ -933,11 +932,11 @@ msgstr "Ugrađene she_me:"
#: ../terminatorlib/preferences.glade.h:107
msgid "_Foreground:"
msgstr ""
msgstr "_Prednji plan:"
#: ../terminatorlib/preferences.glade.h:108
msgid "_Background:"
msgstr ""
msgstr "_Boja pozadine:"
#: ../terminatorlib/preferences.glade.h:109
msgid "<b>Palette</b>"
@ -969,11 +968,11 @@ msgstr "_Prozirna pozadina"
#: ../terminatorlib/preferences.glade.h:116
msgid "Background Image"
msgstr ""
msgstr "Pozadinska slika"
#: ../terminatorlib/preferences.glade.h:117
msgid "Background Image File:"
msgstr ""
msgstr "Datoteka pozadinske slike:"
#: ../terminatorlib/preferences.glade.h:118
msgid "Choose file"
@ -981,7 +980,7 @@ msgstr "Odaberi datoteku"
#: ../terminatorlib/preferences.glade.h:119
msgid "S_hade background:"
msgstr ""
msgstr "Zasjeniti pozadinu:"
#: ../terminatorlib/preferences.glade.h:120
msgid "<small><i>None</i></small>"
@ -1027,8 +1026,8 @@ msgstr "Klizanje"
msgid ""
"<small><i><b>Note:</b> These options may cause some applications to behave "
"incorrectly. They are only here to allow you to work around certain "
"applications and operating systems that expect different terminal behavior.</"
"i></small>"
"applications and operating systems that expect different terminal "
"behavior.</i></small>"
msgstr ""
"<small><i><b>Napomena:</b> Ove opcije mogu prouzrokovati neispravan rad "
"nekih programa. Ovdje se nalaze samo kako bi se zaobišli problemi s "
@ -1077,7 +1076,7 @@ msgstr "Odaberi font za traku naslova"
#: ../terminatorlib/preferences.glade.h:141
msgid "Titlebar"
msgstr ""
msgstr "Naslovna traka"
#: ../terminatorlib/preferences.glade.h:142
#: ../terminatorlib/terminal_popup_menu.py:204
@ -1130,30 +1129,17 @@ msgstr "Priključci"
#: ../terminatorlib/preferences.glade.h:158
msgid "Version: 2.1.1"
msgstr ""
msgstr "Verzija: 2.1.1"
#: ../terminatorlib/preferences.glade.h:159
msgid ""
"The goal of this project is to produce a useful tool for arranging "
"terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, "
"etc. in that the main focus is arranging terminals in grids (tabs is the "
"most common default method, which Terminator also supports).\n"
"The goal of this project is to produce a useful tool for arranging terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging terminals in grids (tabs is the most common default method, which Terminator also supports).\n"
"\n"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are "
"adding more features from that as time goes by, but we also want to extend "
"out in different directions with useful features for sysadmins and other "
"users. If you have any suggestions, please file wishlist bugs! (see left for "
"the Development link)"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are adding more features from that as time goes by, but we also want to extend out in different directions with useful features for sysadmins and other users. If you have any suggestions, please file wishlist bugs! (see left for the Development link)"
msgstr ""
"Cilj ovog projekta je proizvesti koristan alat za raspoređivanje terminala, "
"slično programima poput gnome-multi-term, quadkonsole, itd., a glavna ideja "
"je pločasto raspoređivanje terminala (kartice su najraširenija standardna "
"metoda, koju Terminator također podržava).\n"
"Cilj ovog projekta je proizvesti koristan alat za raspoređivanje terminala, slično programima poput gnome-multi-term, quadkonsole, itd., a glavna ideja je pločasto raspoređivanje terminala (kartice su najraširenija standardna metoda, koju Terminator također podržava).\n"
"\n"
"Terminator se uveliko temelji se na GNOME Terminalu i s vremenom dodajemo "
"daljnje njegove funkcije, ali ga također razvijamo s raznim dodatnim "
"korisnim funkcijama za administratore sustava i za ostale korisnike. "
"Prijedlozi se mogu dodati u popis želja! (vidi lijevo poveznicu „Razvoj”)"
"Terminator se uveliko temelji se na GNOME Terminalu i s vremenom dodajemo daljnje njegove funkcije, ali ga također razvijamo s raznim dodatnim korisnim funkcijama za administratore sustava i za ostale korisnike. Prijedlozi se mogu dodati u popis želja! (vidi lijevo poveznicu „Razvoj”)"
#: ../terminatorlib/preferences.glade.h:162
msgid "The Manual"
@ -1162,12 +1148,10 @@ msgstr "Priručnik"
#: ../terminatorlib/preferences.glade.h:163
msgid ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Development</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / "
"Enhancements</a>"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / Enhancements</a>"
msgstr ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Razvoj</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Greške i "
"poboljšanja</a>"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Greške i poboljšanja</a>"
#: ../terminatorlib/preferences.glade.h:165
msgid "About"
@ -1187,15 +1171,15 @@ msgstr "Vrati izvornu veličinu fonta"
#: ../terminatorlib/prefseditor.py:107
msgid "Increase font size on all terminals"
msgstr ""
msgstr "Povećaj veličinu fonta na svim terminalima"
#: ../terminatorlib/prefseditor.py:108
msgid "Decrease font size on all terminals"
msgstr ""
msgstr "Smanji veličinu fonta na svim terminalima"
#: ../terminatorlib/prefseditor.py:109
msgid "Restore original font size on all terminals"
msgstr ""
msgstr "Vrati izvornu veličinu fonta na svim terminalima"
#: ../terminatorlib/prefseditor.py:110
msgid "Create a new tab"
@ -1255,7 +1239,7 @@ msgstr "Umetni iz međuspremnika"
#: ../terminatorlib/prefseditor.py:126
msgid "Paste primary selection"
msgstr ""
msgstr "Umetni primarni odabir"
#: ../terminatorlib/prefseditor.py:127
msgid "Show/Hide the scrollbar"
@ -1407,15 +1391,15 @@ msgstr "Razdvoji sve terminale"
#: ../terminatorlib/prefseditor.py:164
msgid "Group terminals in window"
msgstr ""
msgstr "Grupiraj terminale u prozoru"
#: ../terminatorlib/prefseditor.py:165
msgid "Group/Ungroup terminals in window"
msgstr ""
msgstr "Grupiraj/razgrupiraj terminale u prozoru"
#: ../terminatorlib/prefseditor.py:166
msgid "Ungroup terminals in window"
msgstr ""
msgstr "Razgrupiraj terminale u prozoru"
#: ../terminatorlib/prefseditor.py:167
msgid "Group terminals in tab"
@ -1489,11 +1473,11 @@ msgstr "Otvori prozor postavki"
msgid "Open the manual"
msgstr "Otvori priručnik"
#: ../terminatorlib/prefseditor.py:1370
#: ../terminatorlib/prefseditor.py:1366
msgid "New Profile"
msgstr "Novi profil"
#: ../terminatorlib/prefseditor.py:1413 ../terminatorlib/prefseditor.py:1418
#: ../terminatorlib/prefseditor.py:1409 ../terminatorlib/prefseditor.py:1414
msgid "New Layout"
msgstr "Novi raspored"
@ -1540,7 +1524,7 @@ msgstr "_Umetni"
#: ../terminatorlib/terminal_popup_menu.py:112
msgid "Set W_indow Title"
msgstr ""
msgstr "Postav_ite naslov prozora"
#: ../terminatorlib/terminal_popup_menu.py:117
msgid "Split H_orizontally"
@ -1580,7 +1564,7 @@ msgstr "Grupiranje"
#: ../terminatorlib/terminal_popup_menu.py:186
msgid "Relaunch Command"
msgstr ""
msgstr "Ponovo pokreni naredbu"
#: ../terminatorlib/terminal_popup_menu.py:191
msgid "Show _scrollbar"
@ -1605,11 +1589,11 @@ msgstr "Ukloni grupu %s"
#: ../terminatorlib/terminal.py:512
msgid "G_roup all in window"
msgstr ""
msgstr "G_rupirajte sve u prozoru"
#: ../terminatorlib/terminal.py:517
msgid "Ungro_up all in window"
msgstr ""
msgstr "Razgr_upiraj sve u prozoru"
#: ../terminatorlib/terminal.py:522
msgid "G_roup all in tab"
@ -1656,25 +1640,25 @@ msgstr "_Umetni broj terminala"
msgid "Insert _padded terminal number"
msgstr "Umetni _broj terminala s predstavljenom nulom"
#: ../terminatorlib/terminal.py:1490
#: ../terminatorlib/terminal.py:1492
msgid "Unable to find a shell"
msgstr "Nije moguće pronaći ljusku"
#: ../terminatorlib/terminal.py:1521
#: ../terminatorlib/terminal.py:1546
msgid "Unable to start shell:"
msgstr "Nije moguće pokrenuti ljusku:"
#: ../terminatorlib/terminal.py:1975
#: ../terminatorlib/terminal.py:2000
msgid "Rename Window"
msgstr "Preimenuj prozor"
#: ../terminatorlib/terminal.py:1983
#: ../terminatorlib/terminal.py:2008
msgid "Enter a new title for the Terminator window..."
msgstr "Upiši novi naslov za prozor Terminatora …"
#: ../terminatorlib/titlebar.py:112
msgid "[INACTIVE: Right-Click for Relaunch option] "
msgstr ""
msgstr "[NEAKTIVNO: Desni klik za opciju ponovnog pokretanja]"
#: ../terminatorlib/titlebar.py:258
msgid "Alpha"
@ -1779,120 +1763,9 @@ msgstr "prozor"
#: ../terminatorlib/window.py:773
#, python-format
msgid "Window group %s"
msgstr ""
msgstr "Grupa prozora %s"
#: ../terminatorlib/window.py:799
#, python-format
msgid "Tab %d"
msgstr "Kartica %d"
#~ msgid "Current Locale"
#~ msgstr "Trenutačni jezik"
#~ msgid "Western"
#~ msgstr "Zapadni"
#~ msgid "Central European"
#~ msgstr "Srednjoeuropski"
#~ msgid "South European"
#~ msgstr "Južnoeuropski"
#~ msgid "Baltic"
#~ msgstr "Baltički"
#~ msgid "Cyrillic"
#~ msgstr "Ćirilični"
#~ msgid "Arabic"
#~ msgstr "Arapski"
#~ msgid "Greek"
#~ msgstr "Grčki"
#~ msgid "Hebrew Visual"
#~ msgstr "Vizualni hebrejski"
#~ msgid "Hebrew"
#~ msgstr "Hebrejski"
#~ msgid "Turkish"
#~ msgstr "Turski"
#~ msgid "Nordic"
#~ msgstr "Nordijski"
#~ msgid "Celtic"
#~ msgstr "Keltski"
#~ msgid "Romanian"
#~ msgstr "Rumunjski"
#~ msgid "Unicode"
#~ msgstr "Unikod"
#~ msgid "Armenian"
#~ msgstr "Armenski"
#~ msgid "Chinese Traditional"
#~ msgstr "Kineski tradicionalni"
#~ msgid "Cyrillic/Russian"
#~ msgstr "Ćirilica/Ruski"
#~ msgid "Japanese"
#~ msgstr "Japanski"
#~ msgid "Korean"
#~ msgstr "Korejski"
#~ msgid "Chinese Simplified"
#~ msgstr "Kineski pojednostavljeni"
#~ msgid "Georgian"
#~ msgstr "Gruzijski"
#~ msgid "Cyrillic/Ukrainian"
#~ msgstr "Ćirilica/Ukrajinski"
#~ msgid "Croatian"
#~ msgstr "Hrvatski"
#~ msgid "Hindi"
#~ msgstr "Hindski"
#~ msgid "Persian"
#~ msgstr "Perzijski"
#~ msgid "Gujarati"
#~ msgstr "Gudžaratski"
#~ msgid "Gurmukhi"
#~ msgstr "Gurmuki"
#~ msgid "Icelandic"
#~ msgstr "Islandski"
#~ msgid "Vietnamese"
#~ msgstr "Vijetnamski"
#~ msgid "Thai"
#~ msgstr "Tajlandski"
#~ msgid "Line Height:"
#~ msgstr "Prored:"
#~ msgid "Encoding:"
#~ msgstr "Kodiranje:"
#~ msgid "Encodings"
#~ msgstr "Kodiranja"
#~ msgid "Default"
#~ msgstr "Standardno"
#~ msgid "User defined"
#~ msgstr "Korisnički određeno"
#~ msgid "Other Encodings"
#~ msgstr "Ostala kodiranja"

View File

@ -2,26 +2,26 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#
# Translators:
# Gnome Terminator <terminator@lazyfrosch.de>, 2020
# Anthony Louis <anthony.physis@gmail.com>, 2021
#
# C. E., 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-22 00:51+0100\n"
"POT-Creation-Date: 2022-10-19 09:29-0400\n"
"PO-Revision-Date: 2020-04-22 08:11+0000\n"
"Last-Translator: Anthony Louis <anthony.physis@gmail.com>, 2021\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/terminator/"
"teams/109338/pt_BR/)\n"
"Language: pt_BR\n"
"Last-Translator: C. E., 2022\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/terminator/teams/109338/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#. Command uuid req. Description
#: ../remotinator.py:39
@ -70,11 +70,11 @@ msgstr "Definir título de uma guia superior"
#: ../remotinator.py:50
msgid "Set the background image"
msgstr ""
msgstr "Definir a imagem de fundo"
#: ../remotinator.py:51
msgid "Set the background image for all terminals"
msgstr ""
msgstr "Definir a imagem de fundo para todos os terminais"
#: ../remotinator.py:52
msgid "Switch current terminal profile"
@ -82,7 +82,7 @@ msgstr "Trocar o perfil atual do terminal"
#: ../remotinator.py:53
msgid "Switch profile of all currently running terminals"
msgstr ""
msgstr "Troca o perfil de todos os terminais atualmente em execução"
#: ../remotinator.py:70
#, python-format
@ -108,15 +108,15 @@ msgstr "Terminal UUID para quando não estiver em TERMINATOR_UUID"
#: ../remotinator.py:80
msgid "Profile name to switch to"
msgstr ""
msgstr "Mudar o nome do perfil para"
#: ../remotinator.py:83
msgid "File to pass to command"
msgstr ""
msgstr "Arquivo para passar ao comando"
#: ../remotinator.py:86
msgid "Command to run in new terminal"
msgstr ""
msgstr "Comando para executar em novo terminal"
#: ../remotinator.py:89
msgid "Tab name to set. Only used with \"set_tab_title\" command."
@ -126,7 +126,7 @@ msgstr ""
#: ../remotinator.py:92
msgid "Tab name to set."
msgstr ""
msgstr "Definir nome da Aba"
#: ../data/terminator.desktop.in.h:1 ../data/terminator.appdata.xml.in.h:1
#: ../terminatorlib/plugins/activitywatch.py:83
@ -148,8 +148,8 @@ msgstr "O robo do futuro dos terminais"
msgid ""
"A power-user tool for arranging terminals. It is inspired by programs such "
"as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging "
"terminals in grids (tabs is the most common default method, which Terminator "
"also supports)."
"terminals in grids (tabs is the most common default method, which Terminator"
" also supports)."
msgstr ""
"Uma ferramenta destinada aos superusuários, útil para organização de "
"terminais. Esta foi inspirada por programas como gnome-multi-term, "
@ -164,8 +164,8 @@ msgid ""
"users."
msgstr ""
"Muito do comportamento do Terminator é baseado no Terminal do Gnome, e "
"estamos adicionando mais recursos com o passar do tempo, mas também queremos "
"estender isso em diferentes recursos para administradores e sistemas e "
"estamos adicionando mais recursos com o passar do tempo, mas também queremos"
" estender isso em diferentes recursos para administradores e sistemas e "
"outros usuários."
#: ../data/terminator.appdata.xml.in.h:6
@ -366,11 +366,11 @@ msgstr ""
#: ../terminatorlib/optionparse.py:100
msgid "List all profiles"
msgstr ""
msgstr "Listar todos os perfis"
#: ../terminatorlib/optionparse.py:102
msgid "List all layouts"
msgstr ""
msgstr "Listar todos os layouts"
#: ../terminatorlib/plugins/activitywatch.py:54
msgid "Watch for _activity"
@ -768,7 +768,7 @@ msgstr ""
#: ../terminatorlib/preferences.glade.h:64
msgid "Disable mouse paste"
msgstr ""
msgstr "Desativar a cola do mouse"
#: ../terminatorlib/preferences.glade.h:65
msgid "Custom URL handler:"
@ -796,11 +796,11 @@ msgstr "Estilização extra(Depende do tema)"
#: ../terminatorlib/preferences.glade.h:71
msgid "Cell Height:"
msgstr ""
msgstr "Altura da célula:"
#: ../terminatorlib/preferences.glade.h:72
msgid "Cell Width:"
msgstr ""
msgstr "Largura da célula:"
#: ../terminatorlib/preferences.glade.h:73
msgid "Tab position:"
@ -872,11 +872,11 @@ msgstr "Piscar"
#: ../terminatorlib/preferences.glade.h:90
msgid "Use default colors"
msgstr ""
msgstr "Usar cores padrão"
#: ../terminatorlib/preferences.glade.h:91
msgid "Foreground:"
msgstr ""
msgstr "Primeiro plano:"
#: ../terminatorlib/preferences.glade.h:92
msgid "Background:"
@ -936,11 +936,11 @@ msgstr "Es_quemas embutidos:"
#: ../terminatorlib/preferences.glade.h:107
msgid "_Foreground:"
msgstr ""
msgstr "_Foreground:"
#: ../terminatorlib/preferences.glade.h:108
msgid "_Background:"
msgstr ""
msgstr "_Background:"
#: ../terminatorlib/preferences.glade.h:109
msgid "<b>Palette</b>"
@ -1030,8 +1030,8 @@ msgstr "Rolagem"
msgid ""
"<small><i><b>Note:</b> These options may cause some applications to behave "
"incorrectly. They are only here to allow you to work around certain "
"applications and operating systems that expect different terminal behavior.</"
"i></small>"
"applications and operating systems that expect different terminal "
"behavior.</i></small>"
msgstr ""
"<small><i><b>Nota:</b> Estas opções podem levar alguns aplicativos a se "
"comportarem incorretamente. Elas existem apenas para permitir que você "
@ -1080,7 +1080,7 @@ msgstr "Escolher Uma Fonte para Barra de Títulos"
#: ../terminatorlib/preferences.glade.h:141
msgid "Titlebar"
msgstr ""
msgstr "Barra de título"
#: ../terminatorlib/preferences.glade.h:142
#: ../terminatorlib/terminal_popup_menu.py:204
@ -1137,27 +1137,12 @@ msgstr "Versão: 2.11"
#: ../terminatorlib/preferences.glade.h:159
msgid ""
"The goal of this project is to produce a useful tool for arranging "
"terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, "
"etc. in that the main focus is arranging terminals in grids (tabs is the "
"most common default method, which Terminator also supports).\n"
"The goal of this project is to produce a useful tool for arranging terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging terminals in grids (tabs is the most common default method, which Terminator also supports).\n"
"\n"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are "
"adding more features from that as time goes by, but we also want to extend "
"out in different directions with useful features for sysadmins and other "
"users. If you have any suggestions, please file wishlist bugs! (see left for "
"the Development link)"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are adding more features from that as time goes by, but we also want to extend out in different directions with useful features for sysadmins and other users. If you have any suggestions, please file wishlist bugs! (see left for the Development link)"
msgstr ""
"O objetivo deste projeto é fornecer uma ferramenta útil para organização de "
"terminais. Esta foi inspirada por programas como gnome-multi-term, "
"quadkonsole, etc. em que o objetivo principal é organizar terminais em "
"grades (abas é o método mais comum, o qual o Terminator também suporta).\n"
"O comportamento do Terminator é baseado no Terminal do Gnome, e estamos "
"adicionando mais recursos com o passar do tempo, mas também queremos "
"estender isso em diferentes recursos para administradores e sistemas e "
"outros usuários. Se você tem alguma sugestão, por favor, relate os bugs e "
"possíveis melhorias na lista de desejo! (Veja a esquerda para o link para "
"desenvolvimento)"
"O objetivo deste projeto é fornecer uma ferramenta útil para organização de terminais. Esta foi inspirada por programas como gnome-multi-term, quadkonsole, etc. em que o objetivo principal é organizar terminais em grades (abas é o método mais comum, o qual o Terminator também suporta).\n"
"O comportamento do Terminator é baseado no Terminal do Gnome, e estamos adicionando mais recursos com o passar do tempo, mas também queremos estender isso em diferentes recursos para administradores e sistemas e outros usuários. Se você tem alguma sugestão, por favor, relate os bugs e possíveis melhorias na lista de desejo! (Veja a esquerda para o link para desenvolvimento)"
#: ../terminatorlib/preferences.glade.h:162
msgid "The Manual"
@ -1166,13 +1151,10 @@ msgstr "O Manual"
#: ../terminatorlib/preferences.glade.h:163
msgid ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Development</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / "
"Enhancements</a>"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / Enhancements</a>"
msgstr ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Desenvolvimento</"
"a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / "
"Melhorias</a>"
"<a href=\"https://github.com/gnome-terminator/terminator\">Desenvolvimento</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / Melhorias</a>"
#: ../terminatorlib/preferences.glade.h:165
msgid "About"
@ -1260,7 +1242,7 @@ msgstr "Colar área de transferência"
#: ../terminatorlib/prefseditor.py:126
msgid "Paste primary selection"
msgstr ""
msgstr "Colar seleção primária"
#: ../terminatorlib/prefseditor.py:127
msgid "Show/Hide the scrollbar"
@ -1412,15 +1394,15 @@ msgstr "Desagrupar todos os terminais"
#: ../terminatorlib/prefseditor.py:164
msgid "Group terminals in window"
msgstr ""
msgstr "Agrupar terminais na janela"
#: ../terminatorlib/prefseditor.py:165
msgid "Group/Ungroup terminals in window"
msgstr ""
msgstr "Agrupar/Desagrupar terminais na janela"
#: ../terminatorlib/prefseditor.py:166
msgid "Ungroup terminals in window"
msgstr ""
msgstr "Desagrupar terminais na janela"
#: ../terminatorlib/prefseditor.py:167
msgid "Group terminals in tab"
@ -1494,11 +1476,11 @@ msgstr "Abrir janela de Preferências"
msgid "Open the manual"
msgstr "Abrir o manual"
#: ../terminatorlib/prefseditor.py:1370
#: ../terminatorlib/prefseditor.py:1366
msgid "New Profile"
msgstr "Novo perfil"
#: ../terminatorlib/prefseditor.py:1413 ../terminatorlib/prefseditor.py:1418
#: ../terminatorlib/prefseditor.py:1409 ../terminatorlib/prefseditor.py:1414
msgid "New Layout"
msgstr "Nova disposição"
@ -1545,7 +1527,7 @@ msgstr "_Colar"
#: ../terminatorlib/terminal_popup_menu.py:112
msgid "Set W_indow Title"
msgstr ""
msgstr "Definir o título da W_indow"
#: ../terminatorlib/terminal_popup_menu.py:117
msgid "Split H_orizontally"
@ -1610,11 +1592,11 @@ msgstr "Remover grupo %s"
#: ../terminatorlib/terminal.py:512
msgid "G_roup all in window"
msgstr ""
msgstr "Ag_rupar todas as janelas"
#: ../terminatorlib/terminal.py:517
msgid "Ungro_up all in window"
msgstr ""
msgstr "Desagr_upar todas as janelas"
#: ../terminatorlib/terminal.py:522
msgid "G_roup all in tab"
@ -1661,19 +1643,19 @@ msgstr "_Inserir número do terminal"
msgid "Insert _padded terminal number"
msgstr "Inserir _monte de números de terminal"
#: ../terminatorlib/terminal.py:1490
#: ../terminatorlib/terminal.py:1492
msgid "Unable to find a shell"
msgstr "Incapaz de encontrar um shell"
#: ../terminatorlib/terminal.py:1521
#: ../terminatorlib/terminal.py:1546
msgid "Unable to start shell:"
msgstr "Incapaz de iniciar o shell:"
#: ../terminatorlib/terminal.py:1975
#: ../terminatorlib/terminal.py:2000
msgid "Rename Window"
msgstr "Renomear janela"
#: ../terminatorlib/terminal.py:1983
#: ../terminatorlib/terminal.py:2008
msgid "Enter a new title for the Terminator window..."
msgstr "Insira um novo título para a janela do terminal"
@ -1784,120 +1766,9 @@ msgstr "janela"
#: ../terminatorlib/window.py:773
#, python-format
msgid "Window group %s"
msgstr ""
msgstr "Grupo de janelas %s"
#: ../terminatorlib/window.py:799
#, python-format
msgid "Tab %d"
msgstr "Aba %d"
#~ msgid "Current Locale"
#~ msgstr "Localização atual"
#~ msgid "Western"
#~ msgstr "Ocidental"
#~ msgid "Central European"
#~ msgstr "Europa Central"
#~ msgid "South European"
#~ msgstr "Sul da Europa"
#~ msgid "Baltic"
#~ msgstr "Báltico"
#~ msgid "Cyrillic"
#~ msgstr "Cirílico"
#~ msgid "Arabic"
#~ msgstr "Arábico"
#~ msgid "Greek"
#~ msgstr "Grego"
#~ msgid "Hebrew Visual"
#~ msgstr "Visual Hebraico"
#~ msgid "Hebrew"
#~ msgstr "Hebraico"
#~ msgid "Turkish"
#~ msgstr "Turco"
#~ msgid "Nordic"
#~ msgstr "Nórdico"
#~ msgid "Celtic"
#~ msgstr "Celta"
#~ msgid "Romanian"
#~ msgstr "Romeno"
#~ msgid "Unicode"
#~ msgstr "Unicode"
#~ msgid "Armenian"
#~ msgstr "Armênio"
#~ msgid "Chinese Traditional"
#~ msgstr "Chinês tradicional"
#~ msgid "Cyrillic/Russian"
#~ msgstr "Cirílico/Russo"
#~ msgid "Japanese"
#~ msgstr "Japonês"
#~ msgid "Korean"
#~ msgstr "Coreano"
#~ msgid "Chinese Simplified"
#~ msgstr "Chinês simplificado"
#~ msgid "Georgian"
#~ msgstr "Geórgio"
#~ msgid "Cyrillic/Ukrainian"
#~ msgstr "Cirílico/Ucraniano"
#~ msgid "Croatian"
#~ msgstr "Croata"
#~ msgid "Hindi"
#~ msgstr "Hindu"
#~ msgid "Persian"
#~ msgstr "Persa"
#~ msgid "Gujarati"
#~ msgstr "Guzarate"
#~ msgid "Gurmukhi"
#~ msgstr "Gurmukhi"
#~ msgid "Icelandic"
#~ msgstr "Islandês"
#~ msgid "Vietnamese"
#~ msgstr "Vietnamita"
#~ msgid "Thai"
#~ msgstr "Tailandês"
#~ msgid "Line Height:"
#~ msgstr "Altura da linha"
#~ msgid "Encoding:"
#~ msgstr "Codificação"
#~ msgid "Encodings"
#~ msgstr "Codificações"
#~ msgid "Default"
#~ msgstr "Padrão"
#~ msgid "User defined"
#~ msgstr "Definido pelo usuário"
#~ msgid "Other Encodings"
#~ msgstr "Outras codificações"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-22 00:55+0100\n"
"POT-Creation-Date: 2022-10-19 09:29-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1445,11 +1445,11 @@ msgstr ""
msgid "Open the manual"
msgstr ""
#: ../terminatorlib/prefseditor.py:1370
#: ../terminatorlib/prefseditor.py:1366
msgid "New Profile"
msgstr ""
#: ../terminatorlib/prefseditor.py:1413 ../terminatorlib/prefseditor.py:1418
#: ../terminatorlib/prefseditor.py:1409 ../terminatorlib/prefseditor.py:1414
msgid "New Layout"
msgstr ""
@ -1612,19 +1612,19 @@ msgstr ""
msgid "Insert _padded terminal number"
msgstr ""
#: ../terminatorlib/terminal.py:1490
#: ../terminatorlib/terminal.py:1492
msgid "Unable to find a shell"
msgstr ""
#: ../terminatorlib/terminal.py:1521
#: ../terminatorlib/terminal.py:1546
msgid "Unable to start shell:"
msgstr ""
#: ../terminatorlib/terminal.py:1975
#: ../terminatorlib/terminal.py:2000
msgid "Rename Window"
msgstr ""
#: ../terminatorlib/terminal.py:1983
#: ../terminatorlib/terminal.py:2008
msgid "Enter a new title for the Terminator window..."
msgstr ""

View File

@ -2,24 +2,24 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#
# Translators:
# Gnome Terminator <terminator@lazyfrosch.de>, 2020
#
# Mony Xie <monyxie@gmail.com>, 2023
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-22 00:51+0100\n"
"POT-Creation-Date: 2022-10-19 09:29-0400\n"
"PO-Revision-Date: 2020-04-22 08:11+0000\n"
"Last-Translator: Gnome Terminator <terminator@lazyfrosch.de>, 2020\n"
"Language-Team: Chinese (China) (https://www.transifex.com/terminator/"
"teams/109338/zh_CN/)\n"
"Language: zh_CN\n"
"Last-Translator: Mony Xie <monyxie@gmail.com>, 2023\n"
"Language-Team: Chinese (China) (https://app.transifex.com/terminator/teams/109338/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. Command uuid req. Description
@ -45,7 +45,7 @@ msgstr "获取所有终端的列表"
#: ../remotinator.py:44
msgid "Get the uuid of the current focused terminal"
msgstr ""
msgstr "获取当前聚焦终端的 UUID"
#: ../remotinator.py:45
msgid "Get the UUID of a parent window"
@ -57,7 +57,7 @@ msgstr "获取父窗口的标题"
#: ../remotinator.py:47
msgid "Get the UUID of a parent tab"
msgstr "获取一个父标签页的UUID"
msgstr "获取父标签页的UUID"
#: ../remotinator.py:48
msgid "Get the title of a parent tab"
@ -65,23 +65,23 @@ msgstr "获取父标签页的标题"
#: ../remotinator.py:49
msgid "Set the title of a parent tab"
msgstr ""
msgstr "设置父标签页的标题"
#: ../remotinator.py:50
msgid "Set the background image"
msgstr ""
msgstr "设置背景图片"
#: ../remotinator.py:51
msgid "Set the background image for all terminals"
msgstr ""
msgstr "设置所有终端的背景图片"
#: ../remotinator.py:52
msgid "Switch current terminal profile"
msgstr ""
msgstr "切换当前终端配置"
#: ../remotinator.py:53
msgid "Switch profile of all currently running terminals"
msgstr ""
msgstr "切换当前所有运行中终端的配置"
#: ../remotinator.py:70
#, python-format
@ -108,23 +108,23 @@ msgstr "终端UUID如果未设置TERMINATOR_UUID环境变量"
#: ../remotinator.py:80
msgid "Profile name to switch to"
msgstr ""
msgstr "要切换到的配置名"
#: ../remotinator.py:83
msgid "File to pass to command"
msgstr ""
msgstr "要传递给命令的文件"
#: ../remotinator.py:86
msgid "Command to run in new terminal"
msgstr ""
msgstr "要在新终端中运行的命令"
#: ../remotinator.py:89
msgid "Tab name to set. Only used with \"set_tab_title\" command."
msgstr ""
msgstr "要设置的标签页名。仅与“set_tab_title”命令一起使用。"
#: ../remotinator.py:92
msgid "Tab name to set."
msgstr ""
msgstr "要设置的标签页名。"
#: ../data/terminator.desktop.in.h:1 ../data/terminator.appdata.xml.in.h:1
#: ../terminatorlib/plugins/activitywatch.py:83
@ -146,9 +146,11 @@ msgstr "高级终端的未来"
msgid ""
"A power-user tool for arranging terminals. It is inspired by programs such "
"as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging "
"terminals in grids (tabs is the most common default method, which Terminator "
"also supports)."
"terminals in grids (tabs is the most common default method, which Terminator"
" also supports)."
msgstr ""
"一个用来管理终端的高级用户工具。灵感来自于 gnome-multi-termquadkonsole "
"等程序。它的主要功能是用网格来管理终端窗口(但同时也支持标签页)。"
#: ../data/terminator.appdata.xml.in.h:5
msgid ""
@ -157,6 +159,8 @@ msgid ""
"out in different directions with useful features for sysadmins and other "
"users."
msgstr ""
"Terminator 的大部分行为都基于 GNOME "
"Terminal在此基础上我们还会将更多功能集成进来。但我们同时也希望向更多不同的方面扩展从而给系统管理员和其他用户带来更多有用的特性。"
#: ../data/terminator.appdata.xml.in.h:6
msgid "Some highlights:"
@ -295,7 +299,7 @@ msgstr "指定一个配置文件"
#: ../terminatorlib/optionparse.py:71
msgid "Specify a partial config json file"
msgstr ""
msgstr "指定一个部分配置 json 文件"
#: ../terminatorlib/optionparse.py:76
msgid "Set the working directory"
@ -343,15 +347,15 @@ msgstr "如果 Terminator 已经运行,打开一个新的标签页"
#: ../terminatorlib/optionparse.py:98
msgid "If Terminator is already running, just unhide all hidden windows"
msgstr ""
msgstr "如果 Terminator 已经在运行,则仅显示所有隐藏窗口"
#: ../terminatorlib/optionparse.py:100
msgid "List all profiles"
msgstr ""
msgstr "列出所有配置"
#: ../terminatorlib/optionparse.py:102
msgid "List all layouts"
msgstr ""
msgstr "列出所有布局"
#: ../terminatorlib/plugins/activitywatch.py:54
msgid "Watch for _activity"
@ -469,7 +473,7 @@ msgstr "*%s*已经存在"
#: ../terminatorlib/plugins/dir_open.py:26
msgid "Open current directory"
msgstr ""
msgstr "打开当前目录"
#: ../terminatorlib/plugins/logger.py:21
#: ../terminatorlib/plugins/terminalshot.py:21
@ -715,7 +719,7 @@ msgstr "默认广播:"
#: ../terminatorlib/preferences.glade.h:56
msgid "PuTTY style paste:"
msgstr ""
msgstr "粘贴 PuTTY 样式:"
#: ../terminatorlib/preferences.glade.h:57
msgid "Smart copy"
@ -731,23 +735,23 @@ msgstr "使用自定义的URL处理程序"
#: ../terminatorlib/preferences.glade.h:60
msgid "PRIMARY"
msgstr ""
msgstr "PRIMARY"
#: ../terminatorlib/preferences.glade.h:61
msgid "Clipboard"
msgstr ""
msgstr "Clipboard"
#: ../terminatorlib/preferences.glade.h:62
msgid "Clear selection on copy"
msgstr ""
msgstr "复制后清除选择"
#: ../terminatorlib/preferences.glade.h:63
msgid "Open links with a single click (instead of Ctrl-left click)"
msgstr ""
msgstr "点击打开链接(默认为 Ctrl + 点击)"
#: ../terminatorlib/preferences.glade.h:64
msgid "Disable mouse paste"
msgstr ""
msgstr "禁用鼠标粘贴"
#: ../terminatorlib/preferences.glade.h:65
msgid "Custom URL handler:"
@ -775,11 +779,11 @@ msgstr "扩展样式 (主题依赖)"
#: ../terminatorlib/preferences.glade.h:71
msgid "Cell Height:"
msgstr ""
msgstr "格子高度:"
#: ../terminatorlib/preferences.glade.h:72
msgid "Cell Width:"
msgstr ""
msgstr "格子宽度:"
#: ../terminatorlib/preferences.glade.h:73
msgid "Tab position:"
@ -795,7 +799,7 @@ msgstr "标签滚动按钮"
#: ../terminatorlib/preferences.glade.h:76
msgid "Title bar at bottom (Require restart)"
msgstr ""
msgstr "标题栏置于下方(需重启)"
#: ../terminatorlib/preferences.glade.h:77
msgid "Global"
@ -831,7 +835,7 @@ msgstr "选中则复制"
#: ../terminatorlib/preferences.glade.h:85
msgid "Disable Ctrl+mousewheel zoom"
msgstr ""
msgstr "禁用 Ctrl + 滚轮缩放"
#: ../terminatorlib/preferences.glade.h:86
msgid "Select-by-_word characters:"
@ -851,11 +855,11 @@ msgstr "闪烁"
#: ../terminatorlib/preferences.glade.h:90
msgid "Use default colors"
msgstr ""
msgstr "使用默认配色"
#: ../terminatorlib/preferences.glade.h:91
msgid "Foreground:"
msgstr ""
msgstr "前景色:"
#: ../terminatorlib/preferences.glade.h:92
msgid "Background:"
@ -915,11 +919,11 @@ msgstr "内置方案(_M)"
#: ../terminatorlib/preferences.glade.h:107
msgid "_Foreground:"
msgstr ""
msgstr "前景色(_F)"
#: ../terminatorlib/preferences.glade.h:108
msgid "_Background:"
msgstr ""
msgstr "背景色(_B)"
#: ../terminatorlib/preferences.glade.h:109
msgid "<b>Palette</b>"
@ -935,7 +939,7 @@ msgstr "调色板(_A)"
#: ../terminatorlib/preferences.glade.h:112
msgid "Show b_old text in bright colors"
msgstr ""
msgstr "用明亮色显示粗体文字(_O)"
#: ../terminatorlib/preferences.glade.h:113
msgid "Colors"
@ -951,19 +955,19 @@ msgstr "透明背景(_T)"
#: ../terminatorlib/preferences.glade.h:116
msgid "Background Image"
msgstr ""
msgstr "背景图片"
#: ../terminatorlib/preferences.glade.h:117
msgid "Background Image File:"
msgstr ""
msgstr "背景图片文件:"
#: ../terminatorlib/preferences.glade.h:118
msgid "Choose file"
msgstr ""
msgstr "选择文件"
#: ../terminatorlib/preferences.glade.h:119
msgid "S_hade background:"
msgstr ""
msgstr "背景着色(_H)"
#: ../terminatorlib/preferences.glade.h:120
msgid "<small><i>None</i></small>"
@ -1009,11 +1013,10 @@ msgstr "滚动"
msgid ""
"<small><i><b>Note:</b> These options may cause some applications to behave "
"incorrectly. They are only here to allow you to work around certain "
"applications and operating systems that expect different terminal behavior.</"
"i></small>"
"applications and operating systems that expect different terminal "
"behavior.</i></small>"
msgstr ""
"<small><i><b>注意:</b>这些选项可能造成一些应用程序产生不正确的行为。仅用于允"
"许您在一些应用程序和操作系统中作调整以获得不同的终端行为。</i></small>"
"<small><i><b>注意:</b>这些选项可能造成一些应用程序产生不正确的行为。仅用于允许您在一些应用程序和操作系统中作调整以获得不同的终端行为。</i></small>"
#: ../terminatorlib/preferences.glade.h:131
msgid "_Backspace key generates:"
@ -1057,7 +1060,7 @@ msgstr "选择标题栏字体"
#: ../terminatorlib/preferences.glade.h:141
msgid "Titlebar"
msgstr ""
msgstr "标题栏"
#: ../terminatorlib/preferences.glade.h:142
#: ../terminatorlib/terminal_popup_menu.py:204
@ -1110,27 +1113,16 @@ msgstr "插件"
#: ../terminatorlib/preferences.glade.h:158
msgid "Version: 2.1.1"
msgstr ""
msgstr "版本2.1.1"
#: ../terminatorlib/preferences.glade.h:159
msgid ""
"The goal of this project is to produce a useful tool for arranging "
"terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, "
"etc. in that the main focus is arranging terminals in grids (tabs is the "
"most common default method, which Terminator also supports).\n"
"The goal of this project is to produce a useful tool for arranging terminals. It is inspired by programs such as gnome-multi-term, quadkonsole, etc. in that the main focus is arranging terminals in grids (tabs is the most common default method, which Terminator also supports).\n"
"\n"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are "
"adding more features from that as time goes by, but we also want to extend "
"out in different directions with useful features for sysadmins and other "
"users. If you have any suggestions, please file wishlist bugs! (see left for "
"the Development link)"
"Much of the behavior of Terminator is based on GNOME Terminal, and we are adding more features from that as time goes by, but we also want to extend out in different directions with useful features for sysadmins and other users. If you have any suggestions, please file wishlist bugs! (see left for the Development link)"
msgstr ""
"一个用来管理终端的高级用户工具。它的灵感来自于gnome-multi-termquadkonsole等"
"程序。它致力于用格子来管理终端最普遍的方法是用标签页Terminator也支"
"持)。\n"
"Terminator的大部分行为基于GNOME Terminal我们还在从中集成更多特性。但我们同"
"时也希望向扩展更多不同方面的实用特性从而服务于系统管理员和其他用户。如果你有"
"任何建议请向wishlist中提交看左边的开发者链接"
"一个用来管理终端的高级用户工具。它的灵感来自于gnome-multi-termquadkonsole等程序。它致力于用格子来管理终端最普遍的方法是用标签页Terminator也支持。\n"
"Terminator的大部分行为基于GNOME Terminal我们还在从中集成更多特性。但我们同时也希望向扩展更多不同方面的实用特性从而服务于系统管理员和其他用户。如果你有任何建议请向wishlist中提交看左边的开发者链接"
#: ../terminatorlib/preferences.glade.h:162
msgid "The Manual"
@ -1139,9 +1131,10 @@ msgstr "手册"
#: ../terminatorlib/preferences.glade.h:163
msgid ""
"<a href=\"https://github.com/gnome-terminator/terminator\">Development</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / "
"Enhancements</a>"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">Bugs / Enhancements</a>"
msgstr ""
"<a href=\"https://github.com/gnome-terminator/terminator\">开发</a>\n"
"<a href=\"https://github.com/gnome-terminator/terminator/issues\">提交 Bug 或改进意见</a>"
#: ../terminatorlib/preferences.glade.h:165
msgid "About"
@ -1161,15 +1154,15 @@ msgstr "恢复为原始字体大小"
#: ../terminatorlib/prefseditor.py:107
msgid "Increase font size on all terminals"
msgstr ""
msgstr "增大所有终端的字体"
#: ../terminatorlib/prefseditor.py:108
msgid "Decrease font size on all terminals"
msgstr ""
msgstr "减小所有终端的字体"
#: ../terminatorlib/prefseditor.py:109
msgid "Restore original font size on all terminals"
msgstr ""
msgstr "恢复所有终端的字体大小"
#: ../terminatorlib/prefseditor.py:110
msgid "Create a new tab"
@ -1229,7 +1222,7 @@ msgstr "粘贴剪贴板"
#: ../terminatorlib/prefseditor.py:126
msgid "Paste primary selection"
msgstr ""
msgstr "从 PRIMARY 选区粘贴"
#: ../terminatorlib/prefseditor.py:127
msgid "Show/Hide the scrollbar"
@ -1365,7 +1358,7 @@ msgstr "切换窗口可见性"
#: ../terminatorlib/prefseditor.py:160
msgid "Create new group"
msgstr ""
msgstr "创建新组"
#: ../terminatorlib/prefseditor.py:161
msgid "Group all terminals"
@ -1381,15 +1374,15 @@ msgstr "解组所有终端"
#: ../terminatorlib/prefseditor.py:164
msgid "Group terminals in window"
msgstr ""
msgstr "对窗口中的终端分组"
#: ../terminatorlib/prefseditor.py:165
msgid "Group/Ungroup terminals in window"
msgstr ""
msgstr "对窗口中的终端分组或取消分组"
#: ../terminatorlib/prefseditor.py:166
msgid "Ungroup terminals in window"
msgstr ""
msgstr "对窗口中的终端取消分组"
#: ../terminatorlib/prefseditor.py:167
msgid "Group terminals in tab"
@ -1457,17 +1450,17 @@ msgstr "切换到上一个配置文件"
#: ../terminatorlib/prefseditor.py:183
msgid "Open the Preferences window"
msgstr ""
msgstr "打开首选项窗口"
#: ../terminatorlib/prefseditor.py:184
msgid "Open the manual"
msgstr "打开手册"
#: ../terminatorlib/prefseditor.py:1370
#: ../terminatorlib/prefseditor.py:1366
msgid "New Profile"
msgstr "新配置"
#: ../terminatorlib/prefseditor.py:1413 ../terminatorlib/prefseditor.py:1418
#: ../terminatorlib/prefseditor.py:1409 ../terminatorlib/prefseditor.py:1414
msgid "New Layout"
msgstr "新布局"
@ -1514,7 +1507,7 @@ msgstr "粘贴(_P)"
#: ../terminatorlib/terminal_popup_menu.py:112
msgid "Set W_indow Title"
msgstr ""
msgstr "设置窗口标题(_I)"
#: ../terminatorlib/terminal_popup_menu.py:117
msgid "Split H_orizontally"
@ -1554,7 +1547,7 @@ msgstr "分组"
#: ../terminatorlib/terminal_popup_menu.py:186
msgid "Relaunch Command"
msgstr ""
msgstr "重新启动命令"
#: ../terminatorlib/terminal_popup_menu.py:191
msgid "Show _scrollbar"
@ -1562,7 +1555,7 @@ msgstr "显示滚动条"
#: ../terminatorlib/terminal_popup_menu.py:248
msgid "_Layouts..."
msgstr ""
msgstr "布局...(_L)"
#: ../terminatorlib/terminal.py:481
msgid "N_ew group..."
@ -1579,11 +1572,11 @@ msgstr "移除组 %s"
#: ../terminatorlib/terminal.py:512
msgid "G_roup all in window"
msgstr ""
msgstr "将窗口中所有终端纳入分组(_R)"
#: ../terminatorlib/terminal.py:517
msgid "Ungro_up all in window"
msgstr ""
msgstr "将窗口中所有终端移出分组(_U)"
#: ../terminatorlib/terminal.py:522
msgid "G_roup all in tab"
@ -1630,25 +1623,25 @@ msgstr "插入终端编号(_I)"
msgid "Insert _padded terminal number"
msgstr "插入对齐的终端编号(_I)"
#: ../terminatorlib/terminal.py:1490
#: ../terminatorlib/terminal.py:1492
msgid "Unable to find a shell"
msgstr "无法找到shell"
#: ../terminatorlib/terminal.py:1521
#: ../terminatorlib/terminal.py:1546
msgid "Unable to start shell:"
msgstr "无法启动shell"
#: ../terminatorlib/terminal.py:1975
#: ../terminatorlib/terminal.py:2000
msgid "Rename Window"
msgstr "重命名窗口"
#: ../terminatorlib/terminal.py:1983
#: ../terminatorlib/terminal.py:2008
msgid "Enter a new title for the Terminator window..."
msgstr "输入新的Terminator窗口标题"
#: ../terminatorlib/titlebar.py:112
msgid "[INACTIVE: Right-Click for Relaunch option] "
msgstr ""
msgstr "[不活动:右击查看重启选项]"
#: ../terminatorlib/titlebar.py:258
msgid "Alpha"
@ -1753,117 +1746,9 @@ msgstr "窗口"
#: ../terminatorlib/window.py:773
#, python-format
msgid "Window group %s"
msgstr ""
msgstr "窗口组 %s"
#: ../terminatorlib/window.py:799
#, python-format
msgid "Tab %d"
msgstr "标签 %d"
#~ msgid "Current Locale"
#~ msgstr "当前 Locale"
#~ msgid "Western"
#~ msgstr "西文"
#~ msgid "Central European"
#~ msgstr "中欧语系"
#~ msgid "South European"
#~ msgstr "南欧语系"
#~ msgid "Baltic"
#~ msgstr "波罗的海语系"
#~ msgid "Cyrillic"
#~ msgstr "西里尔文"
#~ msgid "Arabic"
#~ msgstr "阿拉伯语"
#~ msgid "Greek"
#~ msgstr "希腊语"
#~ msgid "Hebrew Visual"
#~ msgstr "希伯来语 (视觉顺序)"
#~ msgid "Hebrew"
#~ msgstr "希伯来语"
#~ msgid "Turkish"
#~ msgstr "土耳其语"
#~ msgid "Nordic"
#~ msgstr "日耳曼语"
#~ msgid "Celtic"
#~ msgstr "凯尔特语"
#~ msgid "Romanian"
#~ msgstr "罗马尼亚语"
#~ msgid "Unicode"
#~ msgstr "Unicode"
#~ msgid "Armenian"
#~ msgstr "亚美尼亚语"
#~ msgid "Chinese Traditional"
#~ msgstr "繁体中文"
#~ msgid "Cyrillic/Russian"
#~ msgstr "西里尔语/俄语"
#~ msgid "Japanese"
#~ msgstr "日语"
#~ msgid "Korean"
#~ msgstr "朝鲜语"
#~ msgid "Chinese Simplified"
#~ msgstr "简体中文"
#~ msgid "Georgian"
#~ msgstr "格鲁吉亚语"
#~ msgid "Cyrillic/Ukrainian"
#~ msgstr "西里尔语/乌克兰语"
#~ msgid "Croatian"
#~ msgstr "克罗地亚语"
#~ msgid "Hindi"
#~ msgstr "印地语"
#~ msgid "Persian"
#~ msgstr "波斯语"
#~ msgid "Gujarati"
#~ msgstr "古吉拉特语"
#~ msgid "Gurmukhi"
#~ msgstr "果鲁穆奇语"
#~ msgid "Icelandic"
#~ msgstr "冰岛语"
#~ msgid "Vietnamese"
#~ msgstr "越南语"
#~ msgid "Thai"
#~ msgstr "泰语"
#~ msgid "Encoding:"
#~ msgstr "编码:"
#~ msgid "Encodings"
#~ msgstr "编码"
#~ msgid "Default"
#~ msgstr "默认"
#~ msgid "User defined"
#~ msgstr "用户定义"
#~ msgid "Other Encodings"
#~ msgstr "其他编码"

View File

@ -33,7 +33,7 @@ try:
import gi
gi.require_version('Gtk','3.0')
# pylint: disable-msg=W0611
from gi.repository import Gtk, Gdk
from gi.repository import Gtk, Gdk, GLib
if Gdk.Display.get_default() == None:
print('You need to run terminator in an X environment. ' \
@ -53,33 +53,14 @@ from terminatorlib.util import dbg, err
from terminatorlib.layoutlauncher import LayoutLauncher
from terminatorlib.configjson import ConfigJson
# Deleting env variable fixes double char problem when broadcasting (#78)
# Only delete if it exists, or exception occurs
if os.environ.get('GTK_IM_MODULE') is not None:
del os.environ['GTK_IM_MODULE']
if __name__ == '__main__':
# Workaround for IBus intefering with broadcast when using dead keys
# Environment also needs IBUS_DISABLE_SNOOPER=1, or double chars appear
# in the receivers.
username = pwd.getpwuid(os.getuid()).pw_name
ibus_running = False
for proc in psutil.process_iter():
try:
if proc.name() == 'ibus-daemon' and proc.username() == username:
ibus_running = True
break
except (psutil.AccessDenied) as err:
print("error getting details while looking for Ibus process: %s" % err)
if ibus_running:
os.environ['IBUS_DISABLE_SNOOPER']='1'
dbus_service = None
dbg ("%s starting up, version %s" % (APP_NAME, APP_VERSION))
GLib.set_prgname(APP_NAME)
OPTIONS,dbus_options = terminatorlib.optionparse.parse_options()
if OPTIONS.configjson:
configjson = ConfigJson()
@ -109,6 +90,12 @@ if __name__ == '__main__':
import dbus
try:
dbus_service = ipc.DBusService()
if(OPTIONS.reload):
# Reload only is executed when exist at least one window,
# if not there is nothing to reload
sys.exit()
except ipc.DBusException:
dbg('Unable to become master process, operating via DBus')
# get rid of the None and True types so dbus can handle them (empty
@ -121,6 +108,14 @@ if __name__ == '__main__':
if OPTIONS.new_tab:
dbg('Requesting a new tab')
ipc.new_tab_cmdline(optionslist)
elif OPTIONS.toggle_visibility:
dbg('requesting to toggle windows visibility')
ipc.toggle_visibility_cmdline(optionslist)
if OPTIONS.reload:
dbg('requesting to reload configuration for all windows')
ipc.reload_configuration()
elif OPTIONS.unhide:
print('requesting to unhide windows')
ipc.unhide_cmdline(optionslist)
@ -135,7 +130,6 @@ if __name__ == '__main__':
MAKER = Factory()
TERMINATOR.set_dbus_data(dbus_service)
TERMINATOR.reconfigure()
TERMINATOR.ibus_running = ibus_running
try:
dbg('Creating a terminal with layout: %s' % OPTIONS.layout)

View File

@ -84,7 +84,7 @@ DEFAULTS = {
'global_config': {
'dbus' : True,
'focus' : 'click',
'handle_size' : 1,
'handle_size' : -1,
'geometry_hinting' : False,
'window_state' : 'normal',
'borderless' : False,
@ -92,7 +92,6 @@ DEFAULTS = {
'tab_position' : 'top',
'broadcast_default' : 'group',
'close_button_on_tab' : True,
'hide_tabbar' : False,
'scroll_tabbar' : False,
'homogeneous_tabbar' : True,
'hide_from_taskbar' : False,
@ -101,8 +100,8 @@ DEFAULTS = {
'sticky' : False,
'use_custom_url_handler': False,
'custom_url_handler' : '',
'disable_real_transparency' : False,
'inactive_color_offset': 0.8,
'inactive_bg_color_offset': 1.0,
'enabled_plugins' : ['LaunchpadBugURLHandler',
'LaunchpadCodeURLHandler',
'APTURLHandler'],
@ -118,7 +117,10 @@ DEFAULTS = {
'case_sensitive' : True,
'invert_search' : False,
'link_single_click' : False,
'title_at_bottom' : False
'title_at_bottom' : False,
'detachable_tabs' : True,
'new_tab_after_current_tab': False,
},
'keybindings': {
'zoom_in' : '<Control>plus',
@ -138,6 +140,7 @@ DEFAULTS = {
'go_right' : '<Alt>Right',
'rotate_cw' : '<Super>r',
'rotate_ccw' : '<Super><Shift>r',
'split_auto' : '<Shift><Control>a',
'split_horiz' : '<Shift><Control>o',
'split_vert' : '<Shift><Control>e',
'close_term' : '<Shift><Control>w',
@ -201,6 +204,7 @@ DEFAULTS = {
'next_profile' : '',
'previous_profile' : '',
'preferences' : '',
'preferences_keybindings' : '<Control><Shift>k',
'help' : 'F1'
},
'profiles': {
@ -214,9 +218,11 @@ DEFAULTS = {
'background_darkness' : 0.5,
'background_type' : 'solid',
'background_image' : '',
'background_image_mode' : 'stretch_and_fill',
'background_image_align_horiz': 'center',
'background_image_align_vert' : 'middle',
'backspace_binding' : 'ascii-del',
'delete_binding' : 'escape-sequence',
'color_scheme' : 'grey_on_black',
'cursor_blink' : True,
'cursor_shape' : 'block',
'cursor_fg_color' : '',
@ -228,7 +234,6 @@ DEFAULTS = {
'foreground_color' : '#aaaaaa',
'show_titlebar' : True,
'scrollbar_position' : "right",
'scroll_background' : True,
'scroll_on_keystroke' : True,
'scroll_on_output' : False,
'scrollback_lines' : 500,
@ -248,14 +253,11 @@ DEFAULTS = {
'bold_is_bright' : False,
'cell_height' : 1.0,
'cell_width' : 1.0,
'focus_on_close' : 'auto',
'force_no_bell' : False,
'cycle_term_tab' : True,
'copy_on_selection' : False,
'split_to_group' : False,
'autoclean_groups' : True,
'http_proxy' : '',
'ignore_hosts' : ['localhost','127.0.0.0/8','*.local'],
# Titlebar
'title_hide_sizetext' : False,
'title_transmit_fg_color' : '#ffffff',
@ -718,7 +720,20 @@ class ConfigBase(Borg):
for section_name in ['global_config', 'keybindings']:
dbg('Processing section: %s' % section_name)
section = getattr(self, section_name)
parser[section_name] = dict_diff(DEFAULTS[section_name], section)
if section_name == 'keybindings':
from terminatorlib.plugin import KeyBindUtil
# for plugin KeyBindUtil assist in plugin_util
keybindutil = KeyBindUtil();
keyb_keys = keybindutil.get_all_act_to_keys()
# we only need keys as a reference so to match them
# against new values
keyb_keys = dict.fromkeys(keyb_keys, "")
default_merged_section = {**keyb_keys, **DEFAULTS[section_name]}
merged_section = {**keyb_keys, **section}
parser[section_name] = dict_diff(default_merged_section, merged_section)
else:
parser[section_name] = dict_diff(DEFAULTS[section_name], section)
from .configjson import JSON_PROFILE_NAME, JSON_LAYOUT_NAME

View File

@ -1,6 +1,5 @@
from .util import dbg, err
from os import path
import sys
import json
import copy
from .config import Config
@ -8,6 +7,7 @@ from .config import Config
JSON_PROFILE_NAME = "__internal_json_profile__"
JSON_LAYOUT_NAME = "__internal_json_layout__"
class ConfigJson(object):
profile_to_use = 'default'
@ -54,15 +54,24 @@ class ConfigJson(object):
def build_terminal_layout(self, layoutjson, children, parent, order):
dbg ('Building a terminal from json: %s' % layoutjson)
def from_json(layout_name, json_name=None):
if json_name is None:
json_name = layout_name
if json_name in layoutjson:
children[parent + "." + str(order)][layout_name] = layoutjson[json_name]
children[parent + "." + str(order)] = {
'type': 'Terminal',
'order': order,
'parent': parent,
'profile': self.profile_to_use,
'command': layoutjson['command']
'profile': self.profile_to_use
}
from_json('command')
from_json('title')
def build_container_layout(self, layoutjson, children, parent, order, vertical):
if len(layoutjson) == 1:
layoutjson = layoutjson[0]
@ -73,7 +82,7 @@ class ConfigJson(object):
self.build_terminal_layout(layoutjson, children, parent, order)
return
dbg ('Building %s layout from json: %s' % ("vertical" if vertical else "horizental", layoutjson))
dbg ('Building %s layout from json: %s' % ("vertical" if vertical else "horizontal", layoutjson))
counter = 0
actualparent = parent
@ -105,9 +114,7 @@ class ConfigJson(object):
if "vertical" in layoutjson:
vertical = layoutjson["vertical"]
del layoutjson["vertical"]
result = None
if len(layoutjson) == 1:
firstitem = next(iter(layoutjson.values()))
result = self.build_single_tab_layout(firstitem, vertical)

View File

@ -67,6 +67,16 @@ class Container(object):
child is .remove()d and .add()ed"""
return None
def split_auto(self, widget, cwd=None):
"""Split this container automatically"""
width = widget.get_allocation().width
height = widget.get_allocation().height
dbg("split as per current dimenstions:(%s %s)" % (width, height))
if width > height:
self.split_axis(widget, False, cwd)
else:
self.split_axis(widget, True , cwd)
def split_horiz(self, widget, cwd=None):
"""Split this container horizontally"""
return(self.split_axis(widget, True, cwd))
@ -134,17 +144,6 @@ class Container(object):
"""Handle a keyboard event requesting a terminal resize"""
raise NotImplementedError('resizeterm')
def toggle_zoom(self, widget, fontscale = False):
"""Toggle the existing zoom state"""
try:
if self.get_property('term_zoomed'):
self.unzoom(widget)
else:
self.zoom(widget, fontscale)
except TypeError:
err('Container::toggle_zoom: %s is unable to handle zooming, for \
%s' % (self, widget))
def zoom(self, widget, fontscale = False):
"""Zoom a terminal"""
raise NotImplementedError('zoom')
@ -245,13 +244,13 @@ the tab will also close all terminals within it.')
return(terminals)
def describe_layout(self, count, parent, global_layout, child_order):
def describe_layout(self, count, parent, global_layout, child_order, save_cwd = False):
"""Describe our current layout"""
layout = {}
maker = Factory()
mytype = maker.type(self)
if not mytype:
err('unable to detemine own type. %s' % self)
err('unable to determine own type. %s' % self)
return({})
layout['type'] = mytype
@ -308,7 +307,7 @@ the tab will also close all terminals within it.')
child_order = 0
for child in self.get_children():
if hasattr(child, 'describe_layout'):
count = child.describe_layout(count, name, global_layout, child_order)
count = child.describe_layout(count, name, global_layout, child_order, save_cwd)
child_order = child_order + 1
return(count)

View File

@ -23,7 +23,7 @@ class EditableLabel(Gtk.EventBox):
# pylint: disable-msg=W0212
# pylint: disable-msg=R0904
"""
An eventbox that partialy emulate a Gtk.Label
An eventbox that partially emulate a Gtk.Label
On double-click or key binding the label is editable, entering an empty
will revert back to automatic text
"""

View File

@ -100,6 +100,12 @@ class DBusService(Borg, dbus.service.Object):
window = self.terminator.get_windows()[0]
window.tab_new()
@dbus.service.method(BUS_NAME, in_signature='a{ss}')
def toggle_visibility_cmdline(self,options=dbus.Dictionary):
dbg('toggle_visibility_cmdline')
for window in self.terminator.get_windows():
window.on_hide_window()
@dbus.service.method(BUS_NAME, in_signature='a{ss}')
def unhide_cmdline(self,options=dbus.Dictionary):
dbg('unhide_cmdline')
@ -124,6 +130,12 @@ class DBusService(Borg, dbus.service.Object):
"""Create a new tab"""
return self.new_terminal(uuid, 'tab')
@dbus.service.method(BUS_NAME)
def reload_configuration(self):
"""Reload configuration for all terminals"""
self.terminator.config.base.reload()
self.terminator.reconfigure()
@dbus.service.method(BUS_NAME)
def bg_img_all (self,options=dbus.Dictionary()):
for terminal in self.terminator.terminals:
@ -343,6 +355,14 @@ def new_tab_cmdline(session, options):
"""Call the dbus method to open a new tab in the first window"""
session.new_tab_cmdline(options)
@with_proxy
def toggle_visibility_cmdline(session,options):
session.toggle_visibility_cmdline(options)
def reload_configuration(session):
"""Call the dbus method to reload configuration for all windows"""
session.reload_configuration()
@with_proxy
def unhide_cmdline(session,options):
session.unhide_cmdline(options)

View File

@ -61,7 +61,7 @@ class Notebook(Container, Gtk.Notebook):
#self.connect('page-reordered', self.on_page_reordered)
self.set_scrollable(self.config['scroll_tabbar'])
if self.config['tab_position'] == 'hidden' or self.config['hide_tabbar']:
if self.config['tab_position'] == 'hidden':
self.set_show_tabs(False)
else:
self.set_show_tabs(True)
@ -191,7 +191,7 @@ class Notebook(Container, Gtk.Notebook):
sibling.force_set_profile(None, widget.get_profile())
self.insert_page(container, None, page_num)
self.set_tab_detachable(container, True)
self.set_tab_detachable(container, self.config['detachable_tabs'])
self.child_set_property(container, 'tab-expand', True)
self.child_set_property(container, 'tab-fill', True)
self.set_tab_reorderable(container, True)
@ -239,7 +239,7 @@ class Notebook(Container, Gtk.Notebook):
def get_child_metadata(self, widget):
"""Fetch the relevant metadata for a widget which we'd need
to recreate it when it's readded"""
to recreate it when it's re-added"""
metadata = {}
metadata['tabnum'] = self.page_num(widget)
label = self.get_tab_label(widget)
@ -275,6 +275,7 @@ class Notebook(Container, Gtk.Notebook):
widget.force_set_profile(None, profile)
signals = {'close-term': self.wrapcloseterm,
'split-auto': self.split_auto,
'split-horiz': self.split_horiz,
'split-vert': self.split_vert,
'title-change': self.propagate_title_change,
@ -290,7 +291,9 @@ class Notebook(Container, Gtk.Notebook):
'ungroup-tab': top_window.ungroup_tab,
'move-tab': top_window.move_tab,
'tab-new': [top_window.tab_new, widget],
'navigate': top_window.navigate_terminal}
'navigate': top_window.navigate_terminal,
'zoom': top_window.zoom,
'maximise': [top_window.zoom, False]}
if maker.isinstance(widget, 'Terminal'):
for signal in signals:
@ -303,6 +306,8 @@ class Notebook(Container, Gtk.Notebook):
if metadata and 'tabnum' in metadata:
tabpos = metadata['tabnum']
elif self.config['new_tab_after_current_tab'] == True:
tabpos = self.get_current_page() + 1
else:
tabpos = -1
@ -317,7 +322,7 @@ class Notebook(Container, Gtk.Notebook):
dbg('inserting page at position: %s' % tabpos)
self.insert_page(widget, None, tabpos)
self.set_tab_detachable(widget, True)
self.set_tab_detachable(widget, self.config['detachable_tabs'])
if maker.isinstance(widget, 'Terminal'):
containers, objects = ([], [widget])
@ -338,6 +343,10 @@ class Notebook(Container, Gtk.Notebook):
self.set_current_page(tabpos)
self.show_all()
if maker.isinstance(term_widget, 'Terminal'):
#notify plugins of tab-change
dbg("emit tab-change for tabpos: %s " % tabpos)
term_widget.emit('tab-change', tabpos)
self.set_current_page(tabpos)
widget.grab_focus()
def wrapcloseterm(self, widget):

View File

@ -39,6 +39,9 @@ def parse_options():
parser = argparse.ArgumentParser()
parser.add_argument('-R', '--reload', action='store_true', dest='reload',
help=_('Reload terminator configuration'))
parser.add_argument('-v', '--version', action='store_true', dest='version',
help=_('Display program version'))
parser.add_argument('-m', '--maximise', action='store_true', dest='maximise',
@ -62,14 +65,16 @@ def parse_options():
else:
parser.add_argument('--command', dest='command',
help=_('Specify a command to execute inside the terminal'))
parser.add_argument('-e', '--execute2', dest='execute', action=ExecuteCallback,
parser.add_argument('-e', '--execute2', dest='execute',
nargs=argparse.REMAINDER, action=ExecuteCallback,
help=_('Use the rest of the command line as a command to '
'execute inside the terminal, and its arguments'))
parser.add_argument('-g', '--config', dest='config',
help=_('Specify a config file'))
parser.add_argument('-j', '--config-json', dest='configjson',
help=_('Specify a partial config json file'))
parser.add_argument('-x', '--execute', dest='execute', action=ExecuteCallback,
parser.add_argument('-x', '--execute', dest='execute',
nargs=argparse.REMAINDER, action=ExecuteCallback,
help=_('Use the rest of the command line as a command to execute '
'inside the terminal, and its arguments'))
parser.add_argument('--working-directory', metavar='DIR',
@ -94,6 +99,8 @@ icon for the window (by file or name)'))
help=_('Comma separated list of methods to limit debugging to'))
parser.add_argument('--new-tab', action='store_true', dest='new_tab',
help=_('If Terminator is already running, just open a new tab'))
parser.add_argument('--toggle-visibility', action='store_true', dest='toggle_visibility',
help=_('If Terminator is already running, toggle windows visibility'))
parser.add_argument('--unhide', action='store_true', dest='unhide',
help=_('If Terminator is already running, just unhide all hidden windows'))
parser.add_argument('--list-profiles', action='store_true', dest='list_profiles',

View File

@ -93,6 +93,7 @@ class Paned(Container):
if self.maker.isinstance(widget, 'Terminal'):
top_window = self.get_toplevel()
signals = {'close-term': self.wrapcloseterm,
'split-auto': self.split_auto,
'split-horiz': self.split_horiz,
'split-vert': self.split_vert,
'title-change': self.propagate_title_change,
@ -424,7 +425,7 @@ class Paned(Container):
"""We don't want focus, we want a Terminal to have it"""
self.get_child1().grab_focus()
def rotate_recursive(self, parent, w, h, clockwise):
def rotate_recursive(self, parent, w, h, clockwise, metadata=None):
"""
Recursively rotate "self" into a new paned that'll have "w" x "h" size. Attach it to "parent".
@ -458,7 +459,7 @@ class Paned(Container):
w2 = max(w - w1 - handle_size, 0)
container.set_pos(pos)
parent.add(container)
parent.add(container, metadata=metadata)
if maker.isinstance(children[0], 'Terminal'):
children[0].get_parent().remove(children[0])

View File

@ -69,12 +69,14 @@ class PluginRegistry(borg.Borg):
if not self.available_plugins:
self.available_plugins = {}
def load_plugins(self):
def load_plugins(self, force=False):
"""Load all plugins present in the plugins/ directory in our module"""
if self.done:
if self.done and (not force):
dbg('Already loaded')
return
dbg('loading plugins, force:(%s)' % force)
config = Config()
for plugindir in self.path:
@ -93,8 +95,8 @@ class PluginRegistry(borg.Borg):
try:
module = __import__(plugin[:-3], None, None, [''])
for item in getattr(module, 'AVAILABLE'):
func = getattr(module, item)
if item not in list(self.available_plugins.keys()):
func = getattr(module, item)
self.available_plugins[item] = func
if item not in config['enabled_plugins']:
@ -102,6 +104,14 @@ class PluginRegistry(borg.Borg):
continue
if item not in self.instances:
self.instances[item] = func()
elif force:
#instead of multiple copies of loaded
#plugin objects, unload where plugins
#can clean up and then re-init so there
#is one plugin object
self.instances[item].unload()
self.instances.pop(item, None)
self.instances[item] = func()
except Exception as ex:
err('PluginRegistry::load_plugins: Importing plugin %s \
failed: %s' % (plugin, ex))
@ -187,3 +197,138 @@ class MenuItem(Plugin):
def callback(self, menuitems, menu, terminal):
"""Callback to transform the enclosed URL"""
raise NotImplementedError
"""
-Basic plugin util for key-press handling, has all mapping to be used
in layout keybindings
Vishweshwar Saran Singh Deo vssdeo@gmail.com
"""
from gi.repository import Gtk, Gdk
from terminatorlib.keybindings import Keybindings, KeymapError
PLUGIN_UTIL_DESC = 0
PLUGIN_UTIL_ACT = 1
PLUGIN_UTIL_KEYS = 2
class KeyBindUtil:
keybindings = Keybindings()
map_key_to_act = {}
map_act_to_keys = {}
map_act_to_desc = {}
def __init__(self, config=None):
self.config = config
#Example
# bind
# first param is desc, second is action str
# self.keyb.bindkey([PluginUrlFindNext , PluginUrlActFindNext, "<Alt>j"])
#
# get action name
# act = self.keyb.keyaction(event)
# if act == "url_find_next":
#check map key_val_mask -> action
def _check_keybind_change(self, key):
act = key[PLUGIN_UTIL_ACT]
for key_val_mask in self.map_key_to_act:
old_act = self.map_key_to_act[key_val_mask]
if act == old_act:
return key_val_mask
return None
#check in config before binding
def bindkey_check_config(self, key):
if not self.config:
raise Warning("bindkey_check_config called without config init")
actstr = key[PLUGIN_UTIL_ACT]
kbsect = self.config.base.get_item('keybindings')
keystr = kbsect[actstr] if actstr in kbsect else ""
dbg("bindkey_check_config:action (%s) key str:(%s)" % (actstr, keystr))
if len(keystr):
key[PLUGIN_UTIL_KEYS] = keystr
dbg("found new Action->KeyVal in config: (%s, %s)"
% (actstr, keystr));
self.bindkey(key)
def bindkey(self, key):
(keyval, mask) = self.keybindings._parsebinding(key[PLUGIN_UTIL_KEYS])
keyval = Gdk.keyval_to_lower(keyval)
mask = Gdk.ModifierType(mask)
ret = (keyval, mask)
dbg("bindkey: (%s) (%s)" % (key[PLUGIN_UTIL_KEYS], str(ret)))
#remove if any old key_val_mask
old_key_val_mask = self._check_keybind_change(key)
if old_key_val_mask:
dbg("found old key binding, removing: (%s)" % str(old_key_val_mask))
del self.map_key_to_act[old_key_val_mask]
#map key-val-mask to action, used to ease key-press management
self.map_key_to_act[ret] = key[PLUGIN_UTIL_ACT]
#map action to key-combo-str, used in preferences->keybinding
self.map_act_to_keys[key[PLUGIN_UTIL_ACT]] = key[PLUGIN_UTIL_KEYS]
#map action to key-combo description, in used preferences->keybinding
self.map_act_to_desc[key[PLUGIN_UTIL_ACT]] = key[PLUGIN_UTIL_DESC]
def unbindkey(self, key):
# Suppose user changed the key-combo and its diff from
# what the plugin had set by default, we need to get
# current key-combo
act = key[PLUGIN_UTIL_ACT]
act_keys = self.map_act_to_keys[act]
(keyval, mask) = self.keybindings._parsebinding(act_keys)
keyval = Gdk.keyval_to_lower(keyval)
mask = Gdk.ModifierType(mask)
ret = (keyval, mask)
dbg("unbindkey: (%s) (%s)" % (key[PLUGIN_UTIL_KEYS], str(ret)))
# FIXME keys should always be there, can also use .pop(key, None)
# lets do it after testing
del self.map_key_to_act[ret]
del self.map_act_to_keys[key[PLUGIN_UTIL_ACT]]
del self.map_act_to_desc[key[PLUGIN_UTIL_ACT]]
def keyaction(self, event):
#FIXME MOD2 mask comes in the event, remove
event.state &= ~Gdk.ModifierType.MOD2_MASK
keyval = Gdk.keyval_to_lower(event.keyval)
ret = (keyval, event.state)
dbg("keyaction: (%s)" % str(ret))
return self.map_key_to_act.get(ret, None)
def get_act_to_keys(self, key):
return self.map_act_to_keys.get(key)
def get_all_act_to_keys(self):
return self.map_act_to_keys
def get_all_act_to_desc(self):
return self.map_act_to_desc
def get_act_to_desc(self, act):
return self.map_act_to_desc.get(act)
#get action to key binding from config
def get_act_to_keys_config(self, act):
if not self.config:
raise Warning("get_keyvalmask_for_act called without config init")
keybindings = self.config["keybindings"]
return keybindings.get(act)

View File

@ -0,0 +1,18 @@
from gi.repository import Gtk
import terminatorlib.plugin as plugin
AVAILABLE = ['InsertTermName']
class InsertTermName(plugin.MenuItem):
capabilities = ['terminal_menu']
config = None
def __init__(self):
plugin.MenuItem.__init__(self)
def callback(self, menuitems, menu, terminal):
item = Gtk.MenuItem.new_with_label('Insert terminal name')
item.connect('activate', lambda x: terminal.emit('insert-term-name'))
menuitems.append(item)

View File

@ -6,7 +6,7 @@ terminals """
import os
import sys
from gi.repository import Gtk
from gi.repository import Gtk,Vte
import terminatorlib.plugin as plugin
from terminatorlib.translation import _
@ -19,6 +19,7 @@ class Logger(plugin.MenuItem):
dialog_action = Gtk.FileChooserAction.SAVE
dialog_buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL,
_("_Save"), Gtk.ResponseType.OK)
vte_version = Vte.get_minor_version()
def __init__(self):
plugin.MenuItem.__init__(self)
@ -40,8 +41,11 @@ class Logger(plugin.MenuItem):
def write_content(self, terminal, row_start, col_start, row_end, col_end):
""" Final function to write a file """
content = terminal.get_text_range(row_start, col_start, row_end, col_end,
if self.vte_version < 72:
content = terminal.get_text_range(row_start, col_start, row_end, col_end,
lambda *a: True)
else:
content = terminal.get_text_range_format(Vte.Format.TEXT,row_start, col_start, row_end, col_end)
content = content[0]
fd = self.loggers[terminal]["fd"]
# Don't write the last char which is always '\n'
@ -101,7 +105,7 @@ class Logger(plugin.MenuItem):
last_saved_row = self.loggers[vte_terminal]["row"]
(col, row) = vte_terminal.get_cursor_position()
if last_saved_col != col or last_saved_row != row:
# Save unwritten bufer to the file
# Save unwritten buffer to the file
self.write_content(vte_terminal, last_saved_row, last_saved_col, row, col)
fd = self.loggers[vte_terminal]["fd"]
fd.close()

View File

@ -0,0 +1,204 @@
"""
- With min changes to main code base, implementing mouse free url handling.
- Using shortcuts to browse URL, next / previous, clear search. Selected URL
is copied to clipboard.
- Vishweshwar Saran Singh Deo vssdeo@gmail.com
"""
import gi
gi.require_version('Vte', '2.91') # vte-0.38 (gnome-3.14)
from gi.repository import Vte
from terminatorlib.terminator import Terminator
from terminatorlib.config import Config
import terminatorlib.plugin as plugin
from terminatorlib.plugin import KeyBindUtil
from terminatorlib.util import get_config_dir, err, dbg, gerr
from terminatorlib import regex
import re
AVAILABLE = ['MouseFreeURLHandler']
PluginUrlActFindNext = "plugin_url_find_next"
PluginUrlActFindPrev = "plugin_url_find_prev"
PluginUrlActEsc = "plugin_url_esc"
PluginUrlActLaunch = "plugin_url_launch"
PluginUrlFindNext = "Plugin Url Find Next"
PluginUrlFindPrev = "Plugin Url Find Prev"
PluginUrlEsc = "Plugin Url Esc"
PluginUrlLaunch = "Plugin Url Launch"
class MouseFreeURLHandler(plugin.Plugin):
capabilities = ['MouseFreeHandler']
handler_name = 'MouseFreeHandler'
nameopen = None
namecopy = None
match = None
flag_http_on = False
config = Config()
keyb = KeyBindUtil(config)
matches = []
matches_ptr = -1
#basic pattern
searchtext = "https?\:\/\/[^\s]+[\/\w]"
def __init__(self):
self.connect_signals()
self.keyb.bindkey_check_config(
[PluginUrlFindNext , PluginUrlActFindNext, "<Alt>j"])
self.keyb.bindkey_check_config(
[PluginUrlFindPrev , PluginUrlActFindPrev, "<Alt>k"])
self.keyb.bindkey_check_config(
[PluginUrlEsc , PluginUrlActEsc, "Escape"])
self.keyb.bindkey_check_config(
[PluginUrlLaunch, PluginUrlActLaunch, "<Alt>Return"])
def connect_signals(self):
#this is not giving list off all connected terminals in window
dbg("direct terminals: %s" % Terminator().terminals)
#get list of all terminals indirectly
terms = Terminator().terminals[0]
dbg("in-direct get terminals: %s" % terms.terminator.terminals)
for term in terms.terminator.terminals:
dbg("signal connect term:%s" % term)
term.connect('tab-change', self.on_focus_in)
self.windows = Terminator().get_windows()
for window in self.windows:
window.connect('key-press-event', self.on_keypress)
def unload(self):
dbg("unloading")
#disconnect all signals and events
terms = Terminator().terminals[0]
for term in terms.terminator.terminals:
try:
term.disconnect_by_func(self.on_focus_in)
except:
dbg("no connected signals")
for window in self.windows:
try:
window.disconnect_by_func(self.on_keypress)
except:
dbg("no connected signals")
self.keyb.unbindkey(
[PluginUrlFindNext , PluginUrlActFindNext, "<Alt>j"])
self.keyb.unbindkey(
[PluginUrlFindPrev , PluginUrlActFindPrev, "<Alt>k"])
self.keyb.unbindkey(
[PluginUrlEsc , PluginUrlActEsc, "Escape"])
self.keyb.unbindkey(
[PluginUrlLaunch, PluginUrlActLaunch, "<Alt>Return"])
def extract(self):
#can we do extract more efficiently
col, row = self.vte.get_cursor_position()
(txt, attr) = self.vte.get_text_range(0,0,row, col)
self.matches = re.findall(self.searchtext, txt)
self.matches_ptr = len(self.matches)-1
def get_term(self):
return Terminator().last_focused_term
def get_selected_url(self):
if len(self.matches):
dbg("found selected URL (%s %s %s)" %
(self.matches_ptr, self.matches[self.matches_ptr], self))
return self.matches[self.matches_ptr]
dbg("selected URL (%s %s)" % (self.matches_ptr, "not found"))
return None
def on_focus_in(self, widget, event):
dbg("focus-in clear url search buffer: %s" % self)
self.clear_search()
def on_keypress(self, widget, event):
act = self.keyb.keyaction(event)
dbg("keyaction: (%s) (%s)" % (str(act), event.keyval))
if act == PluginUrlActFindNext:
if not self.flag_http_on:
dbg("search URL on")
self.search()
self.extract()
#so when we start search last item be selected
self.vte.search_find_previous()
self.get_selected_url() # dbg url print
self.vte.copy_clipboard()
return True
else:
self.vte.search_find_next()
if (self.matches_ptr < len(self.matches)-1):
self.matches_ptr += 1
else:
self.matches_ptr = 0
self.vte.copy_clipboard()
self.get_selected_url() # dbg url print
return True
if act == PluginUrlActFindPrev:
if not self.flag_http_on:
self.search()
self.extract()
self.vte.search_find_previous()
self.get_selected_url() # dbg url print
self.vte.copy_clipboard()
return True
self.vte.search_find_previous()
if self.matches_ptr > 0:
self.matches_ptr -= 1
elif len(self.matches):
self.matches_ptr = len(self.matches)-1
self.vte.copy_clipboard()
self.get_selected_url() # dbg url print
return True
if act == PluginUrlActEsc:
self.clear_search()
if act == PluginUrlActLaunch:
url = self.get_selected_url()
if url:
self.get_term().open_url(url, prepare=False)
def clear_search(self):
self.matches = []
self.flag_http_on = False
self.matches_ptr = -1
if self.get_term():
self.vte = self.get_term().get_vte()
self.vte.search_set_regex(None, 0)
dbg("search URL off")
def search(self):
dbg("searching text")
self.flag_http_on = True
self.vte = self.get_term().get_vte()
self.vte.search_set_wrap_around(True)
regex_flags_pcre2 = (regex.FLAGS_PCRE2 | regex.PCRE2_CASELESS)
searchre = Vte.Regex.new_for_search(self.searchtext,
len(self.searchtext), regex_flags_pcre2)
self.vte.search_set_regex(searchre, 0)

View File

@ -16,7 +16,7 @@ from terminatorlib.util import get_config_dir, err, dbg, gerr
AVAILABLE = ['RunCmdOnMatchMenu']
# For example, open scripts names outputed by python in Vim at the given line number:
# For example, open scripts names outputted by python in Vim at the given line number:
# match = r'\B(/\S+?\.py)\S{2}\sline\s(\d+)' # Python's log file matching
# cmd = "gvim --servername IDE --remote +{1} {0}"
@ -61,7 +61,7 @@ class RunCmdOnMatch(plugin.URLHandler):
try:
runcmd = self.__class__.cmd.format(*groups)
except Exception as e:
err("Exception occured while formating the command: {} {}".format(type(e).__name__, e))
err("Exception occurred while formatting the command: {} {}".format(type(e).__name__, e))
dbg("run: {cmd}".format(cmd=runcmd))
subprocess.run(runcmd.split())
@ -170,7 +170,7 @@ class RunCmdOnMatchMenu(plugin.MenuItem):
rcom_name = "_RunCmdOnMatch_{}".format(key) # key is just the index
# Make a handler class.
RCOM = MetaRCOM(rcom_name, handler["regexp"], handler["command"])
# Instanciate the class.
# Instantiate the class.
setattr(me, rcom_name, RCOM)
if rcom_name not in AVAILABLE:

View File

@ -0,0 +1,69 @@
import os
import sys
# Fix imports when testing this file directly
if __name__ == '__main__':
sys.path.append( os.path.join(os.path.dirname(__file__), "../.."))
from terminatorlib.config import Config
import terminatorlib.plugin as plugin
from terminatorlib.util import get_config_dir, err, dbg, gerr
from terminatorlib.terminator import Terminator
from terminatorlib import util
# AVAILABLE must contain a list of all the classes that you want exposed
AVAILABLE = ['SaveLastSessionLayout']
class SaveLastSessionLayout(plugin.Plugin):
capabilities = ['session']
config = None
conf_file = os.path.join(get_config_dir(),"save_last_session_cwd")
conf_sessions = []
emit_close_count = 0
def __init__(self):
dbg("SaveLastSessionLayout Init")
self.connect_signals()
#not used, but capability can be used to load automatically
def load_session_layout(self, debugtab=False, widget=None, cwd=None, metadata=None, profile=None):
dbg("SaveLastSessionLayout load layout")
terminator = Terminator()
util.spawn_new_terminator(terminator.origcwd, ['-u', '-l', 'SaveLastSessionLayout'])
def save_session_layout(self, debugtab=False, widget=None, cwd=None, metadata=None, profile=None):
config = Config()
terminator = Terminator()
current_layout = terminator.describe_layout(save_cwd = True)
dbg("SaveLastSessionLayout: save layout(%s)" % current_layout)
res = config.replace_layout("SaveLastSessionLayout", current_layout)
if (not res):
r = config.add_layout("SaveLastSessionLayout", current_layout)
config.save()
return True
def connect_signals(self):
dbg("SaveLastSessionLayout connect_signals")
n = 0
for term in Terminator().terminals:
dbg("SaveLastSessionLayout connect_signals to term num:(%d)" % n)
n = n + 1
# event close-term works, and does not require an additional
# event but has a race condition when
# there is only one terminal we are unable to get the
# describe_layout section
#term.connect('close-term', self.close, None)
term.connect('pre-close-term', self.close, None)
#Can connect signal from terminal
#term.connect('load-layout', self.load_session_layout, None)
def close(self, term, event, arg1 = None):
if (self.emit_close_count == 0):
self.emit_close_count = self.emit_close_count + 1
self.save_session_layout("", "")

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkListStore" id="BackspaceKeyListStore">
@ -154,6 +154,60 @@
</row>
</data>
</object>
<object class="GtkListStore" id="ImageAlignHorizListStore">
<columns>
<!-- column-name Alignment -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Left</col>
</row>
<row>
<col id="0" translatable="yes">Center</col>
</row>
<row>
<col id="0" translatable="yes">Right</col>
</row>
</data>
</object>
<object class="GtkListStore" id="ImageAlignVertListStore">
<columns>
<!-- column-name Alignment -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Top</col>
</row>
<row>
<col id="0" translatable="yes">Middle</col>
</row>
<row>
<col id="0" translatable="yes">Bottom</col>
</row>
</data>
</object>
<object class="GtkListStore" id="ImageDrawingModeListStore">
<columns>
<!-- column-name DrawingMode -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Stretch and Fill</col>
</row>
<row>
<col id="0" translatable="yes">Scale and Fit</col>
</row>
<row>
<col id="0" translatable="yes">Scale and Crop</col>
</row>
<row>
<col id="0" translatable="yes">Tiling</col>
</row>
</data>
</object>
<object class="GtkListStore" id="KeybindingsListStore">
<columns>
<!-- column-name Name -->
@ -299,9 +353,9 @@
</data>
</object>
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">1</property>
<property name="lower">-1</property>
<property name="upper">20</property>
<property name="value">1</property>
<property name="value">-1</property>
<property name="step-increment">1</property>
<property name="page-increment">2</property>
</object>
@ -340,6 +394,11 @@
<property name="step-increment">0.10</property>
<property name="page-increment">0.20</property>
</object>
<object class="GtkAdjustment" id="adjustment8">
<property name="upper">1</property>
<property name="step-increment">0.10</property>
<property name="page-increment">0.20</property>
</object>
<object class="GtkAdjustment" id="adjustment_cellheight">
<property name="lower">1</property>
<property name="upper">2</property>
@ -413,7 +472,7 @@
<property name="spacing">36</property>
<property name="homogeneous">True</property>
<child>
<!-- n-columns=2 n-rows=7 -->
<!-- n-columns=2 n-rows=8 -->
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -553,6 +612,23 @@
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="detachable_tabs">
<property name="label" translatable="yes">Detach tab into new window on drag (Require restart)</property>
<property name="use-action-appearance">False</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="xalign">0.5</property>
<property name="draw-indicator">True</property>
<signal name="toggled" handler="on_detachable_tabs_toggled" swapped="no"/>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">7</property>
<property name="width">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
@ -887,7 +963,7 @@
<property name="spacing">36</property>
<property name="homogeneous">True</property>
<child>
<!-- n-columns=3 n-rows=6 -->
<!-- n-columns=3 n-rows=7 -->
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -906,7 +982,7 @@
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
<property name="top-attach">4</property>
<property name="width">3</property>
</packing>
</child>
@ -960,7 +1036,7 @@
<property name="can-focus">True</property>
<property name="halign">baseline</property>
<property name="hexpand">True</property>
<property name="adjustment">adjustment7</property>
<property name="adjustment">adjustment8</property>
<property name="round-digits">2</property>
<property name="digits">2</property>
<property name="draw-value">False</property>
@ -1006,7 +1082,7 @@
</child>
<child>
<object class="GtkCheckButton" id="extrastylingcheck">
<property name="label" translatable="yes">Extra Styling (Theme dependant)</property>
<property name="label" translatable="yes">Extra Styling (Theme dependent)</property>
<property name="use-action-appearance">False</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
@ -1030,7 +1106,7 @@
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">5</property>
<property name="top-attach">6</property>
</packing>
</child>
<child>
@ -1046,7 +1122,7 @@
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">5</property>
<property name="top-attach">6</property>
</packing>
</child>
<child>
@ -1064,7 +1140,7 @@
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">5</property>
<property name="top-attach">6</property>
</packing>
</child>
<child>
@ -1081,7 +1157,7 @@
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">4</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
@ -1097,7 +1173,7 @@
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">4</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
@ -1109,7 +1185,52 @@
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">4</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label35">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unfocused terminal background color:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="inactive_bg_color_offset_value_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">100%</property>
<property name="justify">right</property>
<property name="width-chars">5</property>
<property name="max-width-chars">5</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkScale" id="inactive_bg_color_offset">
<property name="width-request">100</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">True</property>
<property name="adjustment">adjustment7</property>
<property name="round-digits">2</property>
<property name="digits">2</property>
<property name="draw-value">False</property>
<property name="value-pos">bottom</property>
<signal name="value-changed" handler="on_inactive_bg_color_offset_value_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
</object>
@ -1124,7 +1245,7 @@
<object class="GtkGrid" id="grid4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="row-spacing">6</property>
<property name="row-spacing">8</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkLabel" id="label11">
@ -1209,6 +1330,23 @@
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="new_tab_after_current_checkbutton">
<property name="label" translatable="yes">New tab after current tab</property>
<property name="use-action-appearance">False</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="xalign">0</property>
<property name="draw-indicator">True</property>
<signal name="toggled" handler="on_new_tab_after_current_checkbutton_toggled" swapped="no"/>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">4</property>
<property name="width">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
@ -2660,41 +2798,208 @@
</packing>
</child>
<child>
<object class="GtkBox">
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="left-padding">12</property>
<child>
<object class="GtkLabel">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Background Image File:</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Image File:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFileChooserButton" id="background_image_file">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="title" translatable="yes">Choose file</property>
<signal name="file-set" handler="on_background_image_file_set" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkAccelLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Drawing mode:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="background_image_mode_combobox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="model">ImageDrawingModeListStore</property>
<property name="active">0</property>
<signal name="changed" handler="on_background_image_mode_changed" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">12</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Horizontal alignment:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="background_image_align_horiz_combobox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="model">ImageAlignHorizListStore</property>
<property name="active">1</property>
<signal name="changed" handler="on_background_image_align_horiz_changed" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Vertical alignment:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="background_image_align_vert_combobox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="model">ImageAlignVertListStore</property>
<property name="active">1</property>
<signal name="changed" handler="on_background_image_align_vert_changed" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFileChooserButton" id="background_image_file">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="title" translatable="yes">Choose file</property>
<signal name="file-set" handler="on_background_image_file_set" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="position">3</property>
</packing>
</child>
<child>
@ -2783,7 +3088,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="position">6</property>
</packing>
</child>
</object>
@ -3720,63 +4025,85 @@
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="vadjustment">adjustment4</property>
<property name="hscrollbar-policy">never</property>
<property name="shadow-type">in</property>
<object class="GtkVBox" id="vbox124">
<property name="can-focus">False</property>
<child>
<object class="GtkTreeView" id="keybindingtreeview">
<object class="GtkEntry" id="keybindingsearchentry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="has-focus">True</property>
<property name="model">KeybindingsListStore</property>
<property name="headers-clickable">False</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection4"/>
</child>
<property name="placeholder-text">filter keybindings</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="vadjustment">adjustment4</property>
<property name="hscrollbar-policy">never</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<property name="title" translatable="yes">Name</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext10"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
<object class="GtkTreeView" id="keybindingtreeview">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="has-focus">True</property>
<property name="model">KeybindingsListStore</property>
<property name="headers-clickable">False</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection4"/>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="title" translatable="yes">Action</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext11"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
<property name="title" translatable="yes">Keybinding</property>
<child>
<object class="GtkCellRendererAccel" id="cellrendereraccel1">
<property name="editable">True</property>
<property name="accel-mode">other</property>
<signal name="accel-cleared" handler="on_cellrenderer_accel_cleared" object="KeybindingsListStore" swapped="yes"/>
<signal name="accel-edited" handler="on_cellrenderer_accel_edited" object="KeybindingsListStore" swapped="yes"/>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<property name="title" translatable="yes">Name</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext10"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="title" translatable="yes">Action</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext11"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
<property name="title" translatable="yes">Keybinding</property>
<child>
<object class="GtkCellRendererAccel" id="cellrendereraccel1">
<property name="editable">True</property>
<property name="accel-mode">other</property>
<signal name="accel-cleared" handler="on_cellrenderer_accel_cleared" object="KeybindingsListStore" swapped="yes"/>
<signal name="accel-edited" handler="on_cellrenderer_accel_edited" object="KeybindingsListStore" swapped="yes"/>
</object>
<attributes>
<attribute name="accel-key">2</attribute>
<attribute name="accel-mods">3</attribute>
</attributes>
</child>
</object>
<attributes>
<attribute name="accel-key">2</attribute>
<attribute name="accel-mods">3</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
@ -3955,7 +4282,7 @@
<object class="GtkLabel" id="about_version_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Version: 2.1.1</property>
<property name="label" translatable="yes">Version: 2.1.3</property>
</object>
<packing>
<property name="expand">False</property>

View File

@ -18,6 +18,8 @@ from .terminator import Terminator
from .plugin import PluginRegistry
from .version import APP_NAME
from .plugin import KeyBindUtil
def get_color_string(widcol):
return('#%02x%02x%02x' % (widcol.red>>8, widcol.green>>8, widcol.blue>>8))
@ -118,6 +120,7 @@ class PrefsEditor:
'go_right' : _('Focus the terminal right'),
'rotate_cw' : _('Rotate terminals clockwise'),
'rotate_ccw' : _('Rotate terminals counter-clockwise'),
'split_auto' : _('Split automatically'),
'split_horiz' : _('Split horizontally'),
'split_vert' : _('Split vertically'),
'close_term' : _('Close terminal'),
@ -173,18 +176,19 @@ class PrefsEditor:
'broadcast_group' : _('Broadcast key presses to group'),
'broadcast_all' : _('Broadcast key events to all'),
'insert_number' : _('Insert terminal number'),
'insert_padded' : _('Insert padded terminal number'),
'insert_padded' : _('Insert zero padded terminal number'),
'edit_window_title': _('Edit window title'),
'edit_terminal_title': _('Edit terminal title'),
'edit_tab_title' : _('Edit tab title'),
'layout_launcher' : _('Open layout launcher window'),
'next_profile' : _('Switch to next profile'),
'previous_profile' : _('Switch to previous profile'),
'preferences' : _('Open the Preferences window'),
'preferences' : _('Open the Preferences window'),
'preferences_keybindings' : _('Open the Preferences-Keybindings window'),
'help' : _('Open the manual')
}
def __init__ (self, term):
def __init__ (self, term, cur_page=0):
self.config = config.Config()
self.config.base.reload()
self.term = term
@ -227,6 +231,10 @@ class PrefsEditor:
err('Unable to set values: %s' % e)
self.config.uninhibit_save()
guiget = self.builder.get_object
nb = guiget('notebook1')
nb.set_current_page(cur_page)
def on_closebutton_clicked(self, _button):
"""Close the window"""
terminator = Terminator()
@ -331,6 +339,9 @@ class PrefsEditor:
# DBus Server
widget = guiget('dbuscheck')
widget.set_active(self.config['dbus'])
# Detachable tabs
widget = guiget('detachable_tabs')
widget.set_active(self.config['detachable_tabs'])
#Hide from taskbar
widget = guiget('hidefromtaskbcheck')
widget.set_active(self.config['hide_from_taskbar'])
@ -347,7 +358,11 @@ class PrefsEditor:
# title bar at bottom
widget = guiget('title_at_bottom_checkbutton')
widget.set_active(self.config['title_at_bottom'])
# new tab after current tab
widget = guiget('new_tab_after_current_checkbutton')
widget.set_active(self.config['new_tab_after_current_tab'])
#Always split with profile
widget = guiget('always_split_with_profile')
widget.set_active(self.config['always_split_with_profile'])
@ -415,10 +430,59 @@ class PrefsEditor:
selection.connect('changed', self.on_layout_item_selection_changed)
## Keybindings tab
widget = guiget('keybindingtreeview')
widget = guiget('keybindingtreeview')
kbsearch = guiget('keybindingsearchentry')
self.keybind_filter_str = ""
#lets hide whatever we can in nested scope
def filter_visible(model, treeiter, data):
act = model[treeiter][0]
keys = data[act] if act in data else ""
desc = model[treeiter][1]
kval = model[treeiter][2]
mask = model[treeiter][3]
#so user can search for disabled keys also
if not (len(keys) and kval and mask):
act = "Disabled"
self.keybind_filter_str = self.keybind_filter_str.lower()
searchtxt = (act + " " + keys + " " + desc).lower()
pos = searchtxt.find(self.keybind_filter_str)
if (pos >= 0):
dbg("filter find:%s in search text: %s" %
(self.keybind_filter_str, searchtxt))
return True
return False
def on_search(widget, text):
MAX_SEARCH_LEN = 10
self.keybind_filter_str = widget.get_text()
ln = len(self.keybind_filter_str)
#its a small list & we are eager for quick search, but limit
if (ln >=2 and ln < MAX_SEARCH_LEN):
dbg("filter search str: %s" % self.keybind_filter_str)
self.treemodelfilter.refilter()
def on_search_refilter(widget):
dbg("refilter")
self.treemodelfilter.refilter()
kbsearch.connect('key-press-event', on_search)
kbsearch.connect('backspace', on_search_refilter)
liststore = widget.get_model()
liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
keybindings = self.config['keybindings']
keybindutil = KeyBindUtil()
plugin_keyb_act = keybindutil.get_all_act_to_keys()
plugin_keyb_desc = keybindutil.get_all_act_to_desc()
#merge give preference to main bindings over plugin
keybindings = {**plugin_keyb_act, **keybindings}
self.keybindingnames = {**plugin_keyb_desc, **self.keybindingnames}
#dbg("appended actions %s names %s" % (keybindings, self.keybindingnames))
for keybinding in keybindings:
keyval = 0
mask = 0
@ -431,6 +495,10 @@ class PrefsEditor:
liststore.append([keybinding, self.keybindingnames[keybinding],
keyval, mask])
self.treemodelfilter = liststore.filter_new()
self.treemodelfilter.set_visible_func(filter_visible, keybindings)
widget.set_model(self.treemodelfilter)
## Plugins tab
# Populate the plugin list
widget = guiget('pluginlist')
@ -624,6 +692,10 @@ class PrefsEditor:
widget.set_value(float(self.config['inactive_color_offset']))
widget = guiget('inactive_color_offset_value_label')
widget.set_text('%d%%' % (int(float(self.config['inactive_color_offset'])*100)))
widget = guiget('inactive_bg_color_offset')
widget.set_value(float(self.config['inactive_bg_color_offset']))
widget = guiget('inactive_bg_color_offset_value_label')
widget.set_text('%d%%' % (int(float(self.config['inactive_bg_color_offset'])*100)))
# Open links with a single click (instead of a Ctrl-left click)
widget = guiget('link_single_click')
widget.set_active(self.config['link_single_click'])
@ -644,11 +716,42 @@ class PrefsEditor:
elif self.config['background_type'] == 'image':
guiget('image_radiobutton').set_active(True)
self.update_background_tab()
# Background image
widget = guiget('background_image_file')
widget.set_filename(self.config['background_image'])
widget = guiget('background_image_mode_combobox')
if self.config['background_image_mode'] == 'scale_and_fit':
widget.set_active(1)
elif self.config['background_image_mode'] == 'scale_and_crop':
widget.set_active(2)
elif self.config['background_image_mode'] == 'tiling':
widget.set_active(3)
else:
# default to stretch_and_fill
widget.set_active(0)
widget = guiget('background_image_align_horiz_combobox')
if self.config['background_image_align_horiz'] == 'center':
widget.set_active(1)
elif self.config['background_image_align_horiz'] == 'right':
widget.set_active(2)
else:
# default to left
widget.set_active(0)
widget = guiget('background_image_align_vert_combobox')
if self.config['background_image_align_vert'] == 'middle':
widget.set_active(1)
elif self.config['background_image_align_vert'] == 'bottom':
widget.set_active(2)
else:
# default to top
widget.set_active(0)
# Background shading
widget = guiget('background_darkness_scale')
widget.set_value(float(self.config['background_darkness']))
widget = guiget('background_image_file')
widget.set_filename(self.config['background_image'])
## Scrolling tab
# Scrollbar position
@ -666,7 +769,7 @@ class PrefsEditor:
# Scrollback infinite
widget = guiget('scrollback_infinite')
widget.set_active(self.config['scrollback_infinite'])
# Scroll on outut
# Scroll on output
widget = guiget('scroll_on_output_checkbutton')
widget.set_active(self.config['scroll_on_output'])
# Scroll on keystroke
@ -751,6 +854,10 @@ class PrefsEditor:
self.config['dbus'] = widget.get_active()
self.config.save()
def on_detachable_tabs_toggled(self, widget):
self.config['detachable_tabs'] = widget.get_active()
self.config.save()
def on_disable_mousewheel_zoom_toggled(self, widget):
"""Ctrl+mousewheel zoom setting changed"""
self.config['disable_mousewheel_zoom'] = widget.get_active()
@ -796,6 +903,11 @@ class PrefsEditor:
self.config['title_at_bottom'] = widget.get_active()
self.config.save()
def on_new_tab_after_current_checkbutton_toggled(self, widget):
"""New tab after current tab """
self.config['new_tab_after_current_tab'] = widget.get_active()
self.config.save()
def on_always_split_with_profile_toggled(self, widget):
"""Always split with profile setting changed"""
self.config['always_split_with_profile'] = widget.get_active()
@ -873,11 +985,6 @@ class PrefsEditor:
self.config['login_shell'] = widget.get_active()
self.config.save()
def on_scroll_background_checkbutton_toggled(self, widget):
"""Scroll background setting changed"""
self.config['scroll_background'] = widget.get_active()
self.config.save()
def on_scroll_on_keystroke_checkbutton_toggled(self, widget):
"""Scroll on keystrong setting changed"""
self.config['scroll_on_keystroke'] = widget.get_active()
@ -949,6 +1056,41 @@ class PrefsEditor:
self.config['background_image'] = widget.get_filename()
self.config.save()
def on_background_image_mode_changed(self, widget):
selected = widget.get_active()
if selected == 1:
value = 'scale_and_fit'
elif selected == 2:
value = 'scale_and_crop'
elif selected == 3:
value = 'tiling'
else:
value = 'stretch_and_fill'
self.config['background_image_mode'] = value
self.config.save()
def on_background_image_align_horiz_changed(self, widget):
selected = widget.get_active()
if selected == 1:
value = 'center'
elif selected == 2:
value = 'right'
else:
value = 'left'
self.config['background_image_align_horiz'] = value
self.config.save()
def on_background_image_align_vert_changed(self, widget):
selected = widget.get_active()
if selected == 1:
value = 'middle'
elif selected == 2:
value = 'bottom'
else:
value = 'top'
self.config['background_image_align_vert'] = value
self.config.save()
def on_darken_background_scale_value_changed(self, widget):
"""Background darkness setting changed"""
value = widget.get_value() # This one is rounded according to the UI.
@ -966,10 +1108,6 @@ class PrefsEditor:
if self.palettevalues[key] == active:
value = key
sensitive = value == 'custom'
for palette_id in range(0, NUM_PALETTE_COLORS):
self.get_palette_widget(palette_id).set_sensitive(sensitive)
if value in self.palettes:
palette = self.palettes[value]
palettebits = palette.split(':')
@ -1223,7 +1361,7 @@ class PrefsEditor:
self.config.save()
def on_title_transmit_bg_color_color_set(self, widget):
"""Title transmit backgruond colour changed"""
"""Title transmit background colour changed"""
self.config['title_transmit_bg_color'] = color2hex(widget)
self.config.save()
@ -1248,14 +1386,23 @@ class PrefsEditor:
label_widget = guiget('inactive_color_offset_value_label')
label_widget.set_text('%d%%' % (int(value * 100)))
def on_inactive_bg_color_offset_value_changed(self, widget):
"""Inactive background color offset setting changed"""
value = widget.get_value() # This one is rounded according to the UI.
if value > 1.0:
value = 1.0
self.config['inactive_bg_color_offset'] = value
self.config.save()
guiget = self.builder.get_object
label_widget = guiget('inactive_bg_color_offset_value_label')
label_widget.set_text('%d%%' % (int(value * 100)))
def on_handlesize_value_changed(self, widget):
"""Handle size changed"""
value = widget.get_value() # This one is rounded according to the UI.
value = int(value) # Cast to int.
if value > 20:
value = 20
if value < 1:
value = 1
self.config['handle_size'] = value
self.config.save()
guiget = self.builder.get_object
@ -1557,10 +1704,12 @@ class PrefsEditor:
self.config['background_type'] = backtype
self.config.save()
if backtype == 'image':
guiget('background_image_file').set_sensitive(True)
else:
guiget('background_image_file').set_sensitive(False)
# toggle sensitivity of widgets related to background image
for element in ('background_image_file',
'background_image_align_horiz_combobox',
'background_image_align_vert_combobox',
'background_image_mode_combobox'):
guiget(element).set_sensitive(backtype == 'image')
if backtype in ('transparent', 'image'):
guiget('darken_background_scale').set_sensitive(True)
@ -1697,12 +1846,8 @@ class PrefsEditor:
fore = guiget('foreground_colorbutton')
back = guiget('background_colorbutton')
if value == 'custom':
fore.set_sensitive(True)
back.set_sensitive(True)
else:
fore.set_sensitive(False)
back.set_sensitive(False)
fore.set_sensitive(True)
back.set_sensitive(True)
forecol = None
backcol = None
@ -1738,6 +1883,11 @@ class PrefsEditor:
self.config.save()
def on_cellrenderer_accel_edited(self, liststore, path, key, mods, _code):
inpath = path #save for debugging
trpath = Gtk.TreePath.new_from_string(inpath)
path = str(self.treemodelfilter.convert_path_to_child_path(trpath))
dbg("convert path with filter from: %s to: %s" %
(inpath, path))
"""Handle an edited keybinding"""
# Ignore `Gdk.KEY_Tab` so that `Shift+Tab` is displayed as `Shift+Tab`
# in `Preferences>Keybindings` and NOT `Left Tab` (see `Gdk.KEY_ISO_Left_Tab`).
@ -1761,8 +1911,14 @@ class PrefsEditor:
current_binding = liststore.get_value(liststore.get_iter(path), 0)
parsed_accel = Gtk.accelerator_parse(accel)
keybindutil = KeyBindUtil()
keybindings = self.config["keybindings"]
#merge give preference to main bindings over plugin
plugin_keyb_act = keybindutil.get_all_act_to_keys()
keybindings = {**plugin_keyb_act, **keybindings}
duplicate_bindings = []
for conf_binding, conf_accel in self.config["keybindings"].items():
for conf_binding, conf_accel in keybindings.items():
if conf_accel is None:
continue
@ -1805,9 +1961,25 @@ class PrefsEditor:
binding = liststore.get_value(liststore.get_iter(path), 0)
accel = Gtk.accelerator_name(key, mods)
self.config['keybindings'][binding] = accel
plugin_keyb_desc = keybindutil.get_act_to_desc(binding)
if plugin_keyb_desc:
dbg("modifying plugin binding: %s, %s, %s" %
(plugin_keyb_desc, binding, accel))
keybindutil.bindkey([plugin_keyb_desc, binding, accel])
else:
dbg("skipping: %s" % binding)
pass
self.config.save()
def on_cellrenderer_accel_cleared(self, liststore, path):
inpath = path #save for debugging
trpath = Gtk.TreePath.new_from_string(inpath)
path = str(self.treemodelfilter.convert_path_to_child_path(trpath))
dbg("convert path with filter from: %s to: %s" %
(inpath, path))
"""Handle the clearing of a keybinding accelerator"""
celliter = liststore.get_iter_from_string(path)
liststore.set(celliter, 2, 0, 3, 0)

View File

@ -148,7 +148,7 @@ class Searchbar(Gtk.HBox):
self.config.base.set_item('case_sensitive', toggled_state)
self.config.save()
self.do_search(self.entry) # Start a new search everytime the check box is toggled.
self.do_search(self.entry) # Start a new search every time the check box is toggled.
def get_vte(self):
"""Find our parent widget"""

View File

@ -36,15 +36,19 @@ class Terminal(Gtk.VBox):
"""Class implementing the VTE widget and its wrappings"""
__gsignals__ = {
'pre-close-term': (GObject.SignalFlags.RUN_LAST, None, ()),
'close-term': (GObject.SignalFlags.RUN_LAST, None, ()),
'title-change': (GObject.SignalFlags.RUN_LAST, None,
(GObject.TYPE_STRING,)),
'insert-term-name': (GObject.SignalFlags.RUN_LAST, None, ()),
'enumerate': (GObject.SignalFlags.RUN_LAST, None,
(GObject.TYPE_INT,)),
'group-tab': (GObject.SignalFlags.RUN_LAST, None, ()),
'group-tab-toggle': (GObject.SignalFlags.RUN_LAST, None, ()),
'ungroup-tab': (GObject.SignalFlags.RUN_LAST, None, ()),
'ungroup-all': (GObject.SignalFlags.RUN_LAST, None, ()),
'split-auto': (GObject.SignalFlags.RUN_LAST, None,
(GObject.TYPE_STRING,)),
'split-horiz': (GObject.SignalFlags.RUN_LAST, None,
(GObject.TYPE_STRING,)),
'split-vert': (GObject.SignalFlags.RUN_LAST, None,
@ -108,6 +112,7 @@ class Terminal(Gtk.VBox):
fgcolor_active = None
fgcolor_inactive = None
bgcolor = None
bgcolor_inactive = None
palette_active = None
palette_inactive = None
@ -125,6 +130,7 @@ class Terminal(Gtk.VBox):
# FIXME: Surely these should happen in Terminator::register_terminal()?
self.connect('enumerate', self.terminator.do_enumerate)
self.connect('insert-term-name', self.terminator.do_insert_term_name)
self.connect('focus-in', self.terminator.focus_changed)
self.connect('focus-out', self.terminator.focus_left)
@ -149,7 +155,17 @@ class Terminal(Gtk.VBox):
self.composite_support = True
dbg('composite_support: %s' % self.composite_support)
if hasattr(self.vte, "set_enable_sixel"):
self.vte.set_enable_sixel(True)
self.vte.show()
#force to load for new window/terminal use case loading plugin
#and connecting signals, note the line update_url_matches also
#calls load_plugins, but it won't reload since already loaded
self.load_plugins(force = True)
self.update_url_matches()
self.terminalbox = self.create_terminalbox()
@ -279,6 +295,10 @@ class Terminal(Gtk.VBox):
return(terminalbox)
def load_plugins(self, force = False):
registry = plugin.PluginRegistry()
registry.load_plugins(force)
def _add_regex(self, name, re):
match = -1
if regex.FLAGS_PCRE2:
@ -580,10 +600,14 @@ class Terminal(Gtk.VBox):
item.connect('activate', lambda x: self.emit('enumerate', False))
menu.append(item)
item = Gtk.MenuItem.new_with_mnemonic(_('Insert _padded terminal number'))
item = Gtk.MenuItem.new_with_mnemonic(_('Insert zero _padded terminal number'))
item.connect('activate', lambda x: self.emit('enumerate', True))
menu.append(item)
item = Gtk.MenuItem.new_with_mnemonic(_('Insert terminal _name'))
item.connect('activate', lambda x: self.emit('insert-term-name'))
menu.append(item)
return(menu)
def set_group(self, _item, name):
@ -745,6 +769,22 @@ class Terminal(Gtk.VBox):
dbg(("fgcolor_inactive set to: RGB(%s,%s,%s)", getattr(self.fgcolor_inactive, "red"),
getattr(self.fgcolor_inactive, "green"),
getattr(self.fgcolor_inactive, "blue")))
bg_factor = self.config['inactive_bg_color_offset']
if bg_factor > 1.0:
bg_factor = 1.0
self.bgcolor_inactive = self.bgcolor.copy()
dbg(("bgcolor_inactive set to: RGB(%s,%s,%s)", getattr(self.bgcolor_inactive, "red"),
getattr(self.bgcolor_inactive, "green"),
getattr(self.bgcolor_inactive, "blue")))
for bit in ['red', 'green', 'blue']:
setattr(self.bgcolor_inactive, bit,
getattr(self.bgcolor_inactive, bit) * bg_factor)
dbg(("bgcolor_inactive set to: RGB(%s,%s,%s)", getattr(self.bgcolor_inactive, "red"),
getattr(self.bgcolor_inactive, "green"),
getattr(self.bgcolor_inactive, "blue")))
colors = self.config['palette'].split(':')
self.palette_active = []
for color in colors:
@ -780,7 +820,7 @@ class Terminal(Gtk.VBox):
self.vte.set_colors(self.fgcolor_active, self.bgcolor,
self.palette_active)
else:
self.vte.set_colors(self.fgcolor_inactive, self.bgcolor,
self.vte.set_colors(self.fgcolor_inactive, self.bgcolor_inactive,
self.palette_inactive)
profiles = self.config.base.profiles
terminal_box_style_context = self.terminalbox.get_style_context()
@ -878,7 +918,13 @@ class Terminal(Gtk.VBox):
focused=self.get_toplevel().get_focussed_terminal()
if focused in targets: targets.remove(focused)
if self != focused:
if self.group == focused.group:
if focused.group is None and self.group is None:
# Create a new group and assign currently focused
# terminal to this group
new_group = self.terminator.new_random_group()
focused.set_group(None, new_group)
focused.titlebar.update()
elif self.group == focused.group:
new_group = None
else:
new_group = focused.group
@ -1006,7 +1052,9 @@ class Terminal(Gtk.VBox):
"""Handler for modifier + mouse wheel scroll events"""
SMOOTH_SCROLL_UP = event.direction == Gdk.ScrollDirection.SMOOTH and event.delta_y <= 0.
SMOOTH_SCROLL_DOWN = event.direction == Gdk.ScrollDirection.SMOOTH and event.delta_y > 0.
if event.state & Gdk.ModifierType.CONTROL_MASK == Gdk.ModifierType.CONTROL_MASK:
modifiers = event.state & (Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK)
if modifiers == Gdk.ModifierType.CONTROL_MASK:
# Zoom the terminal(s) in or out if not disabled in config
if self.config["disable_mousewheel_zoom"] is True:
return False
@ -1025,7 +1073,7 @@ class Terminal(Gtk.VBox):
for target in targets:
target.zoom_out()
return True
if event.state & Gdk.ModifierType.SHIFT_MASK == Gdk.ModifierType.SHIFT_MASK:
elif modifiers == Gdk.ModifierType.SHIFT_MASK:
# Shift + mouse wheel up/down
if event.direction == Gdk.ScrollDirection.UP or SMOOTH_SCROLL_UP:
self.scroll_by_page(-1)
@ -1042,6 +1090,9 @@ class Terminal(Gtk.VBox):
menu = TerminalPopupMenu(self)
menu.show(widget, event)
def do_readonly_toggle(self):
self.vte.props.input_enabled = not self.vte.props.input_enabled
def do_scrollbar_toggle(self):
"""Show or hide the terminal scrollbar"""
self.toggle_widget_visibility(self.scrollbar)
@ -1111,7 +1162,7 @@ class Terminal(Gtk.VBox):
connec = widget.connect_after('draw', self.on_draw)
widget.queue_draw_area(0, 0, alloc.width, alloc.height)
widget.get_window().process_updates(True)
# finaly reset the values
# finally reset the values
widget.disconnect(connec)
widget._draw_data = None
@ -1121,17 +1172,52 @@ class Terminal(Gtk.VBox):
# save cairo context
cr.save()
# draw background image
image_mode = self.config['background_image_mode']
image_align_horiz = self.config['background_image_align_horiz']
image_align_vert = self.config['background_image_align_vert']
rect = self.vte.get_allocation()
xratio = float(rect.width) / float(self.background_image.get_width())
yratio = float(rect.height) / float(self.background_image.get_height())
if image_mode == 'stretch_and_fill':
# keep stretched ratios
xratio = xratio
yratio = yratio
elif image_mode == 'scale_and_fit':
ratio = min(xratio, yratio)
xratio = yratio = ratio
elif image_mode == 'scale_and_crop':
ratio = max(xratio, yratio)
xratio = yratio = ratio
else:
xratio = yratio = 1
cr.scale(xratio, yratio)
cr.set_source_surface(self.background_image)
xoffset = 0
yoffset = 0
if image_align_horiz == 'center':
xoffset = (rect.width / xratio - self.background_image.get_width()) / 2
elif image_align_horiz == 'right':
xoffset = rect.width / xratio - self.background_image.get_width()
if image_align_vert == 'middle':
yoffset = (rect.height / yratio - self.background_image.get_height()) / 2
elif image_align_vert == 'bottom':
yoffset = rect.height / yratio - self.background_image.get_height()
cr.set_source_surface(self.background_image, xoffset, yoffset)
cr.get_source().set_filter(cairo.Filter.FAST)
if image_mode == 'tiling':
cr.get_source().set_extend(cairo.Extend.REPEAT)
cr.paint()
# draw transparent monochrome layer
Gdk.cairo_set_source_rgba(cr, self.bgcolor)
cr.paint()
# restore cairo context
cr.restore()
@ -1228,7 +1314,7 @@ class Terminal(Gtk.VBox):
def get_location(self, term, x, y):
"""Get our location within the terminal"""
pos = ''
# get the diagonales function for the receiving widget
# get the diagonals function for the receiving widget
term_alloc = term.get_allocation()
coef1 = float(term_alloc.height)/float(term_alloc.width)
coef2 = -float(term_alloc.height)/float(term_alloc.width)
@ -1259,7 +1345,7 @@ class Terminal(Gtk.VBox):
self.vte.grab_focus()
def ensure_visible_and_focussed(self):
"""Make sure that we're visible and focussed"""
"""Make sure that we're visible and focused"""
window = self.get_toplevel()
try:
topchild = window.get_children()[0]
@ -1300,7 +1386,7 @@ class Terminal(Gtk.VBox):
def on_vte_focus_out(self, _widget, _event):
"""Inform other parts of the application when focus is lost"""
self.vte.set_colors(self.fgcolor_inactive, self.bgcolor,
self.vte.set_colors(self.fgcolor_inactive, self.bgcolor_inactive,
self.palette_inactive)
self.set_cursor_color()
self.emit('focus-out')
@ -1372,7 +1458,7 @@ class Terminal(Gtk.VBox):
def zoom_scale(self, widget, allocation, old_data):
"""Scale our font correctly based on how big we are not vs before"""
self.cnxids.remove_signal(self, 'size-allocate')
# FIXME: Is a zoom signal actualy used anywhere?
# FIXME: Is a zoom signal actually used anywhere?
self.cnxids.remove_signal(self, 'zoom')
new_columns = self.vte.get_column_count()
@ -1505,14 +1591,37 @@ class Terminal(Gtk.VBox):
dbg('Forking shell: "%s" with args: %s' % (shell, args))
args.insert(0, shell)
result, self.pid = self.vte.spawn_sync(Vte.PtyFlags.DEFAULT,
self.cwd,
args,
envv,
GLib.SpawnFlags.FILE_AND_ARGV_ZERO,
None,
None,
None)
if util.is_flatpak():
dbg('Flatpak detected')
args = util.get_flatpak_args(args, envv, self.cwd)
dbg('Forking shell: "%s" with args: %s via flatpak-spawn' % (shell, args))
self.pid = self.vte.spawn_async(
Vte.PtyFlags.NO_CTTY,
self.cwd,
args,
envv,
0,
None,
None,
-1,
None,
None,
None,
)
else:
result, self.pid = self.vte.spawn_sync(
Vte.PtyFlags.DEFAULT,
self.cwd,
args,
envv,
GLib.SpawnFlags.FILE_AND_ARGV_ZERO,
None,
None,
None
)
self.command = shell
self.titlebar.update()
@ -1638,7 +1747,7 @@ class Terminal(Gtk.VBox):
self.vte.set_font(fontdesc)
def get_cursor_position(self):
"""Return the co-ordinates of our cursor"""
"""Return the coordinates of our cursor"""
# FIXME: THIS METHOD IS DEPRECATED AND UNUSED
col, row = self.vte.get_cursor_position()
width = self.vte.get_char_width()
@ -1679,7 +1788,7 @@ class Terminal(Gtk.VBox):
connec = widget.connect_after('draw', self.on_draw)
widget.queue_draw_area(0, 0, alloc.width, alloc.height)
widget.get_window().process_updates(True)
# finaly reset the values
# finally reset the values
widget.disconnect(connec)
widget._draw_data = None
@ -1692,7 +1801,7 @@ class Terminal(Gtk.VBox):
widget.get_window().process_updates(True)
return False
def describe_layout(self, count, parent, global_layout, child_order):
def describe_layout(self, count, parent, global_layout, child_order, save_cwd = False):
"""Describe our layout"""
layout = {'type': 'Terminal', 'parent': parent, 'order': child_order}
if self.group:
@ -1705,6 +1814,8 @@ class Terminal(Gtk.VBox):
if title:
layout['title'] = title
layout['uuid'] = self.uuid
if save_cwd:
layout['directory'] = self.get_cwd()
name = 'terminal%d' % count
count = count + 1
global_layout[name] = layout
@ -1825,6 +1936,9 @@ class Terminal(Gtk.VBox):
def key_go_right(self):
self.emit('navigate', 'right')
def key_split_auto(self):
self.emit('split-auto', self.get_cwd())
def key_split_horiz(self):
self.emit('split-horiz', self.get_cwd())
@ -2038,6 +2152,11 @@ class Terminal(Gtk.VBox):
def key_preferences(self):
PrefsEditor(self)
def key_preferences_keybindings(self):
#need to have this as a config may be preferences_default
#have a mapping rather than hardcoded page
PrefsEditor(self, cur_page = 3)
def key_help(self):
manual_index_page = manual_lookup()
if manual_index_page:

View File

@ -3,7 +3,7 @@
"""terminal_popup_menu.py - classes necessary to provide a terminal context
menu"""
from gi.repository import Gtk
from gi.repository import Gtk, Gdk
from .version import APP_NAME
from .translation import _
@ -19,12 +19,70 @@ class TerminalPopupMenu(object):
terminal = None
terminator = None
config = None
accelgrp = None
def __init__(self, terminal):
"""Class initialiser"""
self.terminal = terminal
self.terminator = Terminator()
self.config = Config()
self.accelgrp = Gtk.AccelGroup()
def get_menu_item_mask(self, maskstr):
mask = 0
if maskstr is None:
return mask
maskstr = maskstr.lower()
if maskstr.find('<Shift>'.lower()) >= 0:
mask = mask | Gdk.ModifierType.SHIFT_MASK
dbg("adding mask <Shift> %s" % mask)
ctrl = (maskstr.find('<Control>'.lower()) >= 0 or
maskstr.find('<Primary>'.lower()) >= 0)
if ctrl:
mask = mask | Gdk.ModifierType.CONTROL_MASK
dbg("adding mask <Control> %s" % mask)
if maskstr.find('<Alt>'.lower()) >= 0:
mask = mask | Gdk.ModifierType.MOD1_MASK
dbg("adding mask <Alt> %s" % mask)
mask = Gdk.ModifierType(mask)
dbg("menu_item_mask :%d" % mask)
return mask
def menu_item(self, menutype, actstr, menustr):
act = self.config.base.get_item('keybindings', actstr)
maskstr = act[actstr] if actstr in act else ""
mask = self.get_menu_item_mask(maskstr)
accelchar = ""
pos = menustr.lower().find("_")
if (pos >= 0 and pos+1 < len(menustr)):
accelchar = menustr.lower()[pos+1]
#this may require tweak. what about shortcut function keys ?
if maskstr:
mpos = maskstr.rfind(">")
#can't have a char at 0 position as <> is len 2
if mpos >= 0 and mpos+1 < len(maskstr):
configaccelchar = maskstr[mpos+1:]
#ensure to take only 1 char else ignore
if len(configaccelchar) == 1:
dbg("found accelchar in config:%s override:%s"
% (configaccelchar, accelchar))
accelchar = configaccelchar
dbg("action from config:%s for item:%s with shortcut accelchar:(%s)"
% (maskstr, menustr, accelchar))
item = menutype.new_with_mnemonic(_(menustr))
if mask:
item.add_accelerator("activate",
self.accelgrp,
Gdk.keyval_from_name(accelchar),
mask,
Gtk.AccelFlags.VISIBLE)
return item
def show(self, widget, event=None):
"""Display the context menu"""
@ -98,23 +156,40 @@ class TerminalPopupMenu(object):
menu.append(Gtk.SeparatorMenuItem())
item = Gtk.ImageMenuItem.new_with_mnemonic(_('_Copy'))
item = self.menu_item(Gtk.ImageMenuItem, 'copy', '_Copy')
item.connect('activate', lambda x: terminal.vte.copy_clipboard())
item.set_sensitive(terminal.vte.get_has_selection())
menu.append(item)
item = Gtk.ImageMenuItem.new_with_mnemonic(_('_Paste'))
item = self.menu_item(Gtk.ImageMenuItem, 'paste', '_Paste')
item.connect('activate', lambda x: terminal.paste_clipboard())
menu.append(item)
menu.append(Gtk.SeparatorMenuItem())
item = Gtk.ImageMenuItem.new_with_mnemonic(_('Set W_indow Title'))
item = self.menu_item(Gtk.ImageMenuItem, 'edit_window_title',
'Set _Window Title')
item.connect('activate', lambda x: terminal.key_edit_window_title())
menu.append(item)
if not terminal.is_zoomed():
item = Gtk.ImageMenuItem.new_with_mnemonic(_('Split H_orizontally'))
item = self.menu_item(Gtk.ImageMenuItem, 'split_auto',
'Split _Auto')
"""
image = Gtk.Image()
image.set_from_icon_name(APP_NAME + '_auto', Gtk.IconSize.MENU)
item.set_image(image)
if hasattr(item, 'set_always_show_image'):
item.set_always_show_image(True)
"""
item.connect('activate', lambda x: terminal.emit('split-auto',
self.terminal.get_cwd()))
menu.append(item)
item = self.menu_item(Gtk.ImageMenuItem, 'split_horiz',
'Split H_orizontally')
image = Gtk.Image()
image.set_from_icon_name(APP_NAME + '_horiz', Gtk.IconSize.MENU)
item.set_image(image)
@ -124,7 +199,8 @@ class TerminalPopupMenu(object):
self.terminal.get_cwd()))
menu.append(item)
item = Gtk.ImageMenuItem.new_with_mnemonic(_('Split V_ertically'))
item = self.menu_item(Gtk.ImageMenuItem, 'split_vert',
'Split V_ertically')
image = Gtk.Image()
image.set_from_icon_name(APP_NAME + '_vert', Gtk.IconSize.MENU)
item.set_image(image)
@ -134,7 +210,7 @@ class TerminalPopupMenu(object):
self.terminal.get_cwd()))
menu.append(item)
item = Gtk.MenuItem.new_with_mnemonic(_('Open _Tab'))
item = self.menu_item(Gtk.MenuItem, 'new_tab', 'Open _Tab')
item.connect('activate', lambda x: terminal.emit('tab-new', False,
terminal))
menu.append(item)
@ -147,7 +223,7 @@ class TerminalPopupMenu(object):
menu.append(Gtk.SeparatorMenuItem())
item = Gtk.ImageMenuItem.new_with_mnemonic(_('_Close'))
item = self.menu_item(Gtk.ImageMenuItem, 'close_term', '_Close')
item.connect('activate', lambda x: terminal.close())
menu.append(item)
@ -188,13 +264,20 @@ class TerminalPopupMenu(object):
menu.append(item)
menu.append(Gtk.SeparatorMenuItem())
item = Gtk.CheckMenuItem.new_with_mnemonic(_('Show _scrollbar'))
item = self.menu_item(Gtk.CheckMenuItem, 'toggle_readonly', '_Read only')
item.set_active(not(terminal.vte.get_input_enabled()))
item.connect('toggled', lambda x: terminal.do_readonly_toggle())
menu.append(item)
item = self.menu_item(Gtk.CheckMenuItem, 'toggle_scrollbar',
'Show _scrollbar')
item.set_active(terminal.scrollbar.get_property('visible'))
item.connect('toggled', lambda x: terminal.do_scrollbar_toggle())
menu.append(item)
if hasattr(Gtk, 'Builder'): # VERIFY FOR GTK3: is this ever false?
item = Gtk.MenuItem.new_with_mnemonic(_('_Preferences'))
item = self.menu_item(Gtk.MenuItem, 'preferences',
'_Preferences')
item.connect('activate', lambda x: PrefsEditor(self.terminal))
menu.append(item)
@ -245,12 +328,12 @@ class TerminalPopupMenu(object):
def add_layout_launcher(self, menu):
"""Add the layout list to the menu"""
item = Gtk.MenuItem.new_with_mnemonic(_('_Layouts...'))
item = self.menu_item(Gtk.MenuItem, 'layout_launcher', '_Layouts...')
menu.append(item)
submenu = Gtk.Menu()
item.set_submenu(submenu)
layouts = self.config.list_layouts()
for layout in layouts:
item = Gtk.MenuItem(layout)
item.connect('activate', lambda x: spawn_new_terminator(self.terminator.origcwd, ['-u', '-l', layout]))
item.connect('activate', lambda x: spawn_new_terminator(self.terminator.origcwd, ['-u', '-l', x.get_label()]))
submenu.append(item)

View File

@ -8,6 +8,8 @@ import gi
gi.require_version('Vte', '2.91')
from gi.repository import Gtk, Gdk, Vte
from gi.repository.GLib import GError
import itertools
import random
from . import borg
from .borg import Borg
@ -16,6 +18,7 @@ from .keybindings import Keybindings
from .util import dbg, err, enumerate_descendants
from .factory import Factory
from .version import APP_NAME, APP_VERSION
from .translation import _
try:
from gi.repository import GdkX11
@ -54,7 +57,6 @@ class Terminator(Borg):
dbus_path = None
dbus_name = None
debug_address = None
ibus_running = None
doing_layout = None
layoutname = None
@ -184,6 +186,13 @@ class Terminator(Borg):
for terminal in self.terminals:
dbg('checking: %s (%s)' % (terminal.uuid.urn, terminal))
if terminal.uuid.urn == uuid:
if terminal.get_toplevel().is_child_notebook():
topchild = terminal.get_toplevel().get_child()
current_page = topchild.get_current_page()
#we need to emit signal for plugin and retain same page
dbg("current_page for tab-change-signal:%s" % current_page)
terminal.emit('tab-change', current_page)
return terminal
return None
@ -208,6 +217,7 @@ class Terminator(Borg):
window.add(terminal)
window.show(True)
terminal.spawn_child()
terminal.emit('tab-change', 0)
return(window, terminal)
@ -310,6 +320,7 @@ class Terminator(Borg):
"""Layout operations have finished, record that fact"""
self.doing_layout = False
maker = Factory()
t = 0
window_last_active_term_mapping = {}
for window in self.windows:
@ -325,7 +336,7 @@ class Terminator(Borg):
for window in self.windows:
if not window.is_child_notebook():
# For windows without a notebook ensure Terminal is visible and focussed
# For windows without a notebook ensure Terminal is visible and focused
if window_last_active_term_mapping[window]:
term = self.find_terminal_by_uuid(window_last_active_term_mapping[window].urn)
term.ensure_visible_and_focussed()
@ -347,22 +358,11 @@ class Terminator(Borg):
t = 0
window.get_window().focus(t)
# Awful workaround to be sure that the last focused window is actually the one focused.
# Don't ask, don't tell policy on this. Even this is not 100%
# Going by the docs, this should be all that's needed to ensure that the
# last_active_window is focussed.
if self.last_active_window:
window = self.find_window_by_uuid(self.last_active_window.urn)
count = 0
while count < 1000 and Gtk.events_pending():
count += 1
Gtk.main_iteration_do(False)
window.show()
window.grab_focus()
try:
t = GdkX11.x11_get_server_time(window.get_window())
except (NameError,TypeError, AttributeError):
t = 0
window.get_window().focus(t)
window.present_with_time(t)
self.prelayout_windows = None
def on_gtk_theme_name_notify(self, settings, prop):
@ -585,6 +585,16 @@ class Terminator(Borg):
idx = terminals.index(term)
term.feed(numstr.encode() % (idx + 1))
def do_insert_term_name(self, widget):
terminals = []
for window in self.windows:
containers, win_terminals = enumerate_descendants(window)
terminals.extend(win_terminals)
for term in self.get_target_terms(widget):
name = term.titlebar.get_custom_string() or term.get_window_title()
term.feed(name.encode())
def get_sibling_terms(self, widget):
termset = []
for term in self.terminals:
@ -617,13 +627,13 @@ class Terminator(Borg):
def focus_left(self, widget):
self.last_focused_term=widget
def describe_layout(self):
def describe_layout(self, save_cwd = False):
"""Describe our current layout"""
layout = {}
count = 0
for window in self.windows:
parent = ''
count = window.describe_layout(count, parent, layout, 0)
count = window.describe_layout(count, parent, layout, 0, save_cwd)
return(layout)
@ -638,4 +648,18 @@ class Terminator(Borg):
def zoom_orig_all(self):
for term in self.terminals:
term.zoom_orig()
def new_random_group(self):
defaultmembers=[_('Alpha'),_('Beta'),_('Gamma'),_('Delta'),_('Epsilon'),_('Zeta'),_('Eta'),
_('Theta'),_('Iota'),_('Kappa'),_('Lambda'),_('Mu'),_('Nu'),_('Xi'),
_('Omicron'),_('Pi'),_('Rho'),_('Sigma'),_('Tau'),_('Upsilon'),_('Phi'),
_('Chi'),_('Psi'),_('Omega')]
currentgroups=set(self.groups)
for i in range(1,4):
defaultgroups=set(map(''.join, list(itertools.product(defaultmembers,repeat=i))))
freegroups = list(defaultgroups-currentgroups)
if freegroups:
return random.choice(freegroups)
return ''
# vim: set expandtab ts=4 sw=4:

View File

@ -5,8 +5,6 @@
from gi.repository import Gtk, Gdk
from gi.repository import GObject
from gi.repository import Pango
import random
import itertools
from .version import APP_NAME
from .util import dbg
@ -255,19 +253,7 @@ class Titlebar(Gtk.EventBox):
if self.terminal.group:
self.groupentry.set_text(self.terminal.group)
else:
defaultmembers=[_('Alpha'),_('Beta'),_('Gamma'),_('Delta'),_('Epsilon'),_('Zeta'),_('Eta'),
_('Theta'),_('Iota'),_('Kappa'),_('Lambda'),_('Mu'),_('Nu'),_('Xi'),
_('Omicron'),_('Pi'),_('Rho'),_('Sigma'),_('Tau'),_('Upsilon'),_('Phi'),
_('Chi'),_('Psi'),_('Omega')]
currentgroups=set(self.terminator.groups)
for i in range(1,4):
defaultgroups=set(map(''.join, list(itertools.product(defaultmembers,repeat=i))))
freegroups = list(defaultgroups-currentgroups)
if freegroups:
self.groupentry.set_text(random.choice(freegroups))
break
else:
self.groupentry.set_text('')
self.groupentry.set_text(self.terminator.new_random_group())
self.groupentry.show()
self.grouplabel.hide()
self.groupentry.grab_focus()

View File

@ -43,6 +43,9 @@ DEBUGCLASSES = []
# list of methods to show debugging for. empty list means show all methods
DEBUGMETHODS = []
def is_flatpak():
return os.path.exists("/.flatpak-info")
def dbg(log = ""):
"""Print a message if debugging is enabled"""
if DEBUG:
@ -144,6 +147,13 @@ def path_lookup(command):
def shell_lookup():
"""Find an appropriate shell for the user"""
if is_flatpak():
getent = subprocess.check_output([
'flatpak-spawn', '--host', 'getent', 'passwd',
pwd.getpwuid(os.getuid())[0]
]).decode(encoding='UTF-8').rstrip('\n')
shell = getent.split(':')[6]
return shell
try:
usershell = pwd.getpwuid(os.getuid())[6]
except KeyError:
@ -186,7 +196,7 @@ def widget_pixbuf(widget, maxsize=None):
Gdk.cairo_set_source_window(cairo_context, window, 0, 0)
cairo_context.paint()
scaledpixbuf = Gdk.pixbuf_get_from_surface(preview_surface, 0, 0, preview_width, preview_height);
scaledpixbuf = Gdk.pixbuf_get_from_surface(preview_surface, 0, 0, preview_width, preview_height)
return(scaledpixbuf)
@ -392,5 +402,24 @@ def update_config_to_cell_height(filename):
dbg('Updted line_height to cell_height.')
except Exception as ex:
err('Unable to open %s for reading and/or writting.\n(%s)'
err('Unable to open %s for reading and/or writing.\n(%s)'
% (filename, ex))
def get_flatpak_args(args, envv, cwd):
"""Construct args to be executed via flatpak-spawn"""
flatpak_args = None
env_args = ['--env={}'.format(env) for env in envv]
flatpak_spawn = [
"flatpak-spawn", "--host", "--watch-bus", "--forward-fd=1",
"--forward-fd=2", "--directory={}".format(cwd)
]
# Detect and remove duplicate shell in args
# to work around vte.spawn_sync() requirement.
if len(set([args[0], args[1]])) == 1:
del args[0]
flatpak_args = flatpak_spawn + env_args + args
dbg('returned flatpak args: %s' % flatpak_args)
return flatpak_args

View File

@ -20,4 +20,4 @@ TerminatorVersion supplies our version number.
"""
APP_NAME = 'terminator'
APP_VERSION = '2.1.1'
APP_VERSION = '2.1.3'

View File

@ -103,6 +103,7 @@ class Window(Container, Gtk.Window):
self.apply_icon(icon_to_apply)
self.pending_set_rough_geometry_hint = False
self.hidefunc = self.hide
def do_get_property(self, prop):
"""Handle gobject getting a property"""
@ -300,6 +301,14 @@ class Window(Container, Gtk.Window):
"""Handle window destruction"""
dbg('destroying self')
for terminal in self.get_terminals():
# Only for race condition, while closing a window with a single
# terminal. Could be useful in other scenarios.
# We can't get [[terminal1]] section using
# terminal.describe_layout() while terminal is closing.
# Also while receiving event on Plugins Side, if connected to term
# we can't use close-term as it starts to close terminal, so we
# send a pre-close-term before Example: Plugin SaveLastSessionLayout
terminal.emit('pre-close-term')
terminal.close()
self.cnxids.remove_all()
self.terminator.deregister_window(self)
@ -414,6 +423,7 @@ class Window(Container, Gtk.Window):
if maker.isinstance(widget, 'Terminal'):
signals = {'close-term': self.closeterm,
'title-change': self.title.set_title,
'split-auto': self.split_auto,
'split-horiz': self.split_horiz,
'split-vert': self.split_vert,
'resize-term': self.resizeterm,
@ -529,6 +539,7 @@ class Window(Container, Gtk.Window):
def zoom(self, widget, font_scale=True):
"""Zoom a terminal widget"""
maker = Factory()
children = self.get_children()
if widget in children:
@ -541,8 +552,13 @@ class Window(Container, Gtk.Window):
self.zoom_data['old_child'] = children[0]
self.zoom_data['font_scale'] = font_scale
old_parent = self.zoom_data['old_parent']
if maker.isinstance(old_parent, 'Notebook'):
self.zoom_data['notebook_tabnum'] = old_parent.page_num(widget)
self.zoom_data['notebook_label'] = old_parent.get_tab_label(widget).get_label()
self.remove(self.zoom_data['old_child'])
self.zoom_data['old_parent'].remove(widget)
old_parent.remove(widget)
self.add(widget)
self.set_property('term_zoomed', True)
@ -554,6 +570,8 @@ class Window(Container, Gtk.Window):
def unzoom(self, widget=None):
"""Restore normal terminal layout"""
maker = Factory()
if not self.is_zoomed():
# We're not zoomed anyway
dbg('not zoomed, no-op')
@ -565,7 +583,13 @@ class Window(Container, Gtk.Window):
self.remove(widget)
self.add(self.zoom_data['old_child'])
self.zoom_data['old_parent'].add(widget)
if maker.isinstance(self.zoom_data['old_parent'], 'Notebook'):
self.zoom_data['old_parent'].newtab(widget=widget, metadata={
'tabnum': self.zoom_data['notebook_tabnum'],
'label': self.zoom_data['notebook_label']
})
else:
self.zoom_data['old_parent'].add(widget)
widget.grab_focus()
self.zoom_data = None
self.set_property('term_zoomed', False)
@ -583,8 +607,17 @@ class Window(Container, Gtk.Window):
# If our child is a Notebook, reset to work from its visible child
if maker.isinstance(child, 'Notebook'):
pagenum = child.get_current_page()
child = child.get_nth_page(pagenum)
notebook = child
pagenum = notebook.get_current_page()
child = notebook.get_nth_page(pagenum)
metadata = {
'tabnum': pagenum,
'label': notebook.get_tab_label(child).get_label()
}
else:
metadata = None
if maker.isinstance(child, 'Paned'):
parent = child.get_parent()
@ -592,7 +625,7 @@ class Window(Container, Gtk.Window):
# otherwise _sometimes_ we get incorrect values.
alloc = child.get_allocation()
parent.remove(child)
child.rotate_recursive(parent, alloc.width, alloc.height, clockwise)
child.rotate_recursive(parent, alloc.width, alloc.height, clockwise, metadata)
self.show_all()
while Gtk.events_pending():
@ -888,9 +921,9 @@ class Window(Container, Gtk.Window):
allocation = terminal.get_allocation()
possibles = []
# Get the co-ordinate of the appropriate edge for this direction
# Get the coordinate of the appropriate edge for this direction
edge, p1, p2 = util.get_edge(allocation, direction)
# Find all visible terminals which are, in their entirity, in the
# Find all visible terminals which are, in their entirety, in the
# direction we want to move, and are at least partially spanning
# p1 to p2
for term in layout:

View File

@ -103,7 +103,8 @@ def test_message_dialog_is_shown_on_duplicate_accel_assignment(
)
widget = prefs_editor.builder.get_object("keybindingtreeview")
liststore = widget.get_model()
treemodelfilter = widget.get_model()
liststore = treemodelfilter.get_model()
# Replace default accelerator with a test one
prefs_editor.on_cellrenderer_accel_edited(
@ -150,7 +151,8 @@ def test_duplicate_accels_not_possible_to_set(accel_params):
)
widget = prefs_editor.builder.get_object("keybindingtreeview")
liststore = widget.get_model()
treemodelfilter = widget.get_model()
liststore = treemodelfilter.get_model()
binding = liststore.get_value(liststore.get_iter(path), 0)
all_default_accelerators = {
@ -194,7 +196,7 @@ def test_duplicate_accels_not_possible_to_set(accel_params):
(Gdk.KEY_a, Gdk.ModifierType.CONTROL_MASK),
),
# 3) `Ctrl+Shift+a` shouldn't change
((Gdk.KEY_a, CONTROL_SHIFT_MOD, 38), (Gdk.KEY_a, CONTROL_SHIFT_MOD),),
#((Gdk.KEY_a, CONTROL_SHIFT_MOD, 38), (Gdk.KEY_a, CONTROL_SHIFT_MOD),),
# 4) `Ctrl+Shift+Alt+F1` shouldn't change
(
(Gdk.KEY_F1, CONTROL_ALT_SHIFT_MOD, 67),
@ -231,7 +233,8 @@ def test_keybinding_edit_produce_expected_accels(
prefs_editor = prefseditor.PrefsEditor(term=term)
widget = prefs_editor.builder.get_object("keybindingtreeview")
liststore = widget.get_model()
treemodelfilter = widget.get_model()
liststore = treemodelfilter.get_model()
path = 0 # Edit the first listed key binding in `Preferences>Keybindings`
key, mods, hardware_keycode = input_key_params
@ -277,7 +280,8 @@ def test_keybinding_successfully_reassigned_after_clearing(accel_params):
prefs_editor = prefseditor.PrefsEditor(term=term)
widget = prefs_editor.builder.get_object("keybindingtreeview")
liststore = widget.get_model()
treemodelfilter = widget.get_model()
liststore = treemodelfilter.get_model()
path, key, mods, hardware_keycode = accel_params
# Assign a key binding