Skip to content

ringwormGO-organization/Termi

Repository files navigation

Termi

If you want use non-OpenGL version, manually install files from commits history!

Syncing Windows version may not be regular!

Latest stable release (v3.1.1)

A Powerful terminal emulator with an optional shell written in C++ with OpenGL and Dear ImGui with own commands

About Termi

  • Termi is a powerful terminal emulator with a shell written in C++.
  • It can run on Windows, (macOS) and GNU/Linux, BSD and all other platforms which support C++ standard library, something like .dll and .so files and GLFW
  • The goal of Termi is to create independent terminal emulator, i.e. a separate kind of terminal emulator use "own" GUI renedering system.
  • Has its own commands that can be written using C, C++ or Rust and possibly any language that can be compiled in form of shared library.
  • We accept contributors; create a Pull Request to contribute and check our coding style
  • Commands list and explanation
  • And please read organize part which talks about directory organization.

Releases

Checklist

Termi base part

  • Windows version (fully supported with delays)
  • GNU/Linux version (fully supported)
  • BSD version (moderately supported) (@hahahahacker2009)
  • macOS version (unsupported)

Termi advanced C++ part

  • Arguments
  • Better arguments for Rust commands/applications
  • Colors in console
  • GUI models (actually do something with model 1)
  • Loading executables (.dll files for Windows, .so files for macOS, GNU/Linux, BSD, etc.)
  • Most of major commands
  • Networking
  • Serial port
  • Themes
  • Translations
  • User settings in JSON
  • UTF-8 support

Windows - installer and launcher

  • Installer in Inno Setup
  • Launcher and updater - C#

Build & Run

Required software:

Windows

  • Visual Studio Visual Studio 2022 with Desktop development with C++, and .NET 6 Runtime components.
  • vcpkg

Other platforms

  • c++ complier: GCC and Clang are both supported (they are compatible)
  • c & c++ headers: you should have them by default. If not, you can try installing what's called base-devel or build-essentials or build-base. Strictly speaking, they are a collection of tools required to build the whose Linux distribution, including kernel. Linux packaging often split package into binary components and header, the header usually contain the postfix -dev or -devel On BSD, you can get all of them with the "compiler" sets.

All platfoms

  • (Optional) Git - for cloning repo

  • CMake

  • json-c library header (non-vcpkg version)

    • Install it using vcpkg using on Windows (static x64)
    • Use your package manager, or download it
  • OpenGL & its dependencies

    • Windows

      Generating files (optional)

      • Check this video and copy new files where old ones are.

      Continuing with installation

      • Visual Studio 2022 solution should work without any additional configuration.
      • If it doesn't work, see following instructions down below:
        1. open properties of solution,
        2. go to VC++ Directories,
        3. set path of Include Directories to includes folder,
        4. set path of Library Directories to Termi-GUI folder where glfw3.lib is located;
        5. if you get in trouble, check this video.
    • macOS & (GNU/)Linux

      Generating files (optional)

      1. go to https://glad.dav1d.de/,
      2. generate glad with following properties:
        • gl: Version 3.3,
        • Profile: Core;
      3. download generated glad.zip,
      4. extract glad.zip,
      5. copy ./include/glad folder to /usr/include (Linux), or /usr/local/include (or even /usr/pkg/include), (for BSD and maybe macOS).

      Continuing with installation

      1. install glfw package: both the shared object and the header; You can use your package manager.
      2. if you get in trouble, check this video.
      • (Developer notes) Linux (package managers) do not use the /usr/local hierarchy, while BSD do, for "third-party software". NetBSD use the /usr/pkg hierarchy instead of /usr/local; OpenBSD and NetBSD have X by default, so they use /usr/X11R6 and /usr/X11R7 hierarchy to store X file, whereas on FreeBSD X is third-party software so it is installed on /usr/local . The compilation flags for each system is all added, no need to worry here.

    NOTE: There is option in Settings.hpp to use headers in this repository

  • Rust - required for building Rust commands (optional)

    • Check Rust's website for download instructions

Commands which requires package installation have to be ran with administrator/root access!

Build & Run - Windows

  1. Open terminal.
  2. Go to Termi-Commands folder/directory and run this command: cmake . command.
  3. Open Visual Studio solution and compile it.
  4. Repeat steps for other projects.
  5. Copy Termi-Commands.dll and Termi-GUI.dll from Debug or Release mode to Debug or Release folder where Termi-Main is located.
  6. Now run Termi-Main executable!

Don't forget to use Release mode! and zip it in windows-release so it's available to Termi-Launcher

Build & Run - Other platforms

  • Just run compile_all.sh (it won't compile test Rust command)
    • first argument is number of threads, by default, we use 2 threads for a faster build experience.
    • second argument is do you want clean build, if you do, specify clean
    • example: ./compile_all.sh 4 clean

For those who want know more

  1. You can compile rtest Rust project by cargo build (and then copy .dll or .so file in folder/directory where are other .dll or .so files) if you want to have yes command mainly written in Rust

Known issues

  • OpenGL might now open when reading from .txt file, remove render->Settings(1, 0) and render->Settings(2, 0) to size which you want.
  • Dear ImGui might cause segmentation fault on BSD based operating systems (we are fixing this currently).
  • Running Termi-Main can result: libTermi-GUI.so: cannot open shared object file: No such file or directory error; run Termi-Main with this command: LD_LIBRARY_PATH=. ./Termi-Main.
  • cd command disables autofocus on input bar.
  • You have to press button for other themes (not light/dark) to be able to switch between light and dark themes.

Development pictures (pictures may be late)

image Termi running sysfetch command on GNU/Linux, Arch Linux

image Termi running calc and base64 commands on GNU/Linux, Arch Linux

External dependencies

Credits

Word terminal might not be the best word to describe this project

Codeberg mirror


Thank you for choosing Termi.

© 2021 - present ringwormGO