Compare commits

..

1 Commits

Author SHA1 Message Date
Marcel Hollerbach e800a57821 controls: always focus new button 2 years ago
  1. 7
      .arcconfig
  2. 180
      .circleci/config.yml
  3. 1
      .codecov.yml
  4. 2
      .github/FUNDING.yml
  5. 19
      .github/workflows/coccinelle.yaml
  6. 109
      COLORSCHEMES.md
  7. 69
      ChangeLog
  8. 21
      ChangeLog.theme
  9. 2
      DESIGN.md
  10. 59
      INSTALL
  11. 113
      NEWS
  12. 349
      README.md
  13. 243
      THEME.md
  14. 345
      THEMES.md
  15. 5
      autogen.sh
  16. 75
      data/colorschemes/Belafonte Day.ini
  17. 75
      data/colorschemes/Belafonte Night.ini
  18. 75
      data/colorschemes/Black.ini
  19. 75
      data/colorschemes/Cobalt2.ini
  20. 76
      data/colorschemes/Default.ini
  21. 75
      data/colorschemes/Dracula.ini
  22. 75
      data/colorschemes/Fahrenheit.ini
  23. 78
      data/colorschemes/Fir Dark.ini
  24. 75
      data/colorschemes/Material.ini
  25. 74
      data/colorschemes/Mild.ini
  26. 74
      data/colorschemes/Mustang.ini
  27. 74
      data/colorschemes/Nord.ini
  28. 74
      data/colorschemes/Ocean Dark.ini
  29. 75
      data/colorschemes/One Dark.ini
  30. 75
      data/colorschemes/PaleNight.ini
  31. 74
      data/colorschemes/PaperColor.ini
  32. 74
      data/colorschemes/Smyck.ini
  33. 75
      data/colorschemes/Soft Era.ini
  34. 74
      data/colorschemes/Solarized Light.ini
  35. 74
      data/colorschemes/Solarized.ini
  36. 75
      data/colorschemes/Tango Dark.ini
  37. 75
      data/colorschemes/Tango Light.ini
  38. 75
      data/colorschemes/Tomorrow Night Burns.ini
  39. 40
      data/colorschemes/add_color_scheme.sh
  40. 78
      data/colorschemes/gen_faint.py
  41. 21
      data/colorschemes/get_name.py
  42. 115
      data/colorschemes/ini2desc.py
  43. 54
      data/colorschemes/meson.build
  44. 14
      data/desktop/meson.build
  45. 2
      data/desktop/terminology.desktop.in
  46. 1
      data/meson.build
  47. BIN
      data/readme/terminology.png
  48. 37
      data/themes/base16_ocean_dark.edc
  49. 5
      data/themes/black.edc
  50. 196
      data/themes/default.edc
  51. 43
      data/themes/default/about.edc
  52. 1696
      data/themes/default/background.edc
  53. 236
      data/themes/default/base.edc
  54. 42
      data/themes/default/color_preview.edc
  55. 381
      data/themes/default/colors.edc
  56. 17
      data/themes/default/core.edc
  57. 1037
      data/themes/default/cursor.edc
  58. 40
      data/themes/default/fontpreview.edc
  59. 18
      data/themes/default/icon.edc
  60. 23
      data/themes/default/keybinding.edc
  61. 95
      data/themes/default/link.edc
  62. 165
      data/themes/default/media.edc
  63. 90
      data/themes/default/miniview.edc
  64. 387
      data/themes/default/sel.edc
  65. 909
      data/themes/default/selection.edc
  66. 256
      data/themes/default/tab_drag_thumb.edc
  67. 166
      data/themes/default/tabbar_back.edc
  68. BIN
      data/themes/images/arrow-d-015.png
  69. BIN
      data/themes/images/arrow-d-030.png
  70. BIN
      data/themes/images/arrow-d-060.png
  71. BIN
      data/themes/images/arrow-l-015.png
  72. BIN
      data/themes/images/arrow-l-030.png
  73. BIN
      data/themes/images/arrow-l-060.png
  74. BIN
      data/themes/images/arrow-r-015.png
  75. BIN
      data/themes/images/arrow-r-030.png
  76. BIN
      data/themes/images/arrow-r-060.png
  77. BIN
      data/themes/images/arrow-u-015.png
  78. BIN
      data/themes/images/arrow-u-030.png
  79. BIN
      data/themes/images/arrow-u-060.png
  80. BIN
      data/themes/images/bg_bevel.png
  81. BIN
      data/themes/images/bg_glint.png
  82. BIN
      data/themes/images/bg_glow_in.png
  83. BIN
      data/themes/images/bg_led.png
  84. BIN
      data/themes/images/bg_led_base.png
  85. BIN
      data/themes/images/bg_led_glow.png
  86. BIN
      data/themes/images/bg_led_strobe.png
  87. BIN
      data/themes/images/bg_shadow.png
  88. BIN
      data/themes/images/bg_shadow2.png
  89. BIN
      data/themes/images/bg_shadow3.png
  90. BIN
      data/themes/images/bg_shine.png
  91. BIN
      data/themes/images/bg_shine2.png
  92. BIN
      data/themes/images/bg_shine3.png
  93. BIN
      data/themes/images/bg_shine4.png
  94. BIN
      data/themes/images/bg_shine5.png
  95. BIN
      data/themes/images/checks.png
  96. BIN
      data/themes/images/circle-1200.png
  97. BIN
      data/themes/images/close-015.png
  98. BIN
      data/themes/images/close-030.png
  99. BIN
      data/themes/images/close-060.png
  100. BIN
      data/themes/images/cr_bar_glow.png
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,7 @@
{
"project_id" : "terminology",
"projects" : "terminology",
"conduit_uri" : "https://phab.enlightenment.org/",
"phabricator.uri" : "https://phab.enlightenment.org/",
"repository.callsign" : "TRM"
}

