Let us create Linux or Unix console Christmas tree and snow on your Linux desktop just for fun and profit. First, you need to install a Perl module called Acme::POE::Tree. It is an animated Christmas tree module. I’ve tested this on Linux, OS X and Unix-like system.
I tested following instructions on a Debian/Ubuntu Linux 17.10/18.04 LTS and CentOS Linux 7.x and macOS Unix desktop system.
Install Perl curses lib
Type the following apt-get command/apt command to install lib on a Debian/Ubuntu Linux:
$ sudo apt install libcurses-perl libcurses-ui-perl libcurses-widgets-perl
If you are using a CentOS/RHEL Linux (first turn on EPEL repo on a RHEL/CentOS 7 or turn on EPEL repo on a RHEL/CentOS 6 as described here), using yum command:
$ sudo yum install perl-Curses perl-Curses-UI perl-CPAN perl-POE
If you are using a Fedora Linux, type the following dnf command:
$ sudo dnf install perl-Curses perl-Curses-UI perl-CPAN perl-POE
Install compilers and build tools on Linux
See the following docs:
- CentOS / RHEL 7: Install GCC (C and C++ Compiler) and Development Tools
- Ubuntu Install GNU GCC Compiler and Development Environment
- Debian Install GNU GCC Compiler and Development Environment
- Download and Install C, C++ Compiler on Red Hat Enterprise 5 (RHEL)
Install Acme::POE::Tree
The easiest way to install any perl module is to use the cpan (Comprehensive Perl Archive Network). Open the terminal application and type the following command to install Acme::POE::Tree:
## run as root ## perl -MCPAN -e 'install Acme::POE::Tree' |
Sample outputs:
Installing /home/vivek/perl5/man/man3/POE::NFA.3pm Installing /home/vivek/perl5/man/man3/POE::Kernel.3pm Installing /home/vivek/perl5/man/man3/POE::Loop.3pm Installing /home/vivek/perl5/man/man3/POE::Resource.3pm Installing /home/vivek/perl5/man/man3/POE::Filter::Map.3pm Installing /home/vivek/perl5/man/man3/POE::Resource::SIDs.3pm Installing /home/vivek/perl5/man/man3/POE::Loop::IO_Poll.3pm Installing /home/vivek/perl5/man/man3/POE::Pipe::TwoWay.3pm Appending installation info to /home/vivek/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod RCAPUTO/POE-1.367.tar.gz /usr/bin/make install -- OK RCAPUTO/Acme-POE-Tree-1.022.tar.gz Has already been unwrapped into directory /home/vivek/.cpan/build/Acme-POE-Tree-1.022-uhlZUz RCAPUTO/Acme-POE-Tree-1.022.tar.gz Has already been prepared Running make for R/RC/RCAPUTO/Acme-POE-Tree-1.022.tar.gz cp lib/Acme/POE/Tree.pm blib/lib/Acme/POE/Tree.pm Manifying 1 pod document RCAPUTO/Acme-POE-Tree-1.022.tar.gz /usr/bin/make -- OK Running make test PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/01_basic.t .. ok All tests successful. Files=1, Tests=2, 6 wallclock secs ( 0.09 usr 0.03 sys + 0.53 cusr 0.06 csys = 0.71 CPU) Result: PASS RCAPUTO/Acme-POE-Tree-1.022.tar.gz Tests succeeded but one dependency not OK (Curses) RCAPUTO/Acme-POE-Tree-1.022.tar.gz [dependencies] -- NA
Show Christmas tree in the shell
Simply type the following command:
## perl one liner to show Xmas tree ## perl -MAcme::POE::Tree -e 'Acme::POE::Tree->new()->run()' |
Sample outputs:
Tree customization
Here is my tree.pl:
#!/usr/bin/perl # Use cpan module that we installed use Acme::POE::Tree; my $tree = Acme::POE::Tree->new( { star_delay => 1.5, # shimmer star every 1.5 sec light_delay => 2, # twinkle lights every 2 sec run_for => 10, # automatically exit after 10 sec } ); $tree->run(); |
Now can play with your tree modifying star_delay, run_for, and light_delay. And ,there you have it a a Christmas tree in your shell for fun.
Not a fan of Perl? Try BASHTree
You can create animated Christmas tree in bash shell running on a Linux, macOS, *BSD, and Unix-like system. Use the wget command to grab the source code:
$ wget https://github.com/sergiolepore/ChristBASHTree/raw/master/tree-EN.sh
Run it as follows:
$ bash tree-EN.sh
Sample outputs:
Snow in you screen gnome desktop
Install gsnow gnome extension to snow on your desktop. Open Ubuntu app store and search for gsnow:
Click on the extension and select INSTALL
Once installed you can see snow on your desktop:
If you enjoyed this desktop fun app, you may also like to use the following apps on Linux:
- Christmas Tree For Your Terminal
- Cat And Mouse Chase All Over Your Screen
- Bastet Tetris(r) clone with block-choosing AI for console
- The Digital Rain: Simulates the display from "The Matrix"
- sl – a mirror version of ls
- Summon Swarms Of Penguins To Waddle About The Desktop
- Run Steam Locomotive On Your Desktop
- Let it Snow On Your Desktop
- Text Mode Box and Comment Drawing
Tested also on Windows 7 with Cygwin. It works well.
If you are behind a proxy, call cpan, then o conf init /proxy/ enter http://:, as stated, e.g. here: https://stackoverflow.com/questions/11541428/using-cpan-with-a-proxy-failing-after-o-conf-init-proxy
Remember to o conf commit.
Hi,
thx for the script but I have an error on Manjaro:
Test Summary Report
——————-
t/01_basic.t (Wstat: 7424 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 29
Parse errors: Bad plan. You planned 2 tests but ran 1.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.02 cusr 0.00 csys = 0.04 CPU)
Result: FAIL
Failed 1/1 test programs. 1/1 subtests failed.
Makefile:852 : la recette pour la cible « test_dynamic » a échouée
make: *** [test_dynamic] Erreur 29
RCAPUTO/Acme-POE-Tree-1.022.tar.gz
/usr/bin/make test — NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports RCAPUTO/Acme-POE-Tree-1.022.tar.gz
I got them same error worked after run
`sudo perl -MCPAN -e ‘install POE’ `
and then
`sudo perl -MCPAN -e ‘install Acme::POE::Tree’`
merry christmas :D
Just a tip for those wanting to run on Fedora: I had to install perl-Curses for this to work for me.
Nice find, in the shell script you miss ->run(); though :)
Hah.. yes. I did sorry about that :(
After Gif 01, I think you meant to say “Tree customization” instead of “Teee customization”. Nice cristmass tutorial though :-)
Thanks for the heads up! :)