UniShellect

This tool parses a JSON config file and loads a highly customizable menu of shells, interpreters, files, commands and possible arguments into any command line interface. This is inspired by the "hyper-shellect" plug-in for the "Hyper" terminal.

View on GitHub

UniShellect


This version is now abandoned in favor of the new version UniShellect V2.

I will keep this here, but no support will be provided.


Build Status
Under Construction AppImage Build Status


News

New Version

Wed 07 Sep 2022 08:49:35 PM UTC

The new version is now avalable here.

New Version Information

Tue 06 Sep 2022 05:34:50 PM UTC

The new version is finished and will be released officially very soon as I’m currently working on the new repository. For now there are stable pre-released builds there, but they are not official yet. You can find the new project here.

Coming Soon

Sun 25 Apr 2021 03:00:53 PM CDT

This program works fine as is, but my JSON structure is nonsense and I want to re-write this in C++ and Rust (maybe) and so I plan to do so at some point this year.

Re-writes in both C++ and Rust adding better cross-platform capability with plans to add the ability to add and remove items from the configuration file via the command line (switches and arguments).

Table of Contents

  1. News
    1. New Version
    2. New Version Information
    3. Coming Soon
  2. Table of Contents
  3. About This Project
  4. Motivation
  5. Usage
    1. Command Line
      1. Linux Permissions
      2. Help Message
    2. Configuration
      1. Example Configs
        1. Example Config - Linux
        2. Example Config - Windows
  6. Files
    1. Linux Files
    2. Windows Files
    3. Continuous Build
  7. Project Links
  8. Media
    1. Icon
    2. Help Message
    3. Demo
  9. Support Me If You Like
  10. License
  11. Project Information
    1. Overall Status
    2. Latest Version Status

About This Project

This tool parses a JSON config file and loads a highly customizable menu of shells, interpreters, files, commands and possible arguments into any command line interface.

Various config files can be loaded and this can be great for laoding various menus based on various criteria: E.g. project menus, work menus, game menus etc…

This is a cross-platform FOSS project.

Motivation

I work and play in all sorts of command line environments in both Windows and Linux and this helps me organize and navigate that world more effeciently and smoothly.

This is inspired by the hyper-shellect plug-in for the Hyper terminal which is dependent on node.js.

Usage

Command Line

This is a command line tool built for use in many different types of shells and terminals in Windows and Linux. It is meant to be a universal alternative to hyper-shellect with additional features (loading different configs, passing arguments, and error handling).

Use any way you can use any other command line tool/executable: from a command line or other executable program or script.

Linux Permissions

In Windows you can just double click to open in cmd or run in a command line, but in Linux you might need to set the programs permissions to executable:

Make executable for yourself:

 $ chmod u+x /path/to/unishellect

or:

Make executable for for everyone:

 $ chmod 755 /path/to/unishellect-x86_64.AppImage

or:

 $ chmod a+x /path/to/unishellect

Help Message

 $ unishellect --help
                                                  
 USAGE: unishellect [OPTIONS [CONFIG_FILE]...]... 
 Load a menu of shells/files from any CLI...      
                                                  
 OPTIONS:                                         
     -h,--help    This help message.              
     -c,--config  Load an alternate config file.  
     -s,--supress Supress errors.                 
                                                  
 CONFIG_FILE: unishellect -c "/path/to/file.json" 
 Load an alternate config file.                   
 The default config file: "unishellect.json"      
 should be created in the user's HOME             
 directory.                                       
                                                  
 ERRORS:                                          
     0            No errors.                      
     1            Passed config file does not     
                  exist.                          
     2            Could not create config         
                  Directory.                      
     3            Could not create default        
                  config file.                    
     4            Not items found in the config   
                  file.                           
     5            A key was not found in config.  
     6            Error running command.          
                                           

Configuration

The default JSON configuration file: unishellect.json will be created in the corresponding %AppData%\UniShellect\ or .config/UniShellect/ directory in Windows and Linux respectively on first run if no -c option has been passed with an alternate configuration file.

By default the configuration file is empty and you must add your own options.

Operating System Default Config Path
Windows %AppData%\UniShellect\unishellect.json
Linux $HOME/.config/UniShellect/unishellect.json

Example Configs

Example Config - Linux
 {
     "Shells": {
        "1": {
            "Title":"Python 3",
            "Path":"python3",
            "Args":"-q",
        },
        "2": {
            "Title":"GNU Screen - Temp",
            "Path":"screen",
            "Args":"-S Temp",
        },
        "3": {
            "Title":"Edit this menu",
            "Path":"vim",
            "Args":"${HOME}/.config/UniShellect/unishellect.json",
        }
    }
 }
Example Config - Windows
 {
     "Shells": {
        "1": {
            "Title":"Python 3",
            "Path":"python3",
            "Args":"-q",
        },
        "2": {
            "Title":"PowerCore",
            "Path":"C:\\Program Files\\PowerCore\\7.0\\pwsh.exe",
            "Args":"-NoLogo",
        },
        "3": {
            "Title":"Edit this menu",
            "Path":"vim",
            "Args":"%AppData%\\UniShellect\\unishellect.json",
        }
    }
 }

Files

File Description
Source Files - All Complete project - no compilations.

Linux Files

File Description
Source Files Linux source - no compilations.
Compiled Compiled binary executable with no dependencies.
AppImage Single executable with all dependencies.

Windows Files

File Description
Source Files Windows source - no compilations.
Compiled Compiled binary executable with no dependencies.

Continuous Build

The current released compiled binary executables. These should correlate to the above compilations, but just in case these are the “official” current releases.

File Description
Linux - EXE Linux source - no compilations.
Linux - AppImage Packaged AppImage with all dependencies.
Windows - EXE Single executable with all dependencies.
Link Description
Official Project Page The themed version of this page.
Project Page This repository page.
Current Releases The release files in “Continuous Build”.

Media

Icon

Icon

Help Message

Help Message

Demo

Demo


Support Me If You Like

If you like this project and care to donate to my PayPal:

PayPal Donation

Or Buy Me A Coffee if your prefer:

Buy Me A Coffee


License

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 (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Project Information

Overall Status

Readme Card

Description Status
Project Release Date GitHub Release Date
Total downloads for this project GitHub all releases
Complete repository size This Repo Size
Commits in last month GitHub commit activity
Commits in last year GitHub commit activity

Latest Version Status

Description Status Number of Downloads
Latest Release version Release Version GitHub release (latest by date)
Latest Tag version, possible Pre-Release’s Tag Version GitHub release (latest by date)