~stephen-j-boddy/terminator/bugfix-1318542-double-chars

« back to all changes in this revision

Viewing changes to doc/manual/_build/html/_sources/gettinginvolved.txt

  • Committer: Stephen Boddy
  • Date: 2015-08-08 02:11:30 UTC
  • Revision ID: stephen.j.boddy@gmail.com-20150808021130-9c1npu4gvenkcb1p
A manual has been added to Terminator
* Added source and generated html of manual, and API doc
* setup.py can install the manual (and by extension do can debuild)
* setup.py has (inactive) code for generating the html from the source
  but this will break if rtd theme is not available
* 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 to launch manual
* A couple of additional string to translate related to manual/help

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.. image:: imgs/icon_gettinginvolved.png
 
2
   :align: right
 
3
   :alt: Saefty first when breaking out the power tools.
 
4
 
 
5
=============================
 
6
Getting involved
 
7
=============================
 
8
 
 
9
There are many ways to help out, and they don't all involve coding.
 
10
 
 
11
-----------------------------
 
12
Translations
 
13
-----------------------------
 
14
 
 
15
Sprechen Sie Deutsch?
 
16
 
 
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?
 
20
 
 
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.
 
24
 
 
25
-----------------------------
 
26
Improve icons/artwork
 
27
-----------------------------
 
28
 
 
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
 
34
suck less.
 
35
 
 
36
The only thing I would ask is that you maintain the main icon as
 
37
a base like I have done.
 
38
 
 
39
-----------------------------
 
40
Terminator action shots
 
41
-----------------------------
 
42
 
 
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
 
45
mix.
 
46
 
 
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
 
49
drop me a note.
 
50
 
 
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
 
55
(Valve? Confirmed?)
 
56
 
 
57
Here's the ones spotted and noted (I've seen quite a few others
 
58
previously, but never thought to note them)
 
59
 
 
60
- `MindMaze`_ - VR / mind-reading.
 
61
    Visible in the background of the video, and in an image lower down
 
62
    the page. (The Verge)
 
63
 
 
64
.. _MindMaze: http://www.theverge.com/2015/3/3/8136405/mind-maze-mind-leap-thought-reading-virtual-reality-headset
 
65
 
 
66
-----------------------------
 
67
Manual updates
 
68
-----------------------------
 
69
 
 
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.
 
73
 
 
74
Suggestions, or updates are welcome.
 
75
 
 
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.
 
79
 
 
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::
 
87
 
 
88
  pt            - Portugese
 
89
  pt_BR         - Brazilian Portugese
 
90
  ca            - Catalan
 
91
  ca@valencia   - Catalan (Dialect specific to Valencia?)
 
92
  
 
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.
 
96
 
 
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::
 
100
 
 
101
  LANGUAGE=en_GB:en
 
102
 
 
103
So this is going to try:
 
104
 
 
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
 
108
 
 
109
.. note:: Although the source is in a folder beginning with ``manual``,
 
110
          that gets replaced with ``html`` for installation.
 
111
 
 
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.
 
116
 
 
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::
 
121
 
 
122
    sudo apt-get install python-pip
 
123
 
 
124
Once that is installed you can install the theme with::
 
125
 
 
126
    sudo pip install sphinx-rtd-theme
 
127
 
 
128
This will take care of installing the theme and it's dependencies.
 
129
 
 
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.
 
133
 
 
134
-----------------------------
 
135
Testing
 
136
-----------------------------
 
137
 
 
138
Just use it, explore the features, and complain when they don't work.
 
139
 
 
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.
 
144
 
 
145
I'm particularly interested in cases where I can't even see that
 
146
something is an issue, such as:
 
147
 
 
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.
 
155
 
 
156
-----------------------------
 
157
Bugs
 
158
-----------------------------
 
159
 
 
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
 
164
  enough.
 
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.
 
169
 
 
170
See https://bugs.launchpad.net/terminator
 
171
 
 
172
-----------------------------
 
173
Plugins
 
174
-----------------------------
 
175
 
 
176
Ahem... Yeah... More coding...  
 
177
 
 
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.
 
180
 
 
181
-----------------------------
 
182
Main Application Development
 
183
-----------------------------
 
184
 
 
185
Oh come on... Coding? Again!
 
186
 
 
187
I see lots of people say how Terminator is really good, and it is,
 
188
but like anything, it could be better!
 
189
 
 
190
To give an idea, as I write this manual in July 2015, there are 83
 
191
`wishlist items`_.
 
192
 
 
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
 
201
          merged.
 
202
 
 
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,
 
205
looks like this::
 
206
 
 
207
    Enhancements which may, or may not, have a wishlist item
 
208
    ========================================================
 
209
    Finish the WIP window icons
 
210
 
 
211
    Add a list of the default keybindings to the Preferences -> Keybindings window?
 
212
 
 
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.
 
218
 
 
219
    Add an appindicator menu for launching sessions.
 
220
 
 
221
    Layout Launcher
 
222
        Could bind the shortcut as a global toggle to hide show
 
223
        Could save
 
224
            window position/size
 
225
            hidden status
 
226
            always on top
 
227
            pin to visible workspace
 
228
 
 
229
    Layout needs to save/load more settings
 
230
        Per layout?
 
231
            Group mode status (all, group, off)
 
232
            Split to this group
 
233
            Autoclean groups
 
234
        Per window
 
235
            always on top
 
236
            pin to visible workspace
 
237
        Per tab
 
238
        Per terminal
 
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?)
 
241
 
 
242
    A per layout "save on exit" option to always remember last setup/positions etc. Probably requires above to be done first.
 
243
 
 
244
    Preferences
 
245
        Layouts
 
246
            Have changing widgets depending on what is selected in the tree
 
247
            Terminal title editable
 
248
 
 
249
    Config
 
250
        Items should be sorted for saving. Easier for comparing and spotting changes.
 
251
 
 
252
    Give plugins ability to register shortcuts
 
253
 
 
254
    Missing shortcuts:
 
255
        Context menu (in addition to Windows menu button - not always available on all keyboards)
 
256
        Group menu
 
257
        Open preferences
 
258
        Open a shortcut help overlay
 
259
        Change tab text (#1054300-patch), titlebar text, group name
 
260
        Toggle titlebar visibility
 
261
        Equalise the splitters
 
262
        Launch help (F1)
 
263
        Zoom +receiver in/out/reset
 
264
        Zoom all in/out/reset
 
265
        Last terminal (again to jump back to original) #1440049
 
266
 
 
267
    Drag and Drop
 
268
        Terminal without target opens new window
 
269
        Tab to different/new window depending on target
 
270
 
 
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
 
275
 
 
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.
 
278
 
 
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
 
286
 
 
287
    Split with command / Inherit command/workdir/groups etc
 
288
 
 
289
    Somehow make Layout Launcher, Preferences, & poss. Custom Commands singleton/borg (possibly use dbus)
 
290
 
 
291
    Custom Commands is blocking, perhaps make non-blocking
 
292
 
 
293
    Button in prefs to duplicate a layout
 
294
 
 
295
    Check widget for close_button_on_tab in prefs.
 
296
 
 
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
 
300
 
 
301
    Limit broadcast group/all to current tab
 
302
 
 
303
    Broadcast off when maximised or zoomed to single term
 
304
 
 
305
    All non main windows to be changed to glade files
 
306
 
 
307
    For me the two different sets of next/prev shortcuts are a bit of a mystery.
 
308
 
 
309
    Add preselection to the profile tab
 
310
 
 
311
    Figure out how to get the tree view to jump to selected row for prefseditor
 
312
 
 
313
    Ability to insert window, titlebar, or group value into terminal(s)
 
314
 
 
315
    Let window title = terminal titlebar - perhaps other combos. Some kind of %T %G %W substitution?
 
316
 
 
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.
 
319
 
 
320
    Add large action/status icons for when titlebar is bigger.
 
321
 
 
322
 
 
323
    Issues encountered which may, or may not, already have an LP bug
 
324
    ================================================================
 
325
 
 
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.
 
329
 
 
330
    BUG: Ctrl+right-click-drag does not work. Can initiate drag, but no targets work.
 
331
 
 
332
    BUG: Zoom and maximise do not work if single terminal in a tab, gtk2 & gtk3.
 
333
 
 
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)
 
335
 
 
336
    BUG: With longer translations the buttons in the prefs sidebars can get chopped off.
 
337
 
 
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.
 
342
 
 
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.
 
349
 
 
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.
 
352
 
 
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
 
354
 
 
355
-----------------------------
 
356
GTK3 Port
 
357
-----------------------------
 
358
 
 
359
Last coding one, I promise!
 
360
 
 
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.
 
365
 
 
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.
 
369
 
 
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.
 
378
 
 
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
 
381
were not new enough.
 
382
 
 
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.
 
387
 
 
388
For the record, as of August 2015, with the `gtk3 branch`_ at revision
 
389
1577, these are the outstanding items::
 
390
 
 
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
 
405
 
 
406
    For future with vte0.40+ - reimplment/restore the word_chars stuff.
 
407
 
 
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.
 
411
 
 
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.
 
416
 
 
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
 
420
 
 
421
--------------------------
 
422
API Docs
 
423
--------------------------
 
424
 
 
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.
 
428
 
 
429
`Terminator API docs`_
 
430
 
 
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.
 
436
 
 
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.
 
443
 
 
444
.. _Terminator API docs: ../apidoc/index.html