Germinal

Screenshot

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 ) Screenshot

  • 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 Screenshot

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

  • 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 + w to close the editor) Screenshot

  • 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 + t new tab

  • Shift + Ctrl + q quit Germinal

  • Shift + Ctrl + w close current tab

  • Shift + Ctrl + left previous tab

  • Shift + Ctrl + right next tab

  • Shift + Ctrl + c display color selectors for the vte in overlay mod (Esc to leave)

  • Shift + Ctrl + f display font selector for the vte in overlay mod (Esc to leave)

  • Shift + Ctrl + o display previews of all tabs (Esc to leave)

  • Shift + Ctrl + e open 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]