• Stars
    star
    1,401
  • Rank 33,554 (Top 0.7 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Mirror of https://gitlab.redox-os.org/redox-os/ion

Introduction

Ion is a modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust, which greatly increases the overall quality and security of the shell. It also offers a level of performance that exceeds that of Dash, when taking advantage of Ion's features. While it is developed alongside, and primarily for, RedoxOS, it is a fully capable on other *nix platforms.

Ion Shell

MIT licensed crates.io Documentation

Ion is still a WIP, and both its syntax and rules are subject to change over time. It is still quite a ways from becoming stabilized, but we are getting very close. Changes to the syntax at this time are likely to be minimal.

Ion Specification

Ion has a RFC process for language proposals. Ion's formal specification is located within the rfcs branch. The RFC process is still in the early stages of development, so much of the current and future implementation ideas have yet to be written into the specification.

Ion Manual

The Ion manual online is generated automatically on each commit via mdBook and hosted on Redox OS's website.

Building the manual for local reference

Sources for the manual are located in the manual directory.

  1. Build the documentation file for the builtins
make manual
  1. Then build the rest of the Ion manual via mdbook
mdbook build manual

Or you can build and open it in the your default browser via

mdbook serve manual --open

Or you can build and host the manual on your localhost via

mdbook serve manual 

Ion library example

See the examples folder and the Parallelion project

Packages

Pop!_OS / Ubuntu

The following PPA supports the 18.04 (bionic) and 19.04 (disco) releases. Bionic builds were made using the Pop_OS PPA's rustc 1.39.0 package.

sudo add-apt-repository ppa:mmstick76/ion-shell

Developer set up

Those who are developing software with Rust should install the Rustup toolchain manager. After installing rustup, run rustup override set 1.56.0 to set your Rust toolchain to the version that Ion is targeting at the moment. To build for Redox OS, rustup override set nightly is required to build the Redox dependencies.

Build dependencies

Please ensure that both cargo and rustc 1.56.0 or higher is installed for your system. Release tarballs have not been made yet due to Ion being incomplete in a few remaining areas.

Installation

Installation of Ion shell for one user

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo install --path=. --force 

This way the ion executable will be installed into the folder "~/.cargo/bin"

As an alternative you can do it like this

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release 
# Install to path which is included in the $PATH enviromnent variable
DESTDIR=~/.local/bin bash/install.sh

Installation of Ion shell system wide, for all users

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release 
sudo DESTDIR=/usr/local/bin bash/install.sh
# Optional: Do this if Ion shell shoulb be login shell on your system
sudo make update-shells prefix=/usr

Ion plugins

There are plugins for ion. These plugins are additional aliases and function definitions written in Ion for Ion. They can be found under this repository.

Vim/NeoVim Syntax Highlighting Plugin

For vim/nvim users there is an officially-supported syntax highlighting plugin.

Plugin 'vmchale/ion-vim'

Vim Syntax Highlighting

Emacs Syntax Highlighting Plugin

For emacs users there is a kindly-supported syntax highlighting plugin.

(add-to-list 'load-path  (expand-file-name "/path/to/ion-mode"))
(require 'ion-mode)
(autoload 'ion-mode (locate-library "ion-mode") "Ion majore mode" t)
(add-to-list 'auto-mode-alist '("\\.ion\\'" . ion-mode))
(add-to-list 'auto-mode-alist '("/ion/initrc" . ion-mode))

Emacs Syntax Highlighting

Lsp /IDE support

There is a LSP-server for the scripting language of this shell. You can install the LSP-server via crates.io to get IDE support like error messages for an code editor or IDE which understands the client side of LSP. Link to LSP server on crates.io : https://crates.io/crates/ion_shell_lsp_server . The source code of the LSP server can be found here: https://gitlab.redox-os.org/redox-os/ion_lsp .

More Repositories

1

redox

Mirror of https://gitlab.redox-os.org/redox-os/redox
Shell
14,647
star
2

orbtk

The Rust UI-Toolkit.
Rust
3,773
star
3

tfs

Mirror of https://gitlab.redox-os.org/redox-os/tfs
Rust
2,938
star
4

termion

Mirror of https://gitlab.redox-os.org/redox-os/termion
Rust
1,994
star
5

relibc

Mirror of https://gitlab.redox-os.org/redox-os/relibc
Rust
780
star
6

rusttype

Mirror of https://gitlab.redox-os.org/redox-os/rusttype
Rust
613
star
7

kernel

Mirror of https://gitlab.redox-os.org/redox-os/kernel
Rust
517
star
8

coreutils

Mirror of https://gitlab.redox-os.org/redox-os/coreutils
Rust
259
star
9

sodium

Mirror of https://gitlab.redox-os.org/redox-os/sodium
Rust
181
star
10

games

Mirror of https://gitlab.redox-os.org/redox-os/games
Rust
119
star
11

book

Mirror of https://gitlab.redox-os.org/redox-os/book
98
star
12

redoxfs

Mirror of https://gitlab.redox-os.org/redox-os/redoxfs
Rust
85
star
13

orbital

Mirror of https://gitlab.redox-os.org/redox-os/orbital
Rust
69
star
14

drivers

Mirror of https://gitlab.redox-os.org/redox-os/drivers
Rust
44
star
15

bootloader

Mirror of https://gitlab.redox-os.org/redox-os/bootloader
Rust
40
star
16

orbutils

Mirror of https://gitlab.redox-os.org/redox-os/orbutils
Rust
39
star
17

orbclient

Mirror of https://gitlab.redox-os.org/redox-os/orbclient
Rust
33
star
18

cookbook

Mirror of https://gitlab.redox-os.org/redox-os/cookbook
Shell
32
star
19

pkgutils

Mirror of https://gitlab.redox-os.org/redox-os/pkgutils
Rust
30
star
20

orbtk-template

A template for starting an OrbTk project
Rust
30
star
21

redox-ssh

Mirror of https://gitlab.redox-os.org/redox-os/redox-ssh
Rust
30
star
22

syscall

Mirror of https://gitlab.redox-os.org/redox-os/syscall
Rust
29
star
23

netstack

Mirror of https://gitlab.redox-os.org/redox-os/netstack
Rust
29
star
24

netutils

Mirror of https://gitlab.redox-os.org/redox-os/netutils
Rust
28
star
25

extrautils

Mirror of https://gitlab.redox-os.org/redox-os/extrautils
Rust
28
star
26

website

Mirror of https://gitlab.redox-os.org/redox-os/website
CSS
24
star
27

installer

Mirror of https://gitlab.redox-os.org/redox-os/installer
Rust
21
star
28

calc

Mirror of https://gitlab.redox-os.org/redox-os/calc
Rust
21
star
29

orbgame

Mirror of https://gitlab.redox-os.org/redox-os/orbgame
Rust
19
star
30

binutils

Mirror of https://gitlab.redox-os.org/redox-os/binutils
Rust
18
star
31

stb_truetype-rs

Mirror of https://gitlab.redox-os.org/redox-os/stb_truetype-rs
Rust
17
star
32

orbterm

Mirror of https://gitlab.redox-os.org/redox-os/orbterm
Rust
17
star
33

ransid

Mirror of https://gitlab.redox-os.org/redox-os/ransid
Rust
17
star
34

orbtk-book

(WIP) The OrbTk book
Rust
16
star
35

bootloader-efi

Mirror of https://gitlab.redox-os.org/redox-os/bootloader-efi
Rust
16
star
36

userutils

Mirror of https://gitlab.redox-os.org/redox-os/userutils
Rust
16
star
37

libc

Mirror of https://gitlab.redox-os.org/redox-os/libc
C
15
star
38

binutils-gdb

Mirror of https://gitlab.redox-os.org/redox-os/binutils-gdb
C
13
star
39

thrussh

Mirror of https://gitlab.redox-os.org/redox-os/thrussh
Rust
12
star
40

rfcs

Mirror of https://gitlab.redox-os.org/redox-os/rfcs
12
star
41

uefi

Mirror of https://gitlab.redox-os.org/redox-os/uefi
Rust
11
star
42

pkgar

Mirror of https://gitlab.redox-os.org/redox-os/pkgar
Rust
11
star
43

users

Mirror of https://gitlab.redox-os.org/redox-os/users
Rust
9
star
44

redoxer

Mirror of https://gitlab.redox-os.org/redox-os/redoxer
Rust
9
star
45

ipcd

Mirror of https://gitlab.redox-os.org/redox-os/ipcd
Rust
8
star
46

init

Mirror of https://gitlab.redox-os.org/redox-os/init
Rust
8
star
47

libpager

Mirror of https://gitlab.redox-os.org/redox-os/libpager
Rust
8
star
48

design

Mirror of https://gitlab.redox-os.org/redox-os/design
8
star
49

handbook

Mirror of https://gitlab.redox-os.org/redox-os/handbook
7
star
50

libextra

Mirror of https://gitlab.redox-os.org/redox-os/libextra
Rust
6
star
51

orbfont

Mirror of https://gitlab.redox-os.org/redox-os/orbfont
Rust
6
star
52

playbot

Mirror of https://gitlab.redox-os.org/redox-os/playbot
Rust
6
star
53

acid

Mirror of https://gitlab.redox-os.org/redox-os/acid
Rust
5
star
54

arg-parser

Mirror of https://gitlab.redox-os.org/redox-os/arg-parser
Rust
5
star
55

assets

Mirror of https://gitlab.redox-os.org/redox-os/assets
Shell
4
star
56

rine

Mirror of https://gitlab.redox-os.org/redox-os/rine
Rust
4
star
57

uefi_alloc

Mirror of https://gitlab.redox-os.org/redox-os/uefi_alloc
Rust
4
star
58

mesa

Mirror of https://gitlab.redox-os.org/redox-os/mesa
C
4
star
59

termios

Mirror of https://gitlab.redox-os.org/redox-os/termios
Rust
4
star
60

dash

Mirror of https://gitlab.redox-os.org/redox-os/dash
C
3
star
61

ptyd

Mirror of https://gitlab.redox-os.org/redox-os/ptyd
Rust
3
star
62

orbimage

Mirror of https://gitlab.redox-os.org/redox-os/orbimage
Rust
3
star
63

isolinux

Mirror of https://gitlab.redox-os.org/redox-os/isolinux
3
star
64

bots

Mirror of https://gitlab.redox-os.org/redox-os/bots
Rust
3
star
65

smallstring

Mirror of https://gitlab.redox-os.org/redox-os/smallstring
Rust
3
star
66

gawk

Mirror of https://gitlab.redox-os.org/redox-os/gawk
C
2
star
67

contain

Mirror of https://gitlab.redox-os.org/redox-os/contain
Rust
2
star
68

event

Mirror of https://gitlab.redox-os.org/redox-os/event
Rust
2
star
69

docgen

Mirror of https://gitlab.redox-os.org/redox-os/docgen
Rust
2
star
70

orbdata

Mirror of https://gitlab.redox-os.org/redox-os/orbdata
2
star
71

dmi

Mirror of https://gitlab.redox-os.org/redox-os/dmi
Rust
2
star
72

randd

Mirror of https://gitlab.redox-os.org/redox-os/randd
Rust
2
star
73

periodictable

Mirror of https://gitlab.redox-os.org/redox-os/periodictable
Rust
2
star
74

libc-artifacts

Mirror of https://gitlab.redox-os.org/redox-os/libc-artifacts
C
2
star
75

backgrounds

Mirror of https://gitlab.redox-os.org/redox-os/backgrounds
2
star
76

orbaudio

Mirror of https://gitlab.redox-os.org/redox-os/orbaudio
Rust
1
star
77

netdb

Mirror of https://gitlab.redox-os.org/redox-os/netdb
1
star
78

netsurf

Mirror of https://gitlab.redox-os.org/redox-os/netsurf
C
1
star
79

conc

Mirror of https://gitlab.redox-os.org/redox-os/conc
Rust
1
star
80

small

Mirror of https://gitlab.redox-os.org/redox-os/small
Rust
1
star
81

logd

Mirror of https://gitlab.redox-os.org/redox-os/logd
Rust
1
star
82

keyboard-sfx

Mirror of https://gitlab.redox-os.org/redox-os/keyboard-sfx
1
star
83

shellstorm

Mirror of https://gitlab.redox-os.org/redox-os/shellstorm
Rust
1
star