• Stars
    star
    2,879
  • Rank 15,129 (Top 0.4 %)
  • Language
    CoffeeScript
  • License
    Other
  • Created over 10 years ago
  • Updated almost 4 years ago

Reviews

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

Repository Details

A web terminal based on websocket and tornado

ƸӜƷ butterfly 3.0

Description

Butterfly is a xterm compatible terminal that runs in your browser.

Features

  • xterm compatible (support a lot of unused features!)
  • Native browser scroll and search
  • Theming in css / sass (20 preset themes) endless possibilities!
  • HTML in your terminal! cat images and use <table>
  • Multiple sessions support (à la screen -x) to simultaneously access a terminal from several places on the planet!
  • Secure authentication with X509 certificates!
  • 16,777,216 colors support!
  • Keyboard text selection!
  • Desktop notifications on terminal output!
  • Geolocation from browser!
  • May work on firefox too!

Try it

$ pip install butterfly
$ pip install butterfly[themes]  # If you want to use themes
$ pip install butterfly[systemd]  # If you want to use systemd
$ butterfly

A new tab should appear in your browser. Then type

$ butterfly help

To get an overview of butterfly features.

Run it as a server

$ butterfly.server.py --host=myhost --port=57575

Or with login prompt

$ butterfly.server.py --host=myhost --port=57575 --login

Or with PAM authentication (ROOT required)

# butterfly.server.py --host=myhost --port=57575 --login --pam_profile=sshd

You can change sshd to your preferred PAM profile.

The first time it will ask you to generate the certificates (see: here)

Run it with systemd (linux)

Systemd provides a way to automatically activate daemons when needed (socket activation):

$ cd /etc/systemd/system
$ curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.service
$ curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.socket
$ systemctl enable butterfly.socket
$ systemctl start butterfly.socket

Don't forget to update the /etc/butterfly/butterfly.conf file with your server options (host, port, shell, ...) and to install butterfly with the [systemd] flag.

Contribute

and make the world better (or just butterfly).

Don't hesitate to fork the repository and start hacking on it, I am very open to pull requests.

If you don't know what to do go to the github issues and pick one you like.

If you want to motivate me to continue working on this project you can tip me, see: http://paradoxxxzero.github.io/about/

Client side development use grunt and bower.

Credits

The js part is based on term.js which is based on jslinux.

Author

Florian Mounier

License

butterfly Copyright (C) 2015-2017  Florian Mounier

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.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Docker

There is a docker repository created for this project that is set to automatically rebuild when there is a push into this repository: https://registry.hub.docker.com/u/garland/butterfly/

Example usage

Starting with login and password

docker run --env PASSWORD=password -d garland/butterfly --login

Starting with no password

docker run -d -p 57575:57575 garland/butterfly

Starting with a different port

docker run -d -p 12345:12345 garland/butterfly --port=12345

More Repositories

1

gnome-shell-system-monitor-applet

Display system informations in gnome shell status bar, such as memory usage, cpu usage, network rates…
JavaScript
1,733
star
2

nocolon

nocolon is an utf-8 compatible encoding that removes the need of colons in python files.
Python
121
star
3

jinja2-mode

Jinja2 mode for emacs
Emacs Lisp
64
star
4

pyls-isort

Isort plugin for python-language-server
Python
59
star
5

cutter

Python list cutter tool
Python
35
star
6

clutterm

A clutter terminal emulator in python
Python
35
star
7

better-exceptions-hook

better-exceptions import hook
Python
34
star
8

annealation

Gravitational N-Body simulation rendering with three.js
Rust
29
star
9

material-shell

New shell for Gnome following the Material-design guidelines. Proposing a performant and simple opinionated mouse/keyboard workflow to increase daily productivity and comfort
JavaScript
26
star
10

atom-undo-tree

Never lose your changes on undo/redo anymore.
JavaScript
18
star
11

gnome-shell-focus-effects-extension

Desaturate unfocused windows
JavaScript
16
star
12

butterfly-themes

Repository for butterfly themes
CSS
15
star
13

fawn

The Flask Async uWSGI WebSocket postgresql Notify is a Flask Extension allowing websocket uwsgi broadcasting from postgresql notify channels.
Python
11
star
14

