Linux.com

Home Learn Linux Linux Tutorials Meet Xiki, the Revolutionary Command Shell for Linux and Mac OS X

Meet Xiki, the Revolutionary Command Shell for Linux and Mac OS X

Command-line lovers, allow me to introduce you to Xiki, the incredibly interactive, flexible, and revolutionary command shell. I do not use the word "revolutionary" lightly. The command shell has not advanced all that much since the ancient days of Unix. Xiki is a giant leap forward. If you're looking for the Next Big Thing in FOSS, Xiki is it.

fig1 Xiki

Xiki merges shell and GUI concepts. It runs in a text editor, so everything is editable and you can save your Xiki sessions in text files. You can use a mouse in Xiki, insert a command prompt anywhere you want, incrementally filter searches, expand and filter directory contents, open and edit files in place, enter text notes wherever you want, edit, re-order, and re-use command history, and you can do all of this in a natural progressive flow. You can create new commands as you go, browse and replay commands that were run from specific directories, and have menus of favorite commands. You can send Tweets and emails directly from Xiki. Xiki is so different it can be a little difficult to wrap your mind around it, so watch the screencasts to see it in action.

Currently Xiki supports Emacs, Vim, and Aquamax.  Note: Vim support is immature, so try Emacs (Linux) and Aquamax (OS X). Emacs runs in GUI mode by default, so you don't need Xemacs or other variants just to get GUI mode.


You can download and install it from github.com/trogdoro/xiki. Linux users need to install Ruby and ruby-dev 1.9.3, and ruby-railties. Then follow these steps to install Xiki:

$ git clone git://github.com/trogdoro/xiki.git
Cloning into 'xiki'...
remote: Reusing existing pack: 6282, done.
remote: Total 6282 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6282/6282), 4.88 MiB | 239.00 KiB/s, done.
Resolving deltas: 100% (2980/2980), done.
Checking connectivity... done.
$ cd xiki
$ sudo gem install bundler
Successfully installed bundler-1.6.3
1 gem installed
Installing ri documentation for bundler-1.6.3...
Installing RDoc documentation for bundler-1.6.3...
$ bundle
$ sudo ruby etc/command/copy_xiki_command_to.rb /usr/bin/xiki
Fetching gem metadata from https://rubygems.org/........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.6.9
[...]
Using trogdoro-el4r 1.0.10
Using xiki 1.0.1a from source at .
Using bundler 1.6.3
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
$ sudo ruby etc/command/copy_xiki_command_to.rb /usr/bin/xiki
Putting the 'xiki' shell command at:
  /usr/bin/xiki
Finished.

Now run the xiki command:

$ xiki
$ > Summary
The 'xiki' shell command is mostly meant to be called by programs
that want to interface with Xiki.  But it is sometimes useful for
people to call it directly.  Example usages:
$ xiki ip
$ xiki docs/faq

Setting up your editor The most common way to use Xiki is from a text editor. For example, from in a text editor, typing "tables" on any blank line and then double-clicking on it (or typing control-enter or command-enter) to browse and update your mysql database. See the README.md file in the Xiki dir for help setting up your editor. You can view it by typing this command or going to this url: $ xiki readme https://github.com/trogdoro/xiki > Service The 'xiki' shell command automatically runs a service in the background to keep things fast. % xiki status % xiki stop % xiki restart > Interfaces Xiki can be used from... - A text editor - The 'xiki' shell command - The http://xiki/ url in your browser (experimental) For more information type: $ xiki docs > Google Group and Twitter Join the google group or follow @xiki on twitter for help with installing and using, or just to chat or share your ideas: http://groups.google.com/group/xiki/ http://twitter.com/xiki > Troubleshooting A couple commands to help you trouble-shoot: % bundle install % xiki restart % xiki readme

If you see all this, then Xiki is installed correctly and working. Try running xiki statusxiki stop and xiki start. These operate like ordinary shell commands, without all the cool stuff like you see in the screencasts. Now how do you get it working in a text editor? Your choices on Linux are Xemacs and Vim. Xemacs is supported better than Vim, and you need Xemacs (or any variant of Emacs that has a graphical interface) rather than plain Emacs. The easy way to configure Xemacs is to run the Xiki Web interface, which you start with xiki web/start. Then point a Web browser to http://localhost:8161/, and you'll see something like figure 2.

fig2 Xiki

Click the "editor setup" button, and then you'll see something like figure 3.

fig3 Xiki

Click the "emacs setup" button, and then when it takes you to the next click on all three buttons in turn. Then fire up Xemacs, and you should be able to do some of the cool things demonstrated in the screencasts. Xiki is under heavy development, so if you run into glitches visit the Xiki group on Google to get help.

Howcome I Never Heard of It?

Xiki's inventor, Craig Muth, has been working on Xiki for ten years. Maybe I've led a sheltered life, but I never heard of it until he started a Kickstarter campaign to raise funds to help accelerate development, and to push it into general release. Craig especially wants to improve the installer and expand Xiki into other text editors, and possibly have some budget for paying contributors.

Xiki is written in Ruby, and carries the permissive MIT license. Craig would love to have some collaborators, and has an open invitation to pair-program with anyone who is interested.