@ -1,129 +1,62 @@
version: 2.1
version: 2
jobs:
checkout_code:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- COLUMNS: 150
- TERM: xterm-256color
steps:
- run: |
cd /terminology
git pull --ff-only
if [ -n "$CIRCLE_PR_NUMBER" ]; then
git fetch origin pull/$CIRCLE_PR_NUMBER/head
fi
if [ -n "$CIRCLE_SHA1" ]; then
git reset --hard $CIRCLE_SHA1
else
if [ -n "$CIRCLE_SHA1" ]; then
git reset --hard $CIRCLE_SHA1
else
git reset --hard origin/master
fi
git reset --hard origin/master
fi
- save_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
paths:
- /terminology
build_and_test_debug_gcc_efl_latest:
build_minimal_gcc_efl-1.22:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: Install EFL
command: apk add /pkg/efl-latest.apk /pkg/efl-dev-latest.apk
command: apk add /pkg/efl-1.22.6-r0.apk /pkg/efl-dev-1.22.6-r0.apk
- run:
name: Compile with GCC
environment:
CFLAGS: -O0 -g
command: |
cd /terminology
meson -Dnls=false -Dtests=true -Dfuzzing=true -Db_coverage=true -Dbuildtype=debug . build
meson . build
meson configure build
cd build
ninja -j4
- run:
name: Launch tests
command: |
cd /terminology
tests/run_tests.sh -v -t build/src/bin/tytest -r tests/tests.results -d tests/
build/src/bin/tytest dummy
build/src/bin/tytest all
- run:
name: codecov
command: |
cd /terminology/build/
cd src/bin
rm -fr *@@terminology@exe *@@tyalpha@exe *@@tybg@exe *@@tycat@exe
rm -fr *@@tyfuzz@exe *@@tyls@exe *@@typop@exe *@@tyq@exe
rm -fr *@@tysend@exe
cd /terminology/build/
curl -s https://codecov.io/bash > .codecov
chmod +x .codecov
sed -i.bak 's/execdir/exec/' .codecov
./.codecov -Z
build_and_test_release_gcc_efl_latest:
build_minimal_gcc_efl-1.23:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: Install EFL
command: apk add /pkg/efl-latest.apk /pkg/efl-dev-latest.apk
command: apk add /pkg/efl-1.23.3-r2.apk /pkg/efl-dev-1.23.3-r2.apk
- run:
name: Compile with GCC
environment:
CFLAGS: -O0 -g
command: |
cd /terminology
meson -Dnls=false -Dtests=true -Dbuildtype=release . build
meson configure build
cd build
ninja -j4
- run:
name: Launch tests
command: |
cd /terminology
tests/run_tests.sh -v -t build/src/bin/tytest -r tests/tests.results -d tests/
build/src/bin/tytest dummy
build/src/bin/tytest all
build_full_clang_efl_latest:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- CC: clang
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: Install EFL
command: apk add /pkg/efl-latest.apk /pkg/efl-dev-latest.apk
- run:
name: Compile with Clang
command: |
cd /terminology
meson -Dnls=false -Dtests=true -Dfuzzing=true . build
meson . build
meson configure build
cd build
ninja -j4
build_and_test_clang_asan_efl_latest:
build_and_test_debug_gcc_efl_latest:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- CC: clang
- CFLAGS: -O0 -pipe -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize-recover=address
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
@ -131,10 +64,12 @@ jobs:
name: Install EFL
command: apk add /pkg/efl-latest.apk /pkg/efl-dev-latest.apk
- run:
name: Compile with Clang
name: Compile with GCC
environment:
CFLAGS: -O0 -g
command: |
cd /terminology
meson -Dnls=false -Dtests=true . build
meson -Dtests=true -Dfuzzing=true -Db_coverage=true -Dbuildtype=debug . build
meson configure build
cd build
ninja -j4
@ -145,42 +80,22 @@ jobs:
tests/run_tests.sh -v -t build/src/bin/tytest -r tests/tests.results -d tests/
build/src/bin/tytest dummy
build/src/bin/tytest all
build_and_test_clang_msan_efl_latest:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- CC: clang
- CFLAGS: -O0 -pipe -g -fno-omit-frame-pointer -fsanitize=memory -fno-sanitize-recover=memory
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: Install EFL
command: apk add /pkg/efl-latest.apk /pkg/efl-dev-latest.apk
- run:
name: Compile with Clang
command: |
cd /terminology
meson -Dnls=false -Dtests=true . build
meson configure build
cd build
ninja -j4
- run:
name: Launch tests
name: codecov
command: |
cd /terminology
build/src/bin/tytest dummy
build/src/bin/tytest all
build_and_test_clang_lsan_efl_latest:
cd /terminology/build/
cd src/bin
rm -fr *@@terminology@exe *@@tyalpha@exe *@@tybg@exe *@@tycat@exe
rm -fr *@@tyfuzz@exe *@@tyls@exe *@@typop@exe *@@tyq@exe
rm -fr *@@tysend@exe
cd /terminology/build/
curl -s https://codecov.io/bash > .codecov
chmod +x .codecov
sed -i.bak 's/execdir/exec/' .codecov
./.codecov -Z
build_and_test_release_gcc_efl_latest:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- CC: clang
- CFLAGS: -O0 -pipe -g -fno-omit-frame-pointer -fsanitize=leak -fno-sanitize-recover=leak
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
@ -188,10 +103,12 @@ jobs:
name: Install EFL
command: apk add /pkg/efl-latest.apk /pkg/efl-dev-latest.apk
- run:
name: Compile with Clang
name: Compile with GCC
environment:
CFLAGS: -O0 -g
command: |
cd /terminology
meson -Dnls=false -Dtests=true . build
meson -Dtests=true -Dbuildtype=release . build
meson configure build
cd build
ninja -j4
@ -202,14 +119,11 @@ jobs:
tests/run_tests.sh -v -t build/src/bin/tytest -r tests/tests.results -d tests/
build/src/bin/tytest dummy
build/src/bin/tytest all
build_and_test_clang_isan_efl_latest:
build_full_clang_efl_latest:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- CC: clang
- CFLAGS: -O0 -pipe -g -fno-omit-frame-pointer -fsanitize=integer -fno-sanitize-recover=integer
- COLUMNS: 150
- TERM: xterm-256color
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
@ -220,25 +134,16 @@ jobs:
name: Compile with Clang
command: |
cd /terminology
meson -Dnls=false -Dtests=true . build
meson -Dtests=true -Dfuzzing=true . build
meson configure build
cd build
ninja -j4
- run:
name: Launch tests
command: |
cd /terminology
tests/run_tests.sh -v -t build/src/bin/tytest -r tests/tests.results -d tests/
build/src/bin/tytest dummy
build/src/bin/tytest all
build_and_test_clang_ubsan_efl_latest:
docker:
- image: borisfaure/terminology-ci:latest
environment:
- CC: clang
- CFLAGS: -O0 -pipe -g -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=undefined
- COLUMNS: 150
- TERM: xterm-256color
- CFLAGS: -O0 -pipe -g -fno-omit-frame-pointer -fsanitize=undefined,float-divide-by-zero,unsigned-integer-overflow,implicit-conversion,local-bounds,nullability -fno-sanitize-recover=undefined,float-divide-by-zero,unsigned-integer-overflow,implicit-conversion,local-bounds,nullability
steps:
- restore_cache:
key: checkout-{{ .Environment.CIRCLE_SHA1 }}
@ -249,7 +154,7 @@ jobs:
name: Compile with Clang
command: |
cd /terminology
meson -Dnls=false -Dtests=true . build
meson -Dtests=true . build
meson configure build
cd build
ninja -j4
@ -266,22 +171,19 @@ workflows:
build-and-deploy:
jobs:
- checkout_code
- build_and_test_debug_gcc_efl_latest:
- build_minimal_gcc_efl-1.22:
requires:
- checkout_code
- build_and_test_release_gcc_efl_latest:
requires:
- checkout_code
- build_full_clang_efl_latest:
- build_minimal_gcc_efl-1.23:
requires:
- checkout_code
- build_and_test_clang_asan_efl_latest:
- build_and_test_debug_gcc_efl_latest:
requires:
- checkout_code
- build_and_test_clang_msan_efl_latest:
- build_and_test_release_gcc_efl_latest:
requires:
- checkout_code
- build_and_test_clang_lsan_efl_latest:
- build_full_clang_efl_latest:
requires:
- checkout_code
- build_and_test_clang_ubsan_efl_latest:

@ -1,2 +1,3 @@
fixes:
- "../::"
- "/terminology/::"

@ -1 +1 @@
github: borisfaure
github: billiob

@ -1,19 +0,0 @@
name: coccinelle
on: [push]
jobs:
coccinelle:
runs-on: ubuntu-22.04
steps:
- name: install coccinelle
run: |
sudo apt update
sudo apt upgrade -y
sudo apt install -y coccinelle
- name: Checkout
uses: actions/checkout@v3
with:
token: ${{ github.token }}
- name: coccinelle check
run: scripts/coccinelle/coccicheck.sh

@ -1,109 +0,0 @@
# Color Schemes in Terminology
Terminology uses color schemes to define the usual colors used by terminal
applications, and a bit more: color schemes can also have an impact on the
theme used.
# Configuration file
The colorschemes are stored in EET format for speed up and ease of
development.
This format being a bit cumbersome to edit, color schemes can be edit in an
easy INI format described below.
One can have a look at `data/color_schemes/Default.ini` for an example.
## Organisation of the file
The INI format is made of sections, where the name appears in square brackets
(`[` and `]`), that contain keys. Every key has a name and a value, delimited
by an equals sign (`=`).
Those value have 3 types:
* integers, mostly used to describe versions,
* strings, surrounded by double quotes (`"`) or not,
* colors, described as hex color codes, with or without alpha channels, like
`#00ffcc` or `#00ff00aa`.
Semicolons (`;`) at the beginning of the line indicate a comment.
The color scheme file contains the following sections that are mandatory:
`Main`, `Metadata`, `Colors`, `Normal`, `Bright`, `Faint` and `BrightFaint`.
## `Main`
This section has only one field `version` with a default of `1`.
In case the format has to change, this value will change.
## `Metadata`
This describes everything that is related to the color scheme but is not
actually a color!
The fields are the following:
* `version`: an integer, this is the version of the color scheme itself
* `name` is the name of the color scheme. It is expected to be the same as the
file name without the `.ini` extension
* `author`: who made this color scheme
* `website`
* `license`: the short code of an opensource-approved license as listed on
https://spdx.org/licenses/
## `Colors`
This section describes colors used in the UI. The fields are:
* `bg`: the background color of the terminal
* `main`: this color is used as the main color for cursor and various effects
on the terminal, like change of border on focus …
* `hl`: a color used for an object or text when being highlighted. Usually
surrounded by the `main` color.
* `end_sel`: on selections, the color of the handles used to expand or shrink
the area of the selection
* `tab_missed_1`, `tab_missed_2`, `tab_missed_3`: the main color, the outline
color and the shadow color of the number of tabs where a bell has rung, tabs
that need attention.
* `tab_missed_over_1`, `tab_missed_over_2`, `tab_missed_over_3`: same as
before but when the mouse is over that number
* `tab_title_2`: the outline color of the active tab title. The foreground
used is `Normal.def` and the shadow is `bg`.
## `Normal`, `Bright`, `Faint`, `BrightFaint`
All those sections offer the same set of colors.
`Normal` are the base colors. `Bright` are a brighter version of the `Normal`
colors, while `Faint` are a dimer version of the `Normal` colors. Finally,
`BrightFaint` are a dimer version of the `Bright` colors.
They all have those fields:
* `def`: the default foreground color
* `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan` and `white` are
self-explanatory
* `inverse_fg` and `inverse_fg` are the colors used when espace codes are used
to reverse background and foreground. Sometimes used to display selections
by the terminal applications
# How to add a new color scheme
First, one has to write a color scheme file as described above. Let's say we
are creating the color scheme `FooBar` stored in file `FooBar.ini`.
The `Faint` and `BrightFaint` version can be generated by using the
`gen_faint.py` script stored in `data/color_schemes/` as seen below:
`gen_faint.py FooBar.ini`
What this script does is to pick the colors from `Normal` and `Bright` and
merge them with the background color (`Colors.bg`) in a 70/30 proportion. This
proportion is configurable, like this for a 80/20 proportion:
`gen_faint.py FooBar.ini 80`
Now that we are happy with the content of `FooBar.ini`, we can call
the script `add_color_scheme.sh` stored in `data/color_schemes/` as seen
below:
`add_color_scheme.sh eet ~/.config/terminology/colorschemes/FooBar.eet FooBar.ini`
Now you should be able to select your color scheme in Terminology!

