___
/ | __________________
/ /| | / ___/ ___/ / / __ \
/ ___ |(__ ) /__/ / / /_/ /
/_/ |_/____/\___/_/_/\____/
$> asciio [file.asciio] # GUI application using Gtk3
$> tasciio [file.asciio] # TUI application
$> asciio_to_text file.asciio # converts asciio files to ASCII
$> text_to_asciio ... # makes an asciio file from text
Asciio allows you to draw ASCII (or Unicode) diagrams in a Gtk3 GUI or TUI. The diagrams can be saved as ASCII text or in a format that allows you to modify them later.
Asciio is especially useful if you want diagrams under version control with the rest of your code and prefer keyboard editing over mouse-heavy drawing tools.
Both GUI and TUI have vim-like bindings (shortcuts), bindings can be customized.
Diagrams consist of boxes and text elements connected by arrows. Boxes stay connected when moved around.
Asciio works well for software architecture sketches, network layouts, or any diagrams that must remain readable in monospaced text environments like terminals or code comments.
Asciio can also be scripted if you want to generate your diagrams.
Full documentation, including installation and OCI image, are found at Online Documentation
.-------------------------------------------------------------.
| ........................................................... |
| ........................................................... |
| ........................................................... |
| ..........-------------..------------..--------------...... |
| .........| stencils > || asciio > || box |..... |
| .........| Rulers > || computer > || text |..... |
| .........| File > || people > || wirl_arrow |..... |
grid----->......'-------------'| divers > || axis |..... |
| ..................^.....'------------'| ... |..... |
| ..................|...................'--------------'..... |
| ........................................................... |
| ........................................................... |
| ..................|........................................ |
'-------------------|-----------------------------------------'
|
context menu access some commands
but most are accessed through the keyboard
You can export to a file in ASCII by using a '.txt' file extension.
You can also export the selection, in ASCII, to the Primary clipboard:
Binding: «y» «Y»
.----------.
| title |
.----------. |----------| ************
| | | body 1 | * *
'----------' | body 2 | ************
'----------'
any text
(\_/) |
text (O.o) <------'
(> <)
.--------------.
/ a == b \ __________
( && ) \ \
\ 'string' ne '' / ) process )
'--------------' /_________/
,', _..---.._
,' ', .'' ''.
,' ', / \
: edit me : | edit me |
', ,' \ /
', ,' '.. ..'
',' '--...--'For simple elements, put your design in a box, with or without a frame.
The "exec-box" element lets you put the output of an external application in a box, in the example below the table is generated, if you already have text in a file you can use 'cat your_file' as the command.
+------------+------------+------------+------------+
| input_size ‖ algorithmA | algorithmB | algorithmC |
+============+============+============+============+
| 1 ‖ 206.4 sec. | 206.4 sec. | 0.02 sec. |
+------------+------------+------------+------------+
| 250 ‖ - | 80 min. | 2.27 sec. |
+------------+------------+------------+------------+
Rotating the end clockwise or counter-clockwise changes its direction.
^ ^
| -----. \
| | \
'---- | '-------
------> |
v
A set of whirl arrows connected to each other.
.----------. .
| | \ / \
.-------' ^ \ / \
| .-----------> \ ' .
| '----. \ /
| | \ /
'--------' '------'
-------. .-------
\ /
\ / ^
| ^
/ \ | /
/ \ | /
------' '------- -------->
.---. .---. .---. .---. .---. .---.
OS API '---' '---' '---' '---' '---' '---'
| | | | | |
v v | v | v
.------------. | .-----------. | .-----.
| Filesystem | | | Scheduler | | | MMU |
'------------' | '-----------' | '-----'
| | | |
v | | v
.----. | | .---------.
| IO |<----' | | Network |
'----' | '---------'
| | |
v v v
.---------------------------------------.
| HAL |
'---------------------------------------'
.-Base::Class::Derived_B
/
Something::Else /
\ .----Base::Class::Derived_C
\ /
'----Base::Class
' \
/ '----Latest::Greatest
Some::Thing--'
_____
| ___ |
||___|| load
| ooo |--.------------------.------------------------.
'_____' | | |
v v v
.----------. .--------------------------. .----------------.
| module C | | module A | | module B |
'----------' |--------------------------| | (instrumented) |
| | .-----. | '----------------'
'---------------->| A.o | | |
| '-----' | |
| .------------------. | |
| | A.instrumented.o |<-------------'
| '------------------' |
'--------------------------'
The "goat" project (https://github.com/blampe/goat) must be installed.
You can call Asciio from vim and insert your diagram.
map <leader><leader>a :call TAsciio()<cr>
function! TAsciio()
let line = getline('.')
let tempn = tempname()
let tempnt = tempn . '.txt'
let temp = shellescape(tempn)
let tempt = shellescape(tempnt)
exec "normal i Asciio_file:" . tempn . "\<Esc>"
if ! has("gui_running")
exec "silent !mkdir -p $(dirname " . temp . ")"
exec "silent !cp ~/.config/Asciio/templates/empty.asciio ". temp . "; tasciio " . temp . "; asciio_to_text " . temp . " >" . tempt
exec "read " . tempnt
endif
redraw!
endfunction
SVG conversion: goat
Tree generation: ascii_tree
ASCII Math and other: Diagon
Send me links to your favorites tools (only command line, no libs) and I'll add them if they integrate will in Asciio.
The OCI directory contains a build file Containerfile, you can use the same commands to install locally.
Read the Installation guide for more information.
Khemir Nadim ibn Hamouda
https://github.com/nkh
CPAN ID: NKH
Qin Qing
[email protected]




