Germinal
Germinal is Terminal written with the Gtk3 and Vte3 ruby bindings from the project ruby-gnome2. I have written it for testing purpose, but Germinal works well and I use it as my primary terminal emulator.
Features
- tabs supports
tabs can be reordered or selected through the preview mode (
Shift + Ctrl + o)
Each tab can be named.
The configuration can be done via a Css file
Terminal colors can be changed on the fly and saved in the CSS configuration file

Terminal font can be changed on the fly and saved in the CSS configuration file

The Css file can be edited in a tab of Germinal and saved. Each modifications are applied while you are writting them. (Use
Shift + Ctrl + wto close the editor)
Germinal allows users to modify existing modules. For example if a user copy the css_editor.rb in the directory ~/.config/Germinal/lib/css_editor.rb, he should be able to modify it in order to fit its needs.
TODO:
- Regex support in the terminals in order to launch web navigator if there is an url or launch a media player if there is a match for avi file for example.
- Create more Css properties in oder to configure the terminals (cursor shape or blink mode, audible bell or not ...)
- Make Germinal allows users to easily create their own modules. For example create a tab that will act as a MPD client. There will be widgets that control a MPD server and a GtkTree widget that displays the playlist of the MPD server for example.
Shortcuts
Shift + Ctrl + tnew tabShift + Ctrl + qquit GerminalShift + Ctrl + wclose current tabShift + Ctrl + leftprevious tabShift + Ctrl + rightnext tabShift + Ctrl + cdisplay color selectors for the vte in overlay mod (Esc to leave)Shift + Ctrl + fdisplay font selector for the vte in overlay mod (Esc to leave)Shift + Ctrl + odisplay previews of all tabs (Esc to leave)Shift + Ctrl + eopen the Css configuration editor in a new notebook tab.
User configuration
It can be found in the file $HOME/.config/Germinal/germinal.css (Be carefull by default Germinal use fish as a default shell, if you want to use another one specify it in the germinal.css file)
*{
/* Default css properties
-GerminalTerminal-foreground: #aeafad;
-GerminalTerminal-background: #323232;
-GerminalTerminal-black: #000000;
-GerminalTerminal-red: #b9214f;
-GerminalTerminal-green: #A6E22E;
-GerminalTerminal-yellow: #ff9800;
-GerminalTerminal-blue: #3399ff;
-GerminalTerminal-magenta: #8e33ff;
-GerminalTerminal-cyan: #06a2dc;
-GerminalTerminal-white: #B0B0B0;
-GerminalTerminal-brightblack: #5D5D5D;
-GerminalTerminal-brightred: #ff5c8d;
-GerminalTerminal-brightgreen: #CDEE69;
-GerminalTerminal-brightyellow: #ffff00;
-GerminalTerminal-brightblue: #9CD9F0;
-GerminalTerminal-brightmagenta: #FBB1F9;
-GerminalTerminal-brightcyan: #77DFD8;
-GerminalTerminal-brightwhite: #F7F7F7;
-GerminalTerminal-font: Monospace 11;
-GerminalWindow-shell: "/usr/bin/fish";
-GerminalWindow-css-editor-style: "monokai-extended";
-GerminalWindow-height: 500;
-GerminalWindow-width: 1000;*/
}
GerminalWindow GtkHeaderBar GtkEntry{
border-radius: 4px;
}
GerminalWindow GtkOverlay GtkBox#resize_box{
background: rgba(49, 150, 188, 0.5);
border-top: 1px;
border-left: 1px;
border-bottom: 1px;
border-style: solid;
border-color: rgba(49, 150, 188, 1);
border-radius: 6px 0px 0px 0px;
}
GerminalWindow GtkOverlay GtkScrolledWindow#terminal_chooser GtkBox{
background-color: rgba(49, 150, 188, 0.5);
border-top: 1px;
border-left: 1px;
border-bottom: 1px;
border-style: solid;
border-color: rgba(49, 150, 188, 1);
border-radius: 6px 0px 0px 6px;
}
GerminalWindow GtkOverlay GtkScrolledWindow GtkGrid GtkButton {
margin: 0px;
padding: 0px;
}
GerminalWindow GtkOverlay GtkScrolledWindow GtkGrid GtkButton GtkImage {
border: solid 3px rgba(0, 0, 0, 0.0);
}
.tooltip {
background:rgba(50, 50, 50,0.5);
border:none;
color: #ddd;
border-top-right-radius: 6px;
border-bottom-left-radius: 6px;
}
Each time you modify this configuration via the interface of Germinal (terminal colors selector, terminal font selector, css editor) and that you save your modifications, Germinal create a copy of your previous Css file under a new name with :
FileUtils.mv(USR_CSS, "#{USR_CSS}_#{Time.new.strftime('%Y-%m-%d-%H-%M-%S')}.backup")
Which means that the old file can be something like that : germinal.css_2016-12-5-13-20.backup.
Installation
Dependancies
- gtk3 vte3 sass
Create the gem if needed:
gem build Germinal.gemspec
Install the gem :
gem install Germinal-x.x.x.gem
Launch the terminal
~> Germinal
Tips:
Don't forget, if you install it localy, you need that your system know the path of the ruby gem binaries (for example).
export PATH="${PATH}:/home/${USER}/bin:${HOME}/gem/ruby/2.3.0/bin"
Modifying or testing Germinal is easy:
Get the sources
git clone https://github.com/cedlemo/germinal.git
cd germinal/bin
Edit the files Germinal and test
The filenames correspond to their functionnalities.
Simply run ./Germinal when you have done your modifications.
You will need fish shell if you want to test it.
Copying:
Copyright 2015-2016 Cédric Le Moigne
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
Author : [email protected]
