A sounding shell experiment

Houkime b6cd54a4ec add video link 2 yıl önce
.gitlab e92269fbd5 adding syntax highlighting for emacs 4 yıl önce
benches dc3f40f7d9 chore: update dependencies and switch to rust 1.36.0 4 yıl önce
ci 7abe992f1c Fix tests for performance improvements 5 yıl önce
debian 7feacbe3a5 :package: Update debian changelog 5 yıl önce
examples b6cd29182e ci: Test rather than check for redox 4 yıl önce
fuzz 62f552aa51 Debian packaging support 6 yıl önce
manual df99347767 fix(manual): disable linkcheck to fix deploy 3 yıl önce
members c85d2ef479 fix(clippy): define and fix clippy lints, add documentation+license 3 yıl önce
sh-interrupt f8f85c3833 fix: Bring back redox compilation 4 yıl önce
src 4e2023bda6 proto-modification 2 yıl önce
testing 1d47baee45 Fix symlink 7 yıl önce
tests c85d2ef479 fix(clippy): define and fix clippy lints, add documentation+license 3 yıl önce
.envrc ca069ed1c1 If the source-sh argument is a file, execute it instead of a literal script 4 yıl önce
.gitignore efbc06c92c Make sure the manual page about builtins is kept updated 5 yıl önce
.gitlab-ci.yml a7c0222946 fix(CI): deploy: add utils, change cache name 3 yıl önce
CONTRIBUTING.md e8e9b0fde0 fix: Update location of tests script in CONTRIBUTING.md. Add missing period to help.out. 4 yıl önce
Cargo.lock 63dc0c39d2 Fix issues getting home directory 2 yıl önce
Cargo.toml 4e2023bda6 proto-modification 2 yıl önce
LICENSE cc423e811d Update ion to 1.0.0 after significant work by mmstick to complete syntax elements 7 yıl önce
Makefile c727cb7eee bump msrv to 1.53.0, update rustfmt 3 yıl önce
README.md b6cd54a4ec add video link 2 yıl önce
build.rs baf5549eb8 Clippy and fmt 5 yıl önce
clippy.toml c85d2ef479 fix(clippy): define and fix clippy lints, add documentation+license 3 yıl önce
redox_linker 934e9a0022 :package: Update debian packaging 5 yıl önce
rustfmt.toml c727cb7eee bump msrv to 1.53.0, update rustfmt 3 yıl önce
shell.nix ca2bcc4cd4 Update deps (for nix) 4 yıl önce
test.ogg 4e2023bda6 proto-modification 2 yıl önce

README.md

About this experimental branch

This is a (likely) never-to-be-upstreamed modification prototype that allows shell to make (futuristic) sounds on various actions (currently on completion). To play with it (no serious use supported):

git clone https://notabug.org/Houkime/ion-sound
cd ion-sound
cargo run --release

At the moment the startup is tied to the directory with the sound (but once started shell can go anywhere). Terrible! Raw! But i am not sure if i want to continue with ion or use nsh as a base. Ion moves and jitters too much, and the whole idea of having sounds in a shell is to make it a pleasant chilly experience. Dynamic sound synthesis without any files can prove cool too.

Here is a video demo of the shell at work. Behind the scenes the shell uses Kira game audio library.

Below starts original README

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.

You can build the manual using

make manual
mdbook build -d ../public 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.39.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.39.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.

Compile instructions for distribution

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
RUSTUP=0 make # By default RUSTUP equals 1, which is for developmental purposes
sudo make install prefix=/usr
sudo make update-shells prefix=/usr

To compile in DEBUG mode, pass DEBUG=1 as an argument to make

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