diff --git a/README.md b/README.md index 8908179..593cbaf 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,25 @@ # cmatrix Effect -The matrix effect on windows through windows power shell +The matrix effect on Windows through `PowerShell` -![Mareix](https://github.com/matriex/cmatrix/blob/master/cmatrix.PNG "Matrix effect") +![Matrix](demo.gif "Matrix effect") ## How to -1) Open Windows Powershell with Admin Privillege +1) Open `Windows Powershell` (in some cases Admin privilege might be needed) -2) Download and save cmatrix.psm1 to desktop +2) Either download and save [cmatrix.psm1](https://raw.githubusercontent.com/matriex/cmatrix/master/cmatrix.psm1) or just clonethis repo using `git clone https://github.com/matriex/cmatrix` -3) Create a folder cmatrix on "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\" +3) Import the module, set the timeout and enable it: +````powershell +Set-Executionpolicy remotesigned +Import-Module .\cmatrix +Set-ScreenSaverTimeout -Seconds 5 +Enable-ScreenSaver +```` -4) Copy cmatrix.psm1 to "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\cmatrix\cmatrix.psm1" - -5) Type the commands on terminal - - **set-executionpolicy remotesigned** - - **import-module cmatrix** - - **Set-screenSaverTimeout -Seconds 5** - - **Enable-ScreenSaver** +If you are happy with it, then you can put it also in one of your module folders that you can get via `$env:PSModulePath`. Just create a folder named `cmatrix` and put `cmatrix.psm1` in it and then the next time you can just import it as `Import-Module cmatrix` without having to specify the full path. _Author: Oisin Grehan_ + +_Contributor: Christoph Bergmeister_ diff --git a/cmatrix.PNG b/cmatrix.PNG deleted file mode 100644 index dc21951..0000000 Binary files a/cmatrix.PNG and /dev/null differ diff --git a/cmatrix.psm1 b/cmatrix.psm1 index ade1cac..2de974d 100644 --- a/cmatrix.psm1 +++ b/cmatrix.psm1 @@ -197,7 +197,8 @@ function New-Column { [int]$script:head = 1 [int]$script:fade = 0 - [int]$script:fadelen = [math]::Abs($ylimit / 3) + $randomLengthVariation = (1 + (get-random -min -30 -max 50)/100) + [int]$script:fadelen = [math]::Abs($ylimit / 3 * $randomLengthVariation) $script:fadelen += (get-random -min 0 -max $fadelen) @@ -216,21 +217,37 @@ function New-Column { $script:head++ } - - # time to start rendering the darker green "tail?" + + # time to start rendering the darker green "tail?" if ($head -gt $fadelen) { - + & $parentModule Set-BufferCell $xpos $fade ( & $parentModule New-BufferCell -Character ` ([char](get-random -min 65 -max 122)) -Fore darkgreen) > $null - + + # tail end + $tail = $fade-1 + if ($tail -lt $ylimit) { + & $parentModule Set-BufferCell $xpos ($fade-1) ( + & $parentModule New-BufferCell -Character ` + ([char](get-random -min 65 -max 122)) -Fore black) > $null + } + $script:fade++ } - + + # are we done animating? if ($fade -lt $ylimit) { return $true } + + # remove last row from tail end + if (($fade - 1) -lt $ylimit) { + & $parentModule Set-BufferCell $xpos ($fade - 1) ( + & $parentModule New-BufferCell -Character ` + ([char]' ') -Fore black) > $null + } $false } @@ -243,9 +260,9 @@ function New-Column { function Start-ScreenSaver { # feel free to tweak maxcolumns and frame delay - # currently 8 columns with 50ms wait + # currently 20 columns with 30ms wait - Start-CMatrix -max 8 -frame 50 + Start-CMatrix -max 20 -frame 30 } function Register-Timer { diff --git a/demo.gif b/demo.gif new file mode 100644 index 0000000..493f47d Binary files /dev/null and b/demo.gif differ