Skip to content

msa1618/slash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to slash!

slash unconfirmed logo
Unconfirmed slash logo

slash is a project that aims to create a customizable, vibrant, and modern shell, along with a suite of utilities designed for educational, practical, and evcen creative use cases!

Slash is in Beta!

All the basics of a shell were added, and finished on 17 June 2025. Slash is not in Alpha anymore. This means:

  1. Slash is almost eligible to become a legitimate shell
  2. It's no longer plagued with errors
  3. You can (almost) use Slash like any other shell

Features

  • Easily customizable syntax highlighting and prompt with JSON, for a terminal that feels like home
  • A rich suite of feature-rich utilties built in (slash-utils)
  • Helpful, short, and visually pleasing help messages

Soon to come

  • POSIX-compliant scripting (Yeah, portability)
  • Command substitution
  • More slash-utils

The Slash Philosophy

Every Slash utility shas to follow a unified philosophy:

  1. Errors and notices should be color coded
  2. The utility must be vibrant, but not garnish. It can follow a theme, or a color set. ANSI color codes should not be written raw and should be decalred in a header file for all to be used. If possible, let it comply with the current Slash theme set. (coming soon)
  3. The utility must fulfill its purpose very well. It should be simple but feature rich at the same time.
  4. The code should be clean, simple to read, and should not make the reader think hard
  5. If it is a complex utility, the functions must be split into separate files. For example, an editor designed for programming must be split into editor.h, autocomplete.h, file_operations.h, vcs.h, ...
  6. Do not let the library you are using limit your feature set. If that is the case, it is time to either make your own, or choose another library
  7. Avoid storing data in binary files, thinking it's cool and edgy. Store settings in JSON, YAML, TOML, or any easy to understand types.

Installation

Installing slash is pretty straightforward if you have the dependencies:

  • g++
  • cmake
  • libgit2
  • boost::regex
  • OpenSSL
  • nlohmann::json

Installing dependencies

apt (Debian)

sudo apt update
sudo apt install -y cmake g++ git build-essential pkg-config nlohmann-json3-dev libgit2-dev libboost-regex-dev libssl-dev

pacman (Arch btw)

sudo pacman -Syu
sudo pacman -Syu cmake gcc git base-devel pkgconf nlohmann-json libgit2 boost openssl

dnf (Fedora)

sudo dnf check-update
sudo dnf upgrade -y
sudo dnf install -y cmake gcc-c++ git make automake autoconf pkgconf nlohmann-json-devel libgit2-devel boost-devel openssl-devel

zypper (OpenSUSE)

sudo zypper refresh
sudo zypper update -y
sudo zypper install -y cmake gcc-c++ git make automake autoconf pkg-config nlohmann-json-devel libgit2-devel libboost_regex-devel libopenssl-devel

emerge (Gentoo)

sudo emerge --sync
sudo emerge --update --deep --newuse @world
sudo emerge --ask dev-util/cmake sys-devel/gcc dev-vcs/git sys-devel/automake sys-devel/autoconf dev-util/pkgconf dev-libs/nlohmann_json dev-libs/libgit2 dev-libs/boost dev-libs/openssl

pkg (Termux)

pkg update
pkg upgrade
pkg install cmake clang git make pkg-config nlohmann-json libgit2 boost openssl

brew (MacOS, can also work in Linux)

brew update
brew upgrade
brew install cmake git pkg-config nlohmann-json libgit2 boost openssl

Unix-based systems

  1. Download the entire source code and change your working directory to the root of the source code
  2. Compile install_slash.cpp with the following command: g++ install_slash.cpp -o is
  3. Run the installer with: ./is
  4. Follow the instructions and slash should be installed!

After installation, you may delete the slash source code and the installer safely.

Windows

slash does not support Windows directly. You have to use the Windows Subsystem for Linux. Maybe someday though..

Uninstallation

To uninstall slash, simply delete the directory ~/.slash and also /usr/local/bin/slash

Screenshots

slash-utils




slash

Found a bug?

Please just take 5 minutes of your life to open an issue and make slash better for everyone.

Want to support me?

GH Sponsors isn't open right now. If you wish to sponsor me, email me at msa4gh@gmail.com and I'll see if I can open it

Known bugs

  • Flickering prompts and no multiline support yet (only for one-line prompts)

About

A new, modern shell currently in development

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •