p-e-w / ternimal Goto Github PK
View Code? Open in Web Editor NEWSimulate a lifeform in the terminal
License: GNU General Public License v3.0
Simulate a lifeform in the terminal
License: GNU General Public License v3.0
Works like I expected.
No problems compiling it (once I had the right compiler setup) and no issue running it.
Very neat program!
Basically how? Especially considering how small it is for a gif.
It would help distributions if you could include full license text to repository.
"Glow" renderer capable of 1000+ frames per second (if the terminal can handle it)
Would be great if ternimal
would be capable of printing some stats after the run (exactly to check what the terminal is capable of, is it fast enough, for example).
This could use the same Fourier system as the thickness function.
While you've stated that it doesn't depend on cargo you could still provide it. This would make it probably easier for new users to access this project.
Beside that providing cargo doesn't make the project depend on it, you could still build the project with plain rustc.
@xTibor already added a cargo build in his repository (https://github.com/xTibor/ternimal/commit/47c36116258385835dc88153046367c9bdbf103e).
The idea is to extend the current gradient syntax of
DISTANCE:COLOR[,...]
to
X1;Y1;X2;Y2[;...]:COLOR[,...]
Where the x(n)/y(n) coordinates are locations in a 1x1 square whose coloring is determined using a combination of a Delaunay mesh and Barycentric interpolation.
The program then cyclically animates the movement of each point to the next location x(n+1)/y(n+1) every tick
seconds (new parameter).
This idea would dramatically enhance the texturing and animation capabilities of Ternimal.
I've seen in the README that Cargo isn't needed to build. However, I'm finding that this increases the number of steps needed to install this project relative to having a Cargo.toml file:
With Cargo support, I could install ternimal with a one-liner: cargo install ternimal --git https://github.com/p-e-w/ternimal.git
.
This would download, build, and install ternimal in ~/.cargo/bin
, which is in $PATH
.
However, atm I have to manually clone, then run rustc
, and then copy the output manually to somewhere in $PATH
.
In short, having Cargo support would be a very nice to have.
Technically this is a Rust issue but thought I'd put it here so if anyone is trying to figure out how to fix it
I'm using Linux Mint 20.1 and this is what I get when I try to build:
rustc -O ternimal.rs
error: linking with `cc` failed: exit code: 1
Solution:
sudo apt-get install libfreetype6-dev
If that doesn't work try installing cmake:
sudo apt install cmake
this is probably completely unfeasible, but it would be cool if there was an option to add "eyes" 👀 (I'm thinking 2 little blocks on one of the ends) to the "ternimal".
It would be even nicer if one could Ctrl+Z to continue issuing more Bash/whatever commands (or even start ncurses things like Vim), yet background Ternimal still lived and also perceived non-whitespace characters as walls.
Here's everything from the xfce4-terminal
0.6.3 on Xubuntu 16.04 LTS:
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads/spyder-master$ cd ..
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ wget https://github.com/p-e-w/ternimal/raw/master/ternimal.rs
--2017-11-04 20:56:24-- https://github.com/p-e-w/ternimal/raw/master/ternimal.rs
Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113
Connecting to github.com (github.com)|192.30.253.112|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/p-e-w/ternimal/master/ternimal.rs [following]
--2017-11-04 20:56:25-- https://raw.githubusercontent.com/p-e-w/ternimal/master/ternimal.rs
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.84.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.84.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 38158 (37K) [text/plain]
Saving to: ‘ternimal.rs’
ternimal.rs 100%[==================================================================================================================================================================>] 37.26K --.-KB/s in 0.06s
2017-11-04 20:56:25 (652 KB/s) - ‘ternimal.rs’ saved [38158/38158]
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ aptitude search rust
p elpa-rust-mode - Major Emacs mode for editing Rust source code
p fcitx-table-rustrad - Flexible Input Method Framework - Rustrad table
p freeipa-server-trust-ad - FreeIPA centralized identity framework -- AD trust installer
p freeipa-server-trust-ad:i386 - FreeIPA centralized identity framework -- AD trust installer
p golang-github-docker-libtrust-dev - Primitives for identity and authorization
p ibus-table-rustrad - ibus-table input method: Russian Traditional
p libghc-lambdabot-trusted-dev - Lambdabot trusted code.
p libghc-lambdabot-trusted-dev:i386 - Lambdabot trusted code.
v libghc-lambdabot-trusted-dev-5.0.2.1-fabb9:i386 -
v libghc-lambdabot-trusted-dev-5.0.2.1-fc846 -
p libghc-lambdabot-trusted-doc - Lambdabot trusted code.; documentation
p libghc-lambdabot-trusted-prof - Lambdabot trusted code.; profiling libraries
p libghc-lambdabot-trusted-prof:i386 - Lambdabot trusted code.; profiling libraries
v libghc-lambdabot-trusted-prof-5.0.2.1-fabb9:i386 -
v libghc-lambdabot-trusted-prof-5.0.2.1-fc846 -
p libmodule-install-trustmetayml-perl - trust META.yml list of dependencies
p libpod-coverage-trustpod-perl - module to support hints for Pod::Coverage
p libstd-rust-1.15 - Rust standard libraries
p libstd-rust-1.15:i386 - Rust standard libraries
p libstd-rust-1.17 - Rust standard libraries
p libstd-rust-1.17:i386 - Rust standard libraries
p libstd-rust-1.7 - Rust standard libraries
p libstd-rust-1.7:i386 - Rust standard libraries
p libstd-rust-dev - Rust standard libraries - development files
p libstd-rust-dev:i386 - Rust standard libraries - development files
p libthrust-dev - Thrust - Parallel Algorithms Library
p libtrust-store-dev - C++11 library for persisting trust requests - dev files
p libtrust-store-dev:i386 - C++11 library for persisting trust requests - dev files
p libtrust-store-doc - Documentation files for libtrust-store-dev
p libtrust-store2 - C++11 library for persisting trust requests - runtime library
p libtrust-store2:i386 - C++11 library for persisting trust requests - runtime library
p linux-hwe-generic-trusty - Depends on the generic hardware enablement kernel image and headers (dummy transitional packages)
p linux-hwe-generic-trusty:i386 - Depends on the generic hardware enablement kernel image and headers (dummy transitional packages)
p linux-hwe-virtual-trusty - Depends on the virtual hardware enablement kernel image and headers (dummy transitional package)
p linux-hwe-virtual-trusty:i386 - Depends on the virtual hardware enablement kernel image and headers (dummy transitional package)
p linux-image-hwe-generic-trusty - Depends on the generic hardware enablement kernel image (dummy transitional package)
p linux-image-hwe-generic-trusty:i386 - Depends on the generic hardware enablement kernel image (dummy transitional package)
p linux-image-hwe-virtual-trusty - Depends on the virtual hardware enablement kernel image (dummy transitional package)
p linux-image-hwe-virtual-trusty:i386 - Depends on the virtual hardware enablement kernel image (dummy transitional package)
p moonshot-trust-router - Moonshot Trust Router
p moonshot-trust-router:i386 - Moonshot Trust Router
p moonshot-trust-router-dbg - Trust Router Debugging Symbols
p moonshot-trust-router-dbg:i386 - Trust Router Debugging Symbols
p moonshot-trust-router-dev - Development environment for the Trust Router
p moonshot-trust-router-dev:i386 - Development environment for the Trust Router
p pulseaudio-module-trust-store - trust-store module for PulseAudio sound server
p pulseaudio-module-trust-store:i386 - trust-store module for PulseAudio sound server
v python-zope.pagetemplate-untrusted -
v python-zope.security-untrustedpython -
p python-zope.untrustedpython - Zope untrusted Python library
p rust-doc - Rust systems programming language - Documentation
p rust-gdb - Rust debugger (gdb)
p rust-gdb:i386 - Rust debugger (gdb)
p rust-lldb - Rust debugger (lldb)
p rust-lldb:i386 - Rust debugger (lldb)
p rust-src - Rust systems programming language - source code
p rustc - Rust systems programming language
p rustc:i386 - Rust systems programming language
p syslinux-themes-ubuntu-trusty - collection of boot loaders (ubuntu-trusty theme)
p syslinux-themes-ubuntu-trusty:i386 - collection of boot loaders (ubuntu-trusty theme)
p trust-store-bin - Daemon binaries to be used by services.
p trust-store-bin:i386 - Daemon binaries to be used by services.
p trust-store-tests - Test files for libtrust-store1
p trust-store-tests:i386 - Test files for libtrust-store1
p trustedqsl - QSL log signing for the Logbook of the World (LoTW)
p trustedqsl:i386 - QSL log signing for the Logbook of the World (LoTW)
p ubuntu-gnome-wallpapers-trusty - Ubuntu GNOME 14.04 Wallpapers
p ubuntu-wallpapers-trusty - Ubuntu 14.04 Wallpapers
p ubuntukylin-wallpapers-trusty - Ubuntu Kylin 14.04 Wallpapers
p uncrustify - C, C++, C#, D, Java and Pawn source code beautifier
p uncrustify:i386 - C, C++, C#, D, Java and Pawn source code beautifier
p xubuntu-community-wallpapers-trusty - Xubuntu community wallpapers (Trusty)
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ sudo aptitude install rustc
[sudo] password for jaervinen:
The following NEW packages will be installed:
libllvm3.9{a} libstd-rust-1.17{a} libstd-rust-dev{a} rustc
The following packages are RECOMMENDED but will NOT be installed:
rust-gdb rust-lldb
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 39.2 MB of archives. After unpacking 121 MB will be used.
Do you want to continue? [Y/n/?]
Get: 1 http://fi.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libllvm3.9 amd64 1:3.9.1-4ubuntu3~16.04.2 [11.2 MB]
Get: 2 http://fi.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libstd-rust-1.17 amd64 1.17.0+dfsg2-8~ubuntu0.16.04.2 [18.4 MB]
Get: 3 http://fi.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libstd-rust-dev amd64 1.17.0+dfsg2-8~ubuntu0.16.04.2 [9,600 kB]
Get: 4 http://fi.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 rustc amd64 1.17.0+dfsg2-8~ubuntu0.16.04.2 [30.5 kB]
Fetched 39.2 MB in 40s (975 kB/s)
Selecting previously unselected package libllvm3.9:amd64.
(Reading database ... 375796 files and directories currently installed.)
Preparing to unpack .../libllvm3.9_1%3a3.9.1-4ubuntu3~16.04.2_amd64.deb ...
Unpacking libllvm3.9:amd64 (1:3.9.1-4ubuntu3~16.04.2) ...
Selecting previously unselected package libstd-rust-1.17:amd64.
Preparing to unpack .../libstd-rust-1.17_1.17.0+dfsg2-8~ubuntu0.16.04.2_amd64.deb ...
Unpacking libstd-rust-1.17:amd64 (1.17.0+dfsg2-8~ubuntu0.16.04.2) ...
Selecting previously unselected package libstd-rust-dev:amd64.
Preparing to unpack .../libstd-rust-dev_1.17.0+dfsg2-8~ubuntu0.16.04.2_amd64.deb ...
Unpacking libstd-rust-dev:amd64 (1.17.0+dfsg2-8~ubuntu0.16.04.2) ...
Selecting previously unselected package rustc.
Preparing to unpack .../rustc_1.17.0+dfsg2-8~ubuntu0.16.04.2_amd64.deb ...
Unpacking rustc (1.17.0+dfsg2-8~ubuntu0.16.04.2) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up libllvm3.9:amd64 (1:3.9.1-4ubuntu3~16.04.2) ...
Setting up libstd-rust-1.17:amd64 (1.17.0+dfsg2-8~ubuntu0.16.04.2) ...
Setting up libstd-rust-dev:amd64 (1.17.0+dfsg2-8~ubuntu0.16.04.2) ...
Setting up rustc (1.17.0+dfsg2-8~ubuntu0.16.04.2) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Current status: 0 (-81) new.
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ rustc -O te
teamviewer_12.0.85001_i386.deb ternimal.rs
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ rustc -O ternimal.rs
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
92 | arg_var!(speed, 30.0, 0.0, 1000.0);
| ----------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
92 | arg_var!(speed, 30.0, 0.0, 1000.0);
| ----------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
92 | arg_var!(speed, 30.0, 0.0, 1000.0);
| ----------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
94 | arg_var!(fps, 30.0, 0.1, 600.0);
| -------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
94 | arg_var!(fps, 30.0, 0.1, 600.0);
| -------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
94 | arg_var!(fps, 30.0, 0.1, 600.0);
| -------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
107 | arg_var!(width, 60, 1, 500);
| ---------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
107 | arg_var!(width, 60, 1, 500);
| ---------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
107 | arg_var!(width, 60, 1, 500);
| ---------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
108 | arg_var!(height, 40, 1, 500);
| ----------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
108 | arg_var!(height, 40, 1, 500);
| ----------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
108 | arg_var!(height, 40, 1, 500);
| ----------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
110 | exit!("Invalid height '{}': Height must be a multiple of 2.", height);
| ---------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
110 | exit!("Invalid height '{}': Height must be a multiple of 2.", height);
| ---------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
110 | exit!("Invalid height '{}': Height must be a multiple of 2.", height);
| ---------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
117 | exit!("Invalid length '{} to {}': Length must be between 0 and 1000.", length_range.from, length_range.to);
| ----------------------------------------------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
117 | exit!("Invalid length '{} to {}': Length must be between 0 and 1000.", length_range.from, length_range.to);
| ----------------------------------------------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
117 | exit!("Invalid length '{} to {}': Length must be between 0 and 1000.", length_range.from, length_range.to);
| ----------------------------------------------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
121 | arg_var!(segments, 10, 1, 1000);
| -------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
121 | arg_var!(segments, 10, 1, 1000);
| -------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
121 | arg_var!(segments, 10, 1, 1000);
| -------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
137 | exit!("Invalid thickness specification: There must be 1, or 4, or 7, ... coefficients; {} were supplied.",
| _________- starting here...
138 | | coefficients.len());
| |____________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
137 | exit!("Invalid thickness specification: There must be 1, or 4, or 7, ... coefficients; {} were supplied.",
| _________- starting here...
138 | | coefficients.len());
| |____________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
137 | exit!("Invalid thickness specification: There must be 1, or 4, or 7, ... coefficients; {} were supplied.",
| _________- starting here...
138 | | coefficients.len());
| |____________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
159 | exit!("Invalid thickness specification: Maximum thickness is {}; must be between 0 and 1000.", max_thickness);
| -------------------------------------------------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
159 | exit!("Invalid thickness specification: Maximum thickness is {}; must be between 0 and 1000.", max_thickness);
| -------------------------------------------------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
159 | exit!("Invalid thickness specification: Maximum thickness is {}; must be between 0 and 1000.", max_thickness);
| -------------------------------------------------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
164 | arg_var!(padding, min!(max_thickness, max_padding), 0.0, max_padding);
| ---------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
164 | arg_var!(padding, min!(max_thickness, max_padding), 0.0, max_padding);
| ---------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
164 | arg_var!(padding, min!(max_thickness, max_padding), 0.0, max_padding);
| ---------------------------------------------------------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
171 | exit!("Invalid radius '{} to {}': For the configured width, height, and padding, \
| _________- starting here...
172 | | radius must be between 0 and {}.", radius_range.from, radius_range.to, max_radius);
| |___________________________________________________________________________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
171 | exit!("Invalid radius '{} to {}': For the configured width, height, and padding, \
| _________- starting here...
172 | | radius must be between 0 and {}.", radius_range.from, radius_range.to, max_radius);
| |___________________________________________________________________________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
171 | exit!("Invalid radius '{} to {}': For the configured width, height, and padding, \
| _________- starting here...
172 | | radius must be between 0 and {}.", radius_range.from, radius_range.to, max_radius);
| |___________________________________________________________________________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
183 | exit!("Insufficient arena size for path generation: For the configured radius and padding, \
| _________- starting here...
184 | | either width or height must be at least {}.", min_size);
| |________________________________________________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
183 | exit!("Insufficient arena size for path generation: For the configured radius and padding, \
| _________- starting here...
184 | | either width or height must be at least {}.", min_size);
| |________________________________________________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
183 | exit!("Insufficient arena size for path generation: For the configured radius and padding, \
| _________- starting here...
184 | | either width or height must be at least {}.", min_size);
| |________________________________________________________________________- ...ending here: in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:26:9
|
26 | eprint!("\x1B[31m");
| ^^^^^^
...
1127 | exit!("{}", error);
| ------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:27:9
|
27 | eprint!($($arg)*);
| ^^^^^^
...
1127 | exit!("{}", error);
| ------------------- in this macro invocation
|
= help: did you mean `print!`?
error: cannot find macro `eprint!` in this scope
--> ternimal.rs:29:9
|
29 | eprint!("\x1B[m\n");
| ^^^^^^
...
1127 | exit!("{}", error);
| ------------------- in this macro invocation
|
= help: did you mean `print!`?
error: aborting due to 39 previous errors
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ ./ternimal length=100 segments=50 thickness=1,4,1,0 radius=6,12 gradient=0:#666600,0.5:#00ff00,1:#003300
bash: ./ternimal: No such file or directory
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ ./ternimal.rs length=100 segments=50 thickness=1,4,1,0 radius=6,12 gradient=0:#666600,0.5:#00ff00,1:#003300
bash: ./ternimal.rs: Permission denied
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ chmod +x ternimal.rs
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$ ./ternimal.rs length=100 segments=50 thickness=1,4,1,0 radius=6,12 gradient=0:#666600,0.5:#00ff00,1:#003300
./ternimal.rs: line 1: //: Is a directory
./ternimal.rs: line 2: //: Is a directory
./ternimal.rs: line 3: syntax error near unexpected token `('
./ternimal.rs: line 3: `// Copyright (c) 2017 Philipp Emanuel Weidmann <[email protected]>'
jaervinen@rautadesk1-vm-ubuserv1604-0:~/Downloads$
So, assuming I'm not doing anything wrong, Ternimal ain't working as straightforwardly as it's intended to.
Has anyone managed to make this work in PuTTY ?
Ternimal hides the cursor while drawing a frame to suppress flickering. If Ctrl+C is pressed during this time, Ternimal exits but the cursor remains hidden.
./ternimal thickness=15
runs fine, but
./ternimal thickness=15 padding=0
gives
Insufficient arena size for path generation: For the configured radius and padding, either width or height must be at least 96.
In other words, making more space (padding=0
) somehow results in less space.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.