@ -1,72 +1,3 @@
2022-01-03
* Release v1.12.1
* Build and install Default colorscheme
* Correctly set the version
2022-01-02
* Release v1.12.0
* New default theme!
* Support EFL 1-26 or newer only
* Colorschemes generate their own configuration file, allowing for
easy management of outside contributions
2021-11-11
* Release v1.11.0
* Support for focus reporting escape codes
* Translation updates for Finnish and Ukrainian
* Fix handling of escape code OSC 11
2021-10-03
* Release v1.10.0
* Colorshemes: add Black scheme
* New translations: Sinhala, Hebrew
* Translation updates for Chinese (Simplified), Croatian, Danish,
French, Greek, Italian, Norwegian Bokmål, Polish, Portuguese,
Portuguese (Brazil), Russian, Spanish, Swedish, Ukrainian
* Focus font search in the Font settings panel
* Fix issue when configuration was marked as Temporary
* Stop jumping down to the botton when configuration changed
* Respect login shell on start
* Fix drag'n'drop of paths or media on the terminal
* Fix libintl detection
2021-01-18
* Release v1.9.0
* Colorshemes: easily change the colors of the terminal
* Add the following color schemes: Tango Dark, Tango light, Dracula,
Belafonte Day, Belafonte Night, Material, Fahrenheit, Tomorrow Night
Burns, PaleNight, Soft Era, One Dark, Cobalt2
* New translations: Chinese (Simplified), Japanese, Norwegian Bokmål,
Russian and Ukrainian
* Handle OSC 12 to change the cursor color
* Translation updates for Catalan, Croatian, Danish, Dutch, French,
German, Italian, Spanish
* Add font search in the fonts panel
* Set TERM to xterm_256color by default
* Focus simplifications when going into the settings
* Tests: better compatibility with debian-based systems
* Fix tyls with png/jpg thumbnails
2020-08-11
* Release v1.8.1
* Be stricter on which characters can be considered wide or not
* Apply change about hiding mouse pointer after idle time on all
terminals
2020-07-26
* Release v1.8.0
* Small framework to add unit tests
* Display tooltips on when hovering color descriptions
* Handle OSC 10/11 to change/get background and foreground colors
* Reworked build system for testing and fuzzing
* Use of switch-case constructs when home-made binary search was not
efficient
* Support EFL 1-22 or newer only
* Larger list of word separators when doing word-selection
* Reworked the Settings panel to add one panel on Mouse interactions
* Handle Emoji characters as double-width, following Unicode 13.0
* Fix issues detected by UndefinedBehavior Sanitizer
2020-05-10
* Release v1.7.0
* Terminology is packaged on the snapstore at https://snapcraft.io/terminology

@ -1,21 +1,6 @@
==================
Terminology 1.12.1
==================
Changes since 1.12.1:
--------------------
* Add part "terminology.fade" in group "terminology/core" to set the color
used to fade the background of the terminal. Terminology sets it to the
background color of the colorscheme.
Changes since 1.11.0:
--------------------
* New default theme!
Changes since 1.8.0:
--------------------
* Add group "terminology/color_preview" to display a preview of a
colorscheme.
=================
Terminology 1.8.0
=================
Changes since 1.7.0:
--------------------

@ -1,4 +1,4 @@
A simple documentation to navigate through the C files:
A simple documentation to navige through the C files:
* `src/bin/about.c` handles the About widget
* `src/bin/backlog.c`: backlog handling

@ -0,0 +1,59 @@
** COMPILING and INSTALLING **
------------------------------
Meson is the build system used for this project. For more information please
see:
http://mesonbuild.com
----
Normal compilation in /usr/local:
meson . build
ninja -C build
sudo ninja -C build install
For meson build generic options:
meson --help
For a list of project specific options supported:
cat meson_options.txt
To set 1 or more project specific options:
meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build
To display current configuration:
meson configure build
The above will only work after at least the following is done:
meson . build
** QUICK AND DIRTY HELP **
--------------------------
How clean out the build and config and start fresh:
rm -rf build
How to make a dist tarball and check its build:
(must do it from git tree clone and commit all changes to git first)
ninja -C build dist
How to change prefix:
meson --prefix=/path/to/prefix . build
How to install in a specific destination directory for packaging:
DESTDIR=/path/to/destdir ninja -C build install
How to build with verbose output (full commands run):
ninja -C build -v

113
NEWS