atom-rainbow-delimiters

Highlight delimiters around your cursor.
JavaScript
8
star
15

wsreload

Reload your browser tabs through websocket
Python
7
star
16

tornado-systemd

Tornado systemd socket activation support
Python
7
star
17

gnome-shell-shader-extension

Add shaders to windows
JavaScript
5
star
18

atom-python-import-magic

Import automatically python modules using importmagic
JavaScript
4
star
19

zshrc

My overkill zshrc
Shell
4
star
20

paradoxxxzero.github.io

JavaScript
4
star
21

.emacs.d

My emacs conf files
Emacs Lisp
4
star
22

four.js

Render 4 dimensional objects with three.js
JavaScript
4
star
23

chrome-emacs-mode

Implements in google chrome a number of Emacs bindings and allows quick navigation through websites without using the mouse.
JavaScript
4
star
24

qtile-config

My qtile config
Python
3
star
25

graphit

A free fast online plotter
JavaScript
3
star
26

bemboo

A bem generator based on objects for React 16 use.
JavaScript
3
star
27

zerorc

dotfiles supermodule
Emacs Lisp
3
star
28

umlaut

Uml modeler with physics
JavaScript
3
star
29

autocomplete-google-suggest

Atom package: Completions from google suggestions. (Search field autocompletion)
CoffeeScript
3
star
30

simple_page_screenshot

Take a screenshot from a region in the page and display it. You can them save it or copy the base 64 data uri of it with the context menu. (Copy image URL)
CoffeeScript
2
star
31

butterfly-demos

butterfly executables demos
Python
2
star
32

devtools

Slick web development toolkit
JavaScript
2
star
33

pung

A HTML5 pang rewrite
JavaScript
2
star
34

imgurTheWorld

Easy way to put online images on imgur. Open an image click on the extension button and get the imgur link directly in clipboard.
2
star
35

reddit-platinum

reddit plugin that optimizes reddit keyboard navigation
JavaScript
2
star
36

jsfractals

An html5 fractals drawer
JavaScript
2
star
37

gnome-shell-program-monitor-applet

JavaScript
2
star
38

scudd

React PureComponent shouldComponentUpdate logger, A very small lib for quick React PureComponent logging.
JavaScript
1
star
39

reddit-jump

A reddit plugin to quickly jump between subreddits
JavaScript
1
star
40

luacountdown

A simple countdown in lua and cairo
Python
1
star
41

memory-usage

Gnome shell extensior displaying your memory usage
JavaScript
1
star
42

minimap

A fork of git://randomsample.de/minimap.git
Emacs Lisp
1
star
43

polldance

A poc app for long polling with flask + gevent
Python
1
star
44

graphitGL

Reimplementation of graphit using three js
JavaScript
1
star
45

zero_incubator

Little projects not big enough to have a dedicated repo
JavaScript
1
star
46

next-occurrence

Atom package: Find the next occurrence of selection or word under the cursor.
CoffeeScript
1
star
47

anakata

Anakata - A fast 4d mesh drawer
JavaScript
1
star
48

silex

A simple jquery slider plugin
CoffeeScript
1
star
49

pyregexp

A Python regexp/replace command for Emacs with interactive visual feedback
Emacs Lisp
1
star
50

atom-python-black-isort

Run isort then black on the current python file
JavaScript
1
star
51

reddit-hd

reddit HD : reddit google chrome plugin that maximize your visual reddit experience
JavaScript
1
star
52

coffee2d

coffee2d
JavaScript
1
star
53

kalong

JavaScript
1
star
54

devcore

Meta package for python development environment
Python
1
star
55

tornado-template-mode

A major mode for editing tornado templates
Emacs Lisp
1
star
56

conky-lua-colors

An eye candy conky lua script
Lua
1
star
57

post-it

An http POST request creator
CoffeeScript
1
star
58

qstyle

An XCB X composite manager
Python
1
star
59

atom-one-theme-color-by-project

Patch atom one light and one dark theme to change the hue depending on the current project(s) name.
JavaScript
1
star
60

rfringe

Display the relative location of the region, in the fringe
Emacs Lisp
1
star