terminology/THEMES.md

332 lines
8.6 KiB
Markdown

# 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
* `END_SELECTION`: on selections, the color of the handles used to expand or shrink
the area of the selection
* `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`.
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`
### Part `terminology.controls`
The controls box shown on right click.
It reacts to the following signals:
* `controls,show`
* `controls,hide`
## Special parts
### Part `youtube.txt`
A text part used to hold `YouTube channel` when the About is shown.
### Part `twitter.txt`
A text part used to hold `YouTube channel` when the About is shown.
## Signals emitted
### Signal `about,twitter`
When the Twitter link on the About page is clicked.
### Signal `about,twitter,ctx`
When the Twitter link on the About page is right-clicked.
### Signal `about,youtube`
When the YouTube link on the About page is clicked.
### Signal `about,youtube,ctx`
When the YouTube link on the About page is right-clicked.
### Signal `optdetails,hide,done`
When the swallowed part `terminology.optdetails` is finally hidden.
## Signals received
### Signals `about,show` and `about,hide`
Used to hide or show the about page, swallowed in `terminology.about`.
### Signals `controls,show` and `controls,hide`
Used to hide or show the controls, swallowed in `terminology.controls`.
### Signals `options,show` and `options,hide`
Used to hide or show the options panel, swallowed in `terminology.options`.
### Signals `optdetails,show` and `optdetails,hide`
Used to hide or show the options details settings panel, swallowed in `terminology.optdetails`.
### Signals `cmdbox,show` and `cmdbox,hide`
Used to hide or show the command box, swallowed in `terminology.cmdbox`.
# Group `terminology/background`
## Swallowed parts
### Parts `terminology.content`
Here is swallowed an object of group `terminology.background`.
## Special parts
### Parts `tabdrag` and `tabmiddle`
Their geometry are used to adjust drag values.
### Parts `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.
## Signals received
### Signals `tabbar,off` and `tabbar,on`
Whether to display a tab bar. Default is off.
### Signals `tab_btn,off` and `tab_btn,on`
Whether to display a tab button to easily navigate through tabs. Default is off.
### Signals `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.
### Signals `drag_left,off`, `drag_right,off`, `drag_top,off`, `drag_bottom,off`
When to stop an animation started by the related `*,on` signals.
### Signals `drag_over_tabs,on` and `drag_over_tabs,off`
When the mouse, while dragging a tab, enters or leaves the tab region.
### Signals `grouped,on` and `grouped,off`
When input is broadcast to multiple terminals.
## Signal emitted
### Signal `tab,hdrag`
To notify that the current tab is being dragged.
### Signal `tab,drag,stop`
To notify that the current tab is no longer being dragged.
### Signal `tab,drag,move`
To notify that the current tab is being dragged outside of other tabs.
# Group `terminology/core`
## Swallowed parts
### Part `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`
### Part `terminology.tabregion`
Here is swalloed a fully transparent rectangle to move down the textgrid.
### Part `terminology.content`
Where actual text grid goes.
## Signals received
### Signals `tabbar,off` and `tabbar,on`
Whether to display a tab bar. Default is off.
### Signals `tab_btn,off` and `tab_btn,on`
Whether to display a tab button to easily navigate through tabs. Default is off.
### Signals `hdrag,on` and `hdrag,off`
Whether to restrict (default) horizontal tab drag
## Signal emitted
### Signals `tab,drag` and `tab,drag,stop`
To notify that the current tab is being dragged.
### Signals `tab,mouse,down`
Whenever the left mouse button is pressed on a tab.
# Group `terminology/about`
## Text parts
### Part `terminology.text`
The text of the __About__ message.
# Group `terminology.tabbar_back`
An inactive tab item
## Text parts
### Part `terminology.title`
Title of the tab.
## Signal emitted
### Signal `tab,activate`
When clicked on it, to notify that the user wants to go to that tab.
## Signals received
### Signal `bell`
To mark the tab as having missed a bell.
### Signal `bell,off`
To unmark the tab as having missed a bell.
### Signals `grouped,on` and `grouped,off`
When input is broadcast to multiple terminals.
# Group `terminology/keybinding`
__TODO__
# Group `terminology/miniview`
__TODO__
# Group `terminology/fontpreview`
__TODO__
# Group `terminology/selection`
An object used when selecting text.
__TODO__
# Group `terminology/cursor`
__TODO__
# Group `terminology/cursor_bar`
__TODO__
# Group `terminology/cursor_underline`
__TODO__
# Group `terminology/sel/base`
__TODO__
# Group `terminology/sel/item`
__TODO__
# Group `terminology/link`
An object overlayd on text that is a link.
# Group `terminology/mediabusy`
__TODO__
# Group `terminology/mediactrl`
__TODO__
# Group `terminology/tab_drag_thumb`
A thumbnail of a tab being dragged.
## Swallowed part
### Part `terminology.content`
Here is swallowed an object of group `terminology.background`.
## Text part
### Part `terminology.title`
Title of the tab.
## Signal received
### Signal `bell`
To mark the tab as having missed a bell.
# Group `terminology/colorscheme_preview`
A group to preview a colorscheme. Used in the Colors panel in the settings.
## Swallowed part
### Part `terminology.content`
Where a textgrid showing off a color scheme is displayed.
# Group `terminology/color_preview`
A group to preview a color in a tooltip. The color is defined by the color
class `color_preview`.
## Text part
### Part `name`
Name of the color being previewed