@ -1,113 +1,6 @@
==================
Terminology 1.12.1
==================
Changes since 1.12.0:
--------------------
Fixes:
* Build and install Default colorscheme
* Correctly set the version
Changes since 1.11.0:
--------------------
Additions:
* New default theme!
Improvements:
* Support EFL 1-26 or newer only
* Colorschemes generate their own configuration file, allowing for easy
management of outside contributions
Changes since 1.10.0:
--------------------
Additions:
* Support for focus reporting escape codes
Improvements:
* Translation updates for Finnish and Ukrainian
Fixes:
* Fix handling of escape code OSC 11
Changes since 1.9.0:
--------------------
Additions:
* Colorshemes: add Black scheme
* New translations: Sinhala, Hebrew
Improvements:
* Translation updates for Chinese (Simplified), Croatian, Danish, French,
Greek, Italian, Norwegian Bokmål, Polish, Portuguese,
Portuguese (Brazil), Russian, Spanish, Swedish, Ukrainian
* Focus font search in the Font settings panel
Fixes:
* Fix issue when configuration was marked as Temporary
* Stop jumping down to the botton when configuration changed
* Respect login shell on start
* Fix drag'n'drop of paths or media on the terminal
* Fix libintl detection
Changes since 1.8.1:
--------------------
Additions:
* Colorshemes: easily change the colors of the terminal
* Add the following color schemes: Tango Dark, Tango light, Dracula,
Belafonte Day, Belafonte Night, Material, Fahrenheit, Tomorrow Night
Burns, PaleNight, Soft Era, One Dark, Cobalt2
* New translations: Chinese (Simplified), Japanese, Norwegian Bokmål,
Russian and Ukrainian
* Handle OSC 12 to change the cursor color
Improvements:
* Translation updates for Catalan, Croatian, Danish, Dutch, French,
German, Italian, Spanish
* Add font search in the fonts panel
* Set TERM to xterm_256color by default
* Focus simplifications when going into the settings
* Tests: better compatibility with debian-based systems
Fixes:
* Fix tyls with png/jpg thumbnails
Changes since 1.8.0:
--------------------
Fixes:
* Be stricter on which characters can be considered wide or not
* Apply change about hiding mouse pointer after idle time on all terminals
Changes since 1.7.0:
--------------------
Additions:
* Small framework to add unit tests
* Display tooltips on when hovering color descriptions
* Handle OSC 10/11 to change/get background and foreground colors
Improvements:
* Reworked build system for testing and fuzzing
* Use of switch-case constructs when home-made binary search was not
efficient
* Support EFL 1-22 or newer only
* Larger list of word separators when doing word-selection
* Reworked the Settings panel to add one panel on Mouse interactions
* Handle Emoji characters as double-width, following Unicode 13.0
Fixes:
* Fix issues detected by UndefinedBehavior Sanitizer
=================
Terminology 1.7.0
=================
Changes since 1.6.0:
--------------------

@ -1,165 +1,160 @@
![Terminology](/data/readme/terminology.png)
# Terminology
Terminology 1.7.0
=================
-----
This is an EFL terminal emulator with some extra bells and whistles.
*Please report bugs/issues at*
[git.enlightenment.org](https://git.enlightenment.org/enlightenment/terminology/issues)
:warning: :warning: :warning:
-----
> FOR ANY ISSUES, PLEASE CONSULT THEM ON
> http://issues.terminolo.gy/
:warning: :warning: :warning:
[![Coverity](https://scan.coverity.com/projects/terminology/badge.svg)](https://scan.coverity.com/projects/terminology)
[![CircleCI](https://circleci.com/gh/borisfaure/terminology.svg?style=shield)](https://circleci.com/gh/borisfaure/terminology)
[![Codecov](https://codecov.io/gh/borisfaure/terminology/branch/master/graph/badge.svg)](https://codecov.io/gh/borisfaure/terminology)
[![CircleCI](https://circleci.com/gh/billiob/terminology.svg?style=shield)](https://circleci.com/gh/billiob/terminology)
[![codecov](https://codecov.io/gh/billiob/terminology/branch/master/graph/badge.svg)](https://codecov.io/gh/billiob/terminology)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/49a51811016a44279cb969af82cd246f)](https://www.codacy.com/app/billiob/terminology)
[![Twitter: _Terminology_](https://img.shields.io/twitter/follow/_Terminology_?style=social)](https://twitter.com/_Terminology_)
[![Snapcraft](https://snapcraft.io//terminology/badge.svg)](https://snapcraft.io/terminology)
[![Weblate](https://hosted.weblate.org/widgets/terminology/-/terminology/svg-badge.svg)](https://hosted.weblate.org/engage/terminology/)
-----
[![terminology](https://snapcraft.io//terminology/badge.svg)](https://snapcraft.io/terminology)
This is an EFL terminal emulator with some extra bells and whistles
such as the ability to display in-line images, video and even play
music files, background images, videos, Z-Modem like sending (e.g. SSH
into a server and use tysend to send a file back to the local
terminal), GPU Accelerated rendering (optional - just set the
EFL Elementary toolkit engine to use OpenGL) and much more.
Requirements
------------
## Requirements
* [efl](https://git.enlightenment.org/enlightenment/efl)
* `efl` (>= 1.22.0)
Please see http://www.enlightenment.org for information on these.
## Compiling
Once you have met requirements, compiling and installing are simple:
Compiling
---------
``` sh
meson build
ninja -C build
sudo ninja -C build install
```
Once you have met requirements, compiling and installing is simple:
At the end of this file is more complete information on cimpiling and
installing.
```sh
meson build
cd build
ninja
ninja install
```
**NOTE:** to make terminology work with input methods in general you need:
Note: to make terminology work with input methods in general you need:
``` sh
export ECORE_IMF_MODULE="xim"
export XMODIFIERS="@im=none"
```sh
export ECORE_IMF_MODULE="xim"
export XMODIFIERS="@im=none"
```
## Themes
Mouse controls
--------------
* `Right mouse button` = controls menu
* `Middle mouse button` = paste highlight selection
* `Left mouse button/drag` = make highlight
* `Wheel` = scroll up or down in history
* `Ctrl+Wheel` = zoom font size up/down
* `Ctrl+Left mouse button/drag` = make block selection highlight
Default key controls
--------------------
* `Shift+PgUp` = Scroll 1 page up
* `Shift+PgDn` = Scroll 1 page down
* `Shift+Up` = Scroll 1 line up
* `Shift+Down` = Scroll 1 line down
* `Shift+Home` = Scroll to the top of the backlog
* `Shift+End` = Reset scroll
* `Shift+Left` = switch focus to previous terminal inside a window
* `Shift+Right` = switch focus to next terminal inside a window
* `Shift+Insert` = Paste Clipboard (`ctrl+v/c`) selection
* `Shift+Ctrl+Insert` = Paste Primary (highlight) selection
* `Shift+Keypad-Plus` = Font size up 1
* `Shift+Keypad-Minus` = Font size down 1
* `Shift+Keypad-Multiply` = Reset font size
* `Shift+Keypad-Divide` = Copy highlight to Clipboard (same as `Ctrl+c` in gui apps)
* `Ctrl+PgUp` = switch focus to previous terminal inside a window
* `Ctrl+PgDn` = switch focus to next terminal inside a window
* `Ctrl+Shift+t` = create new terminal on top of current inside window (tabs)
* `Ctrl+Shift+End` = close the focused terminal.
* `Ctrl+Shift+h` = toggle displaying the miniview of the history
* `Ctrl+Shift+Home` = bring up "tab" switcher
* `Ctrl+Shift+PgUp` = split terminal horizontally (1 term above the other)
* `Ctrl+Shift+PgDn` = split terminal vertically (1 term to the left of the other)
* `Ctrl+Shift+c` = copy current selection to clipboard
* `Ctrl+Shift+v` = paste current clipboard selection
* `Alt+Home` = Enter command mode (enter commands to control terminology itself)
* `Alt+Return` = Paste primary selection
* `Alt+g` = Group input: send input to all visible terminals in the window
* `Alt+Shift+g` = Group input: send input to all terminals in the window
* `Alt+w` = Copy selection to primary
* `Alt+Up` = Focus the terminal above
* `Alt+Down` = Focus the terminal below
* `Alt+Left` = Focus the terminal on the left
* `Alt+Right` = Focus the terminal on the right
* `Ctrl+Alt+Equal` = Font size up 1
* `Ctrl+Alt+Minus` = Font size down 1
* `Ctrl+Alt+0` = Reset font size
* `Ctrl+Alt+9` = Big font size
* `Ctrl+Alt+t` = Set terminal title
* `Ctrl+1` = switch to terminal tab 1
* `Ctrl+2` = switch to terminal tab 2
* `Ctrl+3` = switch to terminal tab 3
* `Ctrl+4` = switch to terminal tab 4
* `Ctrl+5` = switch to terminal tab 5
* `Ctrl+6` = switch to terminal tab 6
* `Ctrl+7` = switch to terminal tab 7
* `Ctrl+8` = switch to terminal tab 8
* `Ctrl+9` = switch to terminal tab 9
* `Ctrl+0` = switch to terminal tab 10
Themes
------
Apart from the ones shipped with Terminology, themes can be stored in
`~/.config/terminology/themes/`.
Documentation on themes is written in [THEMES.md](THEMES.md).
## Color Schemes
Terminology ships with some common color schemes.
To know how to modify or add some new color schemes, please read
[COLORSCHEMES.md](COLORSCHEMES.md).
## Mouse controls
* `Right mouse button` = controls menu
* `Middle mouse button` = paste highlight selection
* `Left mouse button/drag` = make highlight
* `Wheel` = scroll up or down in history
* `Ctrl+Wheel` = zoom font size up/down
* `Ctrl+Left mouse button/drag` = make block selection highlight
## Default key controls
* `Shift+PgUp` = Scroll 1 page up
* `Shift+PgDn` = Scroll 1 page down
* `Shift+Up` = Scroll 1 line up
* `Shift+Down` = Scroll 1 line down
* `Shift+Home` = Scroll to the top of the backlog
* `Shift+End` = Reset scroll
* `Shift+Left` = switch focus to previous terminal inside a window
* `Shift+Right` = switch focus to next terminal inside a window
* `Shift+Insert` = Paste Clipboard (`ctrl+v/c`) selection
* `Shift+Ctrl+Insert` = Paste Primary (highlight) selection
* `Shift+Keypad-Plus` = Font size up 1
* `Shift+Keypad-Minus` = Font size down 1
* `Shift+Keypad-Multiply` = Reset font size
* `Shift+Keypad-Divide` = Copy highlight to Clipboard (same as `Ctrl+c` in gui apps)
* `Ctrl+PgUp` = switch focus to previous terminal inside a window
* `Ctrl+PgDn` = switch focus to next terminal inside a window
* `Ctrl+Shift+t` = create new terminal on top of current inside window (tabs)
* `Ctrl+Shift+End` = close the focused terminal.
* `Ctrl+Shift+h` = toggle displaying the miniview of the history
* `Ctrl+Shift+Home` = bring up "tab" switcher
* `Ctrl+Shift+PgUp` = split terminal horizontally (1 term above the other)
* `Ctrl+Shift+PgDn` = split terminal vertically (1 term to the left of the other)
* `Ctrl+Shift+c` = copy current selection to clipboard
* `Ctrl+Shift+v` = paste current clipboard selection
* `Alt+Home` = Enter command mode (enter commands to control terminology itself)
* `Alt+Return` = Paste primary selection
* `Alt+g` = Group input: send input to all visible terminals in the window
* `Alt+Shift+g` = Group input: send input to all terminals in the window
* `Alt+w` = Copy selection to primary
* `Alt+Up` = Focus the terminal above
* `Alt+Down` = Focus the terminal below
* `Alt+Left` = Focus the terminal on the left
* `Alt+Right` = Focus the terminal on the right
* `Ctrl+Alt+Equal` = Font size up 1
* `Ctrl+Alt+Minus` = Font size down 1
* `Ctrl+Alt+0` = Reset font size
* `Ctrl+Alt+9` = Big font size
* `Ctrl+Alt+t` = Set terminal title
* `Ctrl+1` = switch to terminal tab 1
* `Ctrl+2` = switch to terminal tab 2
* `Ctrl+3` = switch to terminal tab 3
* `Ctrl+4` = switch to terminal tab 4
* `Ctrl+5` = switch to terminal tab 5
* `Ctrl+6` = switch to terminal tab 6
* `Ctrl+7` = switch to terminal tab 7
* `Ctrl+8` = switch to terminal tab 8
* `Ctrl+9` = switch to terminal tab 9
* `Ctrl+0` = switch to terminal tab 10
## Companion tools
`~/.config/terminology/themes/` .
Companion tools
---------------
Terminology ships with a set of tools to help you get the best out of
Terminology.
* `tyls`: list directory contents with bells and whistles
* `tyalpha`: set transparency level of the background
* `tybg`: change the background image
* `tycat`: display inline a media file or a URI
* `typop`: display in a popup a media file or a URI
* `tyq`: queue media files or URI to be popped up
* `tysend`: send files to the terminal (useful through ssh)
* `tyls`: list directory contents with bells and whistles
* `tyalpha`: set transparency level of the background
* `tybg`: change the background image
* `tycat`: display inline a media file or a URI
* `typop`: display in a popup a media file or a URI
* `tyq`: queue media files or URI to be popped up
* `tysend`: send files to the terminal (useful through ssh)
## Extended escapes for terminology only
Extended escapes for terminology only
--------------------------------------
`[\033][}][COMMAND][\000]`
i.e.
1. `ESC` char (`\033` or `0x1b`)
2. `}` char
3. a sequence of UTF8 chars other than `nul` (`\000` or `0x00`).
4. `\000` char (`nul` byte or `0x00` to indicate end of sequence)
1. `ESC` char (`\033` or `0x1b`)
2. `}` char
3. a sequence of UTF8 chars other than `nul` (`\000` or `0x00`).
4. `\000` char (`nul` byte or `0x00` to indicate end of sequence)
e.g.
``` sh
`echo -n '\033}Hello world\000'`
```
## Commands
In the following, any values inside square brackets `[]` are to be replaced
by some content (numbers, strings, paths, url's etc.).
Examples:
examples:
* `aa[PATH-OF-FILE]` should become something like: `aa/tmp/file.png`
* `aa[true/false]` should become something like: `aatrue` or `aafalse`
* `aa[PATH-OF-FILE]` should become something like: `aa/tmp/file.png`
* `aa[true/false]` should become something like: `aatrue` or `aafalse`
## Available commands
@ -212,7 +207,7 @@ Examples:
destination URI when a user may click on the given media image.
example:
``` sh
```sh
printf("\033}is#5;3;%s\000"
"\033}ib\000#####\033}ie\000\n"
"\033}ib\000#####\033}ie\000\n"
@ -338,107 +333,3 @@ Examples:
* `fx`
exit file send mode (normally at the end of the file or when it's
complete)
## Compiling and Installing
Meson is the build system used for this project. For more information
please see [mesonbuild.com](https://mesonbuild.com)
You will need normal build tooling installed such as a compiler (gcc
or clang for example), pkg-config, ninja, any relevant package-dev or
package-devel packages if your distribution splits out development
headers (e.g. libc6-dev) etc.
Depending on where dependencies (like efl) are installed, you might have to
set your `PKG_CONFIG_PATH` environment variable like:
```sh
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
```
Also note that some distributions like to add extra arch directories
to your library locations so you might have to have more like:
```sh
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig
```
You will need to ensure that the destination library directory (e.g.
`/usr/local/lib` is in your /etc/ld.so.conf or /etc/ld.so.conf.d/
files and after installing anything that installs libraries you
re-run `ldconfig`. Please see relevant documentation on ldconfig and
ld.so.conf for your distribution.
You might also want to add the destination bin dir to your environment
variable PATH (see documentation on your shell PATH variable) such as:
```sh
export PATH=/usr/local/bin:/usr/bin:/bin
```
Normal compilation in /usr/local:
```sh
meson . build
ninja -C build
sudo ninja -C build install
```
For meson build generic options:
```sh
meson --help
```
For a list of project specific options supported:
```sh
cat meson_options.txt
```
To set 1 or more project specific options:
```sh
meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build
```
To display current configuration:
```sh
meson configure build
```
The above will only work after at least the following is done:
```sh
meson . build
```
### Quick build help
How to clean out the build and config and start fresh:
```sh
rm -rf build
```
How to make a dist tarball and check its build:
(must do it from git tree clone and commit all changes to git first)
```sh
ninja -C build dist
```
How to change prefix:
```sh
meson --prefix=/path/to/prefix . build
```
How to install in a specific destination directory for packaging:
```sh
DESTDIR=/path/to/destdir ninja -C build install
```
How to build with verbose output (full commands run):
```sh
ninja -C build -v
```
## Running on framebuffer
Terminology can run on the framebuffer, if EFL is compiled with ``fb`` or
``drm`` support.
Then the following environment need to be set:
* ``ELM_DISPLAY=fb``
* ``ELM_ACCEL=none``
* ``EVAS_FB_DEV=/dev/fb0``

@ -0,0 +1,243 @@
This document describes how Terminology interacts with themes and what needs
to be handled by themes.
See `ChangeLog.theme` on changes related to themes.
Windows contain group `terminology/base`.
# `terminology/base`
Contains what is global to a window.
## Swallowed parts
### `terminology.content`
where `terminology/background`, or a split widget can be swallowed.
### `terminology.cmdbox`
To swallow a command box.
It reacts to the following signals:
* `cmdbox,show`
* `cmdbox,hide`
### `terminology.about`
It reacts to the following signals:
* `about,show`
* `about,hide`
### `terminology.optdetails`
Detailed settings panel.
It reacts to the following signals:
* `optdetails,show`
* `optdetails,hide`
It emits the following signal:
* `optdetails,hide,done`
### `terminology.options`
It reacts to the following signals:
* `options,show`
* `options,hide`
### `terminology.controls`
The controls box shown on right click.
It reacts to the following signals:
* `controls,show`
* `controls,hide`
# `terminology/background`
## Swallowed parts
### `terminology.content`
Here is swallowed an object of group `terminology.background`.
### TODO
## Special parts
### `tabdrag` and `tabmiddle`
Their geometry are used to adjust drag values.
### `drag_left_outline`, `drag_right_outline`, `drag_top_outline`, `drag_bottom_outline` and `terminology.tabregion`
Their geometry are used to know when the cursor enters them when dragging a
tab.
## Signal received
### `tabbar,off` and `tabbar,on`
Whether to display a tab bar. Default is off.
### `tab_btn,off` and `tab_btn,on`
Whether to display a tab button to easily navigate through tabs. Default is off.
### `drag_left,on`, `drag_right,on`, `drag_top,on`, `drag_bottom,on`
When to start an animation when the cursor enters `drag_XXXX_outline` while
dragging a tab.
### `drag_left,off`, `drag_right,off`, `drag_top,off`, `drag_bottom,off`
When to stop an animation started by the related `*,on` signals.
### `drag_over_tabs,on` and `drag_over_tabs,off`
When the mouse, while dragging a tab, enters or leaves the tab region.
### `grouped,on` and `grouped,off`
When input is broadcast to multiple terminals.
### TODO
## Signal emitted
### `tab,hdrag`
To notify that the current tab is being dragged.
### `tab,drag,stop`
To notify that the current tab is no longer being dragged.
### `tab,drag,move`
To notify that the current tab is being dragged outside of other tabs.
### TODO
# `terminology/core`
## Swallowed parts
### `terminology.background`
Actual background.
It reacts to the following signals based on the media to play in background:
* `media,off`
* `media,image`
* `media,scale`
* `media,edje`
* `media,movie`
### `terminology.tabregion`
Here is swalloed a fully transparent rectangle to move down the textgrid.
### `terminology.content`
Where actual text grid goes.
## Signal received
### `tabbar,off` and `tabbar,on`
Whether to display a tab bar. Default is off.
### `tab_btn,off` and `tab_btn,on`
Whether to display a tab button to easily navigate through tabs. Default is off.
### `hdrag,on` and `hdrag,off`
Whether to restrict (default) horizontal tab drag
## Signal emitted
### `tab,drag` and `tab,drag,stop`
To notify that the current tab is being dragged.
### `tab,mouse,down`
Whenever the left mouse button is pressed on a tab.
# `terminology/about`
## Text parts
### `terminology.text`
The text of the __About__ message.
# `terminology.tabbar_back`
An inactive tab item
## Text parts
### `terminology.title`
Title of the tab.
## Signal emitted
### `tab,activate`
When clicked on it, to notify that the user wants to go to that tab.
## Signal received
### `bell`
To mark the tab as having missed a bell.
### `bell,off`
To unmark the tab as having missed a bell.
### `grouped,on` and `grouped,off`
When input is broadcast to multiple terminals.
# `terminology/keybinding`
__TODO__
# `terminology/miniview`
__TODO__
# `terminology/fontpreview`
__TODO__
# `terminology/selection`
An object used when selecting text.
__TODO__
# `terminology/cursor`
__TODO__
# `terminology/cursor_bar`
__TODO__
# `terminology/cursor_underline`
__TODO__
# `terminology/sel/base`
__TODO__
# `terminology/sel/item`
__TODO__
# `terminology/link`
An object overlayd on text that is a link.
# `terminology/mediabusy`
__TODO__
# `terminology/mediactrl`
__TODO__
# `terminology/tab_drag_thumb`
A thumbnail of a tab being dragged.
## Swallowed parts
### `terminology.content`
Here is swallowed an object of group `terminology.background`.
### `terminology.title`
Title of the tab.
## Signal received
### `bell`
To mark the tab as having missed a bell.
# `terminology/color_preview`
A group to preview a color in a tooltip. The color is defined by the color
class `color_preview`.
## Swallowed part
### `name`
Name of the color being previewed

@ -1,345 +0,0 @@
# Themes in Terminology
This document describes how Terminology interacts with themes and what needs
to be handled by themes.
See `ChangeLog.theme` on changes related to themes.
# Color classes
Based on the chosen color scheme, Terminology sets the following color classes
on all the following edje groups:
* `BG`: the background color of the terminal
* `FG`: the default foreground color
* `CURSOR`: the color of the cursor
* `GLOW`: the color in the UI to ouline elements
* `HIGHLIGHT`: the color used as main color when an element is highlighted
* `GLOW_TXT`: text colors with some glow
* `GLOW_TXT_HIGHLIGHT`: text with glow that is highlighted
* `TAB_MISSED`: the number of tabs where a bell has rung, tabs that need
attention
* `TAB_MISSED_OVER`: same but when the mouse is over that number
* `TAB_TITLE`: the colors of the active tab title
* `BG_SENDFILE` is the background color when there is a sendfile action. See
`man tysend`. It is set to `#404040`.
* `END_SELECTION`: on selections, the color of the handles used to expand or shrink
the area of the selection
* `/fg/normal/term/selection/arrow/left`,
`/fg/normal/term/selection/arrow/down`,
`/fg/normal/term/selection/arrow/up`,
`/fg/normal/term/selection/arrow/right` replace `END_SELECTION` and are used
to control the different arrows used to change the area of the selection
The following table explains how color classes are set from color scheme
values:
| Color Class | Object color | Outline color | Shadow color |
| -------------------- | ---------------- | ---------------- | ------------- |
| `BG` | `Colors.bg` | `Colors.bg` | `Colors.bg` |
| `FG` | `Normal.def` | `Normal.def` | `Normal.def` |
| `CURSOR` | `Colors.main` | `Colors.main` | `Colors.main` |
| `GLOW` | `Colors.main` | `Colors.main` | `Colors.main` |
| `GLOW_TXT_HIGHLIGHT` | `Colors.hl` | `Colors.main` | `Colors.main` |
| `END_SELECTION` | `Colors.end_sel` | `Colors.end_sel` | `Colors.end_sel` |
| `TAB_MISSED` | `Colors.tab_missed_1` | `Colors.tab_missed_2` | `Colors.tab_missed_3` |
| `TAB_MISSED_OVER` | `Colors.tab_missed_1` | `Colors.tab_missed_2` | `Colors.tab_missed_3` |
| `TAB_TITLE` | `Normal.def` | `Colors.tab_title_2` | `Colors.bg` |
| `BG_SENDFILE` | `#404040` | `#404040` | `#404040` |
Let's dive into the edje groups that Terminology uses.
# Group `terminology/base`
All windows contain a group `terminology/base`.
Contains what is global to a window.
## Swallowed parts
### Part `terminology.content`
where `terminology/background`, or a split widget can be swallowed.
### Part `terminology.cmdbox`
To swallow a command box.
It reacts to the following signals:
* `cmdbox,show`
* `cmdbox,hide`
### Part `terminology.about`
It reacts to the following signals:
* `about,show`
* `about,hide`
### Part `terminology.optdetails`
Detailed settings panel.
It reacts to the following signals:
* `optdetails,show`
* `optdetails,hide`
It emits the following signal:
* `optdetails,hide,done`
### Part `terminology.options`
It reacts to the following signals:
* `options,show`
* `options,hide`