Accessibility and Mobile Devices

When I started playing with Xiki it quickly became clear that it has huge potential as an interface for assistive devices such as Braille keyboards, wearable devices like high-tech glasses and gloves, prosthetics, and speech-to-text/text-to-speech engines, because Xiki seamlessly bridges the gap between machine-readable plain text and GUI functions. Ruby is a wonderful language for doing a lot with a few lines of code. Which also makes Xiki a natural platform for mobile devices, like phones, tablets, smart watches, smart glasses, and all the "Internet of things" that the buzzspeakers are so excited about. The current state of programming these devices is pretty sad: every manufacturer has their own incompatible secret sauce, and they're not user-hackable. Even Android isn't as open as it could be. I would love to see the Linux model of open, hackable code and open device spread to the "Internet of things" as well.

 

Comments

Subscribe to Comments Feed
  • Chris Said:

    Hi Carla, Thanks for this article. I'm going to give xiki a try for sure. I'd like to provide some clarity around your information about Emacs. GNU Emacs is probably what should be recommended, not XEmacs. GNU Emacs (or just "emacs") is capable of running in GUI mode, which is what you're probably aiming for here, as well as in a text-based console. If you run it from a graphical environment, it will run with its full graphical interface and not just in a terminal. XEmacs is a completely different product that started as a fork of GNU Emacs decades ago and is far less vibrant in its development and community and largely out of date. (Unfortunately in my opinion; I used XEmacs for 20 years before it basically died, so I moved over to GNU Emacs several years ago.) Thanks again for this article and pointing me at a shiny new toy that this old Emacs user can tinker with. Best, Chris

  • Carla Schroder Said:

    Thanks Chris. I'm not very Emacs-fluent, so I appreciate your advice.

  • Joseph Said:

    This reminds me of the IPython Notebook: http://ipython.org/notebook.html

  • dgrb Said:

    Well, it looks interesting, but after following your steps to the letter (including installing git) whenever I try anything I get timeout errors: "expected xiki_process.rb to respond after we started it, but it is not responding"

  • Paul Said:

    Same problem here. expected xiki_process.rb to respond after we started it, but it is not responding /home/guy/xiki/etc/command/xiki_command.rb:147:in `get_response': Timeout::Error (Timeout::Error) from /home/guy/xiki/etc/command/xiki_command.rb:127:in `run' from /home/guy/xiki/bin/xiki:34:in `' from /usr/bin/xiki:2:in `load' from /usr/bin/xiki:2:in `

    '

  • Yogesh Said:

    If you are getting that error means ruby-dev package is not installed. Install ruby-dev by running "sudo apt-get install ruby-dev" and then run "bundle" this will work.

  • dgrb Said:

    'fraid not - I have ruby-dev installed - it was in the instructions, after all - and running bundle results in "Could not locate Gemfile". Clearly this is nowhere near ready for primetime.

  • Shawn Wilson Said:

    Fascinating subject, Carla! I like what Xiki is shooting for and look forward to trying it out. I have a similar interest in finding new ways to interact with a command shell. One such feature would be a shell and simple commands (in the Unix spirit) that natively work with URI resources rather than simply (local) file handles and sockets. My attempts to achieve this over the past 5 years has resulted in what I call IOVAR (hosted on Google Code and iovar.com), a BASH-like shell for the web written in Java and currently running in Tomcat on Linux. It supports a mix of shell scripts and single-purpose servlets, among a mix of any other system commands, to easily chain together processes that work with web resources. I'm glad to see there are others that are finding really cool ways to improve our interaction with the PC, and this Xiki looks interesting! Thank you.

  • E911 Said:

    I see how this is - someone shares a point of view you dislike you simply delete it. So much for being a "open community" especially for Linux.com

  • Jose Luis Said:

    Interesting!, but it could be great and I'd take it seroiusly but it does not work... I run it and an error pops out... so why should I take seriously a thing that does not work on the first place?.

  • ThePessimist Said:

    Interesting, but as long as even the installation is a nightmare for most NORMAL USERS it will be just another nice idea for nerds. Linux would take over the world if these kind of things were simple - simple for normal or even stupid users, not only for people that live inside Linux.

  • Elf Sternberg Said:

    I tried using Xiki. The first thing it did after I activated it for Emacs was change my color theme and font selection. This is NOT COOL. It violates every standard of usability. You don't arbitrarily change a user's usability settings without foreknowledge and consent. If I'd been one of those people who needed a full usability matrix, Xiki would have disabled my ability to work until I found someone to remove it for me.

  • laurent Said:

    Hello, this seems very interesting, but has anyone been able to use it ? I have it installed, but I don't find any explanation anywhere on how to launch it in a text editor, as it seems to be the way to use it... One installed, it tells you to look at the readme page to find how to interface it with your text editor.... Am I blind ? I didn't find how to do it anywhere...

  • laurent Said:

    Hello, my bad, after reading this article I found the answers to my questions.. :-P I first came on this webpage after a few tries and have been a bit too fast to get depressed. Cheers !

  • stuckinsd Said:

    I was getting the same error "expected xiki_process.rb to respond after we started it, but it is not responding". Installing ruby-dev worked for me. Afterward I was able to run "xiki web/start".


Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board