1
.. image:: imgs/icon_gettinginvolved.png
3
:alt: Saefty first when breaking out the power tools.
5
=============================
7
=============================
9
There are many ways to help out, and they don't all involve coding.
11
-----------------------------
13
-----------------------------
17
Awesome! I've been getting my head around the whole translation
18
bit (English polyglot I'm afraid), and as a result there has been
19
a lot of churn in the translations. So what are you waiting for?
21
Speak some other language? Take a look at
22
https://translations.launchpad.net/terminator because you might
23
just be the <insert language here> speaker that we're looking for.
25
-----------------------------
27
-----------------------------
29
OK, so while the main icon contributed by Cory Kontros is really
30
good, my hacks of it are... not so good. I'm no artist, but I do
31
appreciate them. So if you think you could apply some polish and
32
a cohesive design to this manuals page header images, please, give
33
it a go. It may only be to take the existing icon and to make it
36
The only thing I would ask is that you maintain the main icon as
37
a base like I have done.
39
-----------------------------
40
Terminator action shots
41
-----------------------------
43
This one's just for "PR" purposes. I want to see famous/awesome
44
people kicking ass *and* chewing bubble-gum with Terminator in the
47
If you spot it in a TV show, movie, or a news article I want to
48
know. Maybe you're even the famous/awesome person, in which case
51
It will warm the cockles of my heart to know that Terminator made
52
life easier for people who do the really important stuff like
53
discovering new particles (CERN? Hello?), boldly going (NASA? Come
54
in Houston), or wrangle 2 more frames per second from Half-Life 3
57
Here's the ones spotted and noted (I've seen quite a few others
58
previously, but never thought to note them)
60
- `MindMaze`_ - VR / mind-reading.
61
Visible in the background of the video, and in an image lower down
64
.. _MindMaze: http://www.theverge.com/2015/3/3/8136405/mind-maze-mind-leap-thought-reading-virtual-reality-headset
66
-----------------------------
68
-----------------------------
70
This manual is a new endeavour to fully document all the nooks and
71
crannies of Terminator. As such, there may be things that are missing,
72
incorrect, not explained clearly, or need expanding.
74
Suggestions, or updates are welcome.
76
I had a little exposure at work to Sphinx, so I thought I'd dig in
77
a bit deeper and learn a bit about it. So far I'm happy enough, so
78
till further notice this manual will remain in this format.
80
If you're feeling like a loquacious polyglot you could attempt to
81
translate the whole manual. So far I haven't tested it, but in
82
principle, just do a checkout of the trunk, and do a full copy of
83
the ``doc/manual`` folder to ``doc/manual_XXXX`` where XXXX is the
84
i18n language code. This is usually just the two or three letters of
85
the language code, but sometimes has the region too... Or something
86
else entirely in a couple of cases. A couple of examples::
89
pt_BR - Brazilian Portugese
91
ca@valencia - Catalan (Dialect specific to Valencia?)
93
Then just translate away, and take new screen grabs to replace the
94
British English ones I've done. If someone was to make a serious
95
effort to translate the manual, I'm sure we can get it included.
97
The Help shortcut checks the LANGUAGE environment variable, and tries
98
those folders in order, before falling back gracefully to the default
99
manual, which is British English anyway::
103
So this is going to try:
105
+ *html_en_GB* - the non-existent British English folder
106
+ *html_en* - the non-existent generic English folder
107
+ *html* - the default document that happens to be in British English
109
.. note:: Although the source is in a folder beginning with ``manual``,
110
that gets replaced with ``html`` for installation.
112
.. note:: If there are any Americans offended by correct spelling,
113
they are more than welcome to create an Americanised
114
version, and I'll relegate it to the en_US folder. The
115
default will remain British English.
117
In order to create the html for manual, you must have the sphinx_rtd_theme
118
package installed. This does not appear to be packaged for Ubuntu
119
14.04 LTS as far as I can tell. This means you must install it using
120
the pip tool. This may need installing on your system too with::
122
sudo apt-get install python-pip
124
Once that is installed you can install the theme with::
126
sudo pip install sphinx-rtd-theme
128
This will take care of installing the theme and it's dependencies.
130
.. warning:: On Ubuntu this also installed a newer version of *Sphinx*
131
under the ``/usr/local`` folder. This caused a bit of
132
confusion at one point, so be aware.
134
-----------------------------
136
-----------------------------
138
Just use it, explore the features, and complain when they don't work.
140
We actually have quite a lots of outstanding issues, and in many
141
cases I can't reproduce due to either lack of info, differences in
142
environment, lack of information, or because the bug is so old the
143
original raiser has moved on and not available for questions.
145
I'm particularly interested in cases where I can't even see that
146
something is an issue, such as:
148
- *Right-to-Left* - I can force Terminator to Arabic, and everything
149
flips around, but I have no idea if it looks "right" to a native
150
speaker. Frankly it just looks *weird!*
151
- *HighContrast* - Again, I can switch to it, but perhaps I'm not
152
appreciating the needs of that group.
153
- *Accessibility* - People using only a keyboard, or only a mouse,
154
on-screen keyboards, text-to-speech, speech-to-text, and so on.
156
-----------------------------
158
-----------------------------
160
- **Fixing** - OK, so yeah, this is coding.
161
- **Reproduce and improving** - Sometimes bugs are lacking info to
162
reproduce, or my system is too different. Or perhaps the original
163
poster has moved on because we haven't fixed their pet peeve fast
165
- **Triaging** - It's one of the less glamorous jobs, but someone's
166
gotta do it. Shepherd bugs to the point where it has a priority,
167
a milestone, reproduction steps, confirmation, submitted patches
168
validated, and so on.
170
See https://bugs.launchpad.net/terminator
172
-----------------------------
174
-----------------------------
176
Ahem... Yeah... More coding...
178
Some :ref:`plugins` may have room for improvement, or perhaps you have
179
an idea for a neat plugin no-one else has done.
181
-----------------------------
182
Main Application Development
183
-----------------------------
185
Oh come on... Coding? Again!
187
I see lots of people say how Terminator is really good, and it is,
188
but like anything, it could be better!
190
To give an idea, as I write this manual in July 2015, there are 83
193
.. note:: Just because an item is marked as wishlist, it doesn't
194
mean that a great deal of thought has been put into the
195
appropriateness of the idea on my side. It may be impossible,
196
or not a good fit, or just plain bat-sh!t crazy. If you
197
want to pick up a wishlist item that looks like a lot of
198
work (especially if it makes fundamental changes to the
199
Terminator ethos) it's probably best to check first that
200
your approach is good, and has a realistic chance of being
203
Some of these wishlist items are also in my own text file of "Things
204
to do" / "Big bag of crazy", which as of August 2015, revision 1598,
207
Enhancements which may, or may not, have a wishlist item
208
========================================================
209
Finish the WIP window icons
211
Add a list of the default keybindings to the Preferences -> Keybindings window?
213
Add libunity quicklist of saved layouts
214
https://wiki.ubuntu.com/Unity/LauncherAPI#Python_Example
215
http://www.techques.com/question/24-64436/Refreshing-of-Dynamic-Quicklist-doesn%27t-work-after-initialization
216
http://people.canonical.com/~dpm/api/devel/GIR/python/Unity-3.0.html
217
Possibly use the progress bar and or counter for something too.
219
Add an appindicator menu for launching sessions.
222
Could bind the shortcut as a global toggle to hide show
227
pin to visible workspace
229
Layout needs to save/load more settings
231
Group mode status (all, group, off)
236
pin to visible workspace
239
Store the custom command and working directory when we load a layout, so making small changes and saving doesn't lose everything.
240
It could be possible to detect the current command and working directory with psutil, but could be tricky. (i.e. do we ignore bash?)
242
A per layout "save on exit" option to always remember last setup/positions etc. Probably requires above to be done first.
246
Have changing widgets depending on what is selected in the tree
247
Terminal title editable
250
Items should be sorted for saving. Easier for comparing and spotting changes.
252
Give plugins ability to register shortcuts
255
Context menu (in addition to Windows menu button - not always available on all keyboards)
258
Open a shortcut help overlay
259
Change tab text (#1054300-patch), titlebar text, group name
260
Toggle titlebar visibility
261
Equalise the splitters
263
Zoom +receiver in/out/reset
264
Zoom all in/out/reset
265
Last terminal (again to jump back to original) #1440049
268
Terminal without target opens new window
269
Tab to different/new window depending on target
271
Improve DBus interface, add coordination between sessions, i.e.:
272
multiple DBus ports? register them with a master DBus session, be able to query these, etc
273
be able to drive them more with command line commands, and not just from within own shell
274
Remotinator improvements
276
Abstract out the session/layout allowing multiple logical layouts in the same process to reduce resource used
277
This is a big piece of work, as a lot of the Terminator class would need seperating out.
279
Hide window should find the last focussed window and hide that. Second hit unhides and focusses it
280
Add a power hide to hide all of shortcut bound instances windows
281
Use the dbus if available to hide the current active window, then unhide it on second shortcut press
282
If the dbus is available:
283
The hide will go to the focussed instance, instead of the first to grab the shortcut
284
Add a super power hide to hide all Terminator windows
285
In both cases a second shortcut unhides whatever was hidden
287
Split with command / Inherit command/workdir/groups etc
289
Somehow make Layout Launcher, Preferences, & poss. Custom Commands singleton/borg (possibly use dbus)
291
Custom Commands is blocking, perhaps make non-blocking
293
Button in prefs to duplicate a layout
295
Check widget for close_button_on_tab in prefs.
297
When in zoomed/maximised mode
298
Perhaps the menu could contain a quick switch sub menu, rather than having to Restore, right-click, maximise
299
Shortcuts for next/prev,up/down/left/right, etc. How should they behave
301
Limit broadcast group/all to current tab
303
Broadcast off when maximised or zoomed to single term
305
All non main windows to be changed to glade files
307
For me the two different sets of next/prev shortcuts are a bit of a mystery.
309
Add preselection to the profile tab
311
Figure out how to get the tree view to jump to selected row for prefseditor
313
Ability to insert window, titlebar, or group value into terminal(s)
315
Let window title = terminal titlebar - perhaps other combos. Some kind of %T %G %W substitution?
317
If we can figure out how to do arbritrary highlighting, perhaps we can get a "highlight differences" mode like used to exist in ClusTerm.
318
This could also be limted to highlighting diffs between those in the same group.
320
Add large action/status icons for when titlebar is bigger.
323
Issues encountered which may, or may not, already have an LP bug
324
================================================================
326
BUG: Issue if initial window (no tabs) has any splits, then creating new tab causes the first tab to be misnamed, gtk2 & gtk3.
327
Also on GTK3 only (but cannot reproduce now): it also causes a problem if using the "Menu" key to open the context menu
328
on the unamed tab; it does not dissappear by clicking out of it.
330
BUG: Ctrl+right-click-drag does not work. Can initiate drag, but no targets work.
332
BUG: Zoom and maximise do not work if single terminal in a tab, gtk2 & gtk3.
334
BUG: If first tab is split the tabs label width increases and pushes others off window gtk3 (in gtk2, the label shifts right, but other tabs OK)
336
BUG: With longer translations the buttons in the prefs sidebars can get chopped off.
338
BUG: Groups: Create two tabs with splits. Super+G (group all), move to other tab and Super+T (group tabs), move back and type
339
Output in tab group too. Also for custom groups.
340
Ungrouping all also nukes changed groups. Right?
341
Also with Super+T and changing one terms group, still receives input, and loses custom group when turning off tab group.
343
BUG: Hide on lose focus broken. LP#843674
344
focus-out signal callback defers (idle_add) the call to hide.
345
If one of our own windows/menus pops up, an inhibit flag is set.
346
When the window/menu is closed we call a deferred hide on the main window
347
In the deferred function, we check if we now have focus, and do not hide
348
In the deferred function, we check if inhibit is set and do not hide.
350
So as you can see, still lots of room for improvements, and plenty of
351
ideas if you are trying to find small starter tasks.
353
.. _wishlist items: https://bugs.launchpad.net/terminator/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=NEW&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.importance%3Alist=WISHLIST&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_commenter=&field.subscriber=&field.structural_subscriber=&field.tag=&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_branches=on&field.has_no_branches.used=&field.has_no_branches=on&field.has_blueprints.used=&field.has_blueprints=on&field.has_no_blueprints.used=&field.has_no_blueprints=on
355
-----------------------------
357
-----------------------------
359
Last coding one, I promise!
361
After some sterling work by Egmont Koblinger, one of the VTE
362
developers, he came up with a very large patch for rudimentary GTK3
363
support. A number of things were incomplete or broken, but it got it
364
far enough along that it was no longer an insurmountable cliff face.
366
Since then I have resolved to port fixes and features between the
367
two versions. As I do this I explore and find outstanding issues with
368
the port, and it is slowly becoming more usable.
370
Eventually the GTK2 version of Terminator will go into a
371
deprecated/maintenance mode. Unfortunately due to needing a relatively
372
new version of libvte, that switch will not be in the immediate
373
future. I'm running trusty (14.04 LTS) and even there I had to build
374
libvte 0.38 from source. This makes the GTK3 out of reach for the
375
"Joe Bloggs" of the world. I could try and maintain my own PPA of the
376
component, but that doesn't help Fedora/OpenSUSE/Arch etc. users.
377
Even getting "Joe Bloggs" to add a PPA can be a struggle.
379
And for a real nightmare, I tried to compile the 0.40 version and the
380
thing lit up with a smorgasbord of items where my installed packages
383
If you are feeling brave and adventurous, there are some instructions
384
in `comment #15`_ of the `porting bug`_ that will help you get the
385
GTK3 version running. Assistance knocking off the remaining rough
386
edges will be very much appreciated.
388
For the record, as of August 2015, with the `gtk3 branch`_ at revision
389
1577, these are the outstanding items::
391
Outstanding GTK3 tasks/items/reviews etc remaining
392
===================================================
393
Outstanding trunk revisions:
394
If titlebar text wider than window, the visual bell icon does not appear
395
If editing label in titlebar, the whole layout gets distorted until finished, then snaps back to mostly correct layout
396
In High contrast mode the titlebar background only works over the group button
397
In High contrast mode the titles are invisible for terminals with a group
398
Fix/reimplment the DBUS for GTK3. GI seems incomplete with no Server. Try to get old style working again.
399
Need to go through all the Gtk.STOCK_* items and remove. Deprecated.
400
Homogeneous_tabbar removed? Why?
401
Need to set the version requirements - how? needed?
402
terminal.py:on_vte_size_allocate, check for self.vte.window missing. Consequences?
403
terminal.py:understand diff in args between old fork and new spawn of bash. Consequences?
404
VERIFY(8)/FIXME(8) FOR GTK3 items to be dealt with
406
For future with vte0.40+ - reimplment/restore the word_chars stuff.
408
Not fixable so far as I can see
409
===============================
410
[Function N/A in 0.38+, will it return?] visible_bell - removed and not mentioned. Check capability not possible, or can be faked.
412
Once the GTK3 port is done there is also a long overdue port to
413
Python3, especially in light of some distributions trying to
414
eliminate Python2 from the base installs. Yes, Python2 will be with
415
us for a long time yet, but this should serve as a warning.
417
.. _comment #15: https://bugs.launchpad.net/terminator/+bug/1030562/comments/15
418
.. _porting bug: https://bugs.launchpad.net/terminator/+bug/1030562
419
.. _gtk3 branch: https://code.launchpad.net/~gnome-terminator/terminator/gtk3
421
--------------------------
423
--------------------------
425
Strictly speaking this isn't an API as such, because it is just using
426
sphinx-apidoc over the Terminator code base. It's perhaps helpful to
427
have this as a document that can be browsed.
429
`Terminator API docs`_
431
As it stands, this is rather incomplete, or too terse with no examples
432
given. If you look at the terminatorlib.configobj package, you will
433
see fairly extensive documentation, along with walk-throughs, etc. This
434
particular package was written elsewhere, and brought into Terminator
435
to provide configuration handling.
437
There are also some aspects of the way this document builds that I'm
438
not too happy about. The seemingly unnecessary ``terminatorlib``
439
root-node in the side bar; the lack of class/method links in the
440
sidebar; all ``.py`` files on the same page (this can be changed, but
441
then even less is displayed in the sidebar.) If you can help, join
442
the A-Team... Or better yet, send me some changes that fix this.
444
.. _Terminator API docs: ../apidoc/index.html