Termi
Termi copied to clipboard
Powerful terminal made in C++
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
- [x] Windows version (fully supported with delays)
- [x] GNU/Linux version (fully supported)
- [x] BSD version (moderately supported) (@hahahahacker2009)
- [x] macOS version (unsupported)
Termi advanced C++ part
- [x] Arguments
- [x] Better arguments for Rust commands/applications
- [x] Colors in console
- [x] GUI models (actually do something with model 1)
- [x] Loading executables (.dll files for Windows, .so files for macOS, GNU/Linux, BSD, etc.)
- [x] Most of major commands
- [x] Networking
- [x] Ping command - @StjepanBM1
- [x] Remote connection
- [ ] Serial port
- [x] Themes
- [x] Translations
- [x] User settings in JSON
- [x] UTF-8 support
Windows - installer and launcher
- [x] Installer in Inno Setup
- [x] 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
- Check Git website for Windows instructions or do
winget install git
- Use your package manager or get the software from the official website.
- Check Git website for Windows instructions or do
-
CMake
- Visual Studio have option for installing cmake
- Use your package manager or get the software at their official website.
-
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:
- open properties of solution,
- go to
VC++ Directories
, - set path of
Include Directories
toincludes
folder, - set path of
Library Directories
toTermi-GUI
folder whereglfw3.lib
is located; - if you get in trouble, check this video.
-
macOS & (GNU/)Linux
Generating files (optional)
- go to https://glad.dav1d.de/,
- generate glad with following properties:
-
gl
: Version 3.3, -
Profile
: Core;
-
- download generated
glad.zip
, - extract
glad.zip
, - 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
- install
glfw
package: both the shared object and the header; You can use your package manager. - 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
- Open terminal.
- Go to
Termi-Commands
folder/directory and run this command:cmake .
command. - Open Visual Studio solution and compile it.
- Repeat steps for other projects.
- Copy
Termi-Commands.dll
andTermi-GUI.dll
fromDebug
orRelease
mode toDebug
orRelease
folder whereTermi-Main
is located. - 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
- You can compile
rtest
Rust project bycargo build
(and then copy .dll or .so file in folder/directory where are other .dll or .so files) if you want to haveyes
command mainly written in Rust
Known issues
- OpenGL might now open when reading from .txt file, remove
render->Settings(1, 0)
andrender->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; runTermi-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)
Termi running
sysfetch
command on GNU/Linux, Arch Linux
Termi running
calc
and base64
commands on GNU/Linux, Arch Linux
External dependencies
- OpenGL
- Dear ImGui
- stb
- Sweet16Font
-
dirent -
dirent.h
for Windows
Credits
- Background launcher picture
- Stack Overflow - solution for most of problems
- Cherno - for recommending Dear ImGui
- Victor Gordan - for OpenGL window code
-
cppfetch - for Termi's
sysfetch
- dl-libraries.html - for loading functions from .so files at runtime
- c-chatroom - for server & client implementation
- ...
Word terminal
might not be the best word to describe this project
Thank you for choosing Termi.
© 2021 - present ringwormGO