Ethenis Framework

So simple, that...
Even THE Name Is Simple

Ethenis is a PHP and JavaScript framework developed to speed up the creation of Single Page Applications. Unlike other projects, Ethenis focuses on a single goal, allowing its size and execution time to stay minimum and thus preventing the slowdown of our page. ❀️ Ethenis!

</>  Source Code
Ethenis-Framework is licensed under the MIT License



Download Ethenis Framework, extract the package and copy all the files into the webpage main folder. Once finished, you should see the following layout:
β”œβ”€β”€   content
β”‚  └──   main.php
β”œβ”€β”€   js
β”‚  └──   ethenis.js
β”œβ”€β”€ {}  config
β”œβ”€β”€   index.php
└──  .htaccess

Ethenis uses an .htaccess file with rewrite rules, therefore, ensure your apache server is configured to read .htaccess files and mod_rewrite is enabled.

Configure Web Layout

The web layout will be set in the config file. With it it's possible to modify the animations duration, the paths the website will manage, and the menu elements.
        "fadeAnimationDuration" : 300,
        "scrollAnimationDuration" : 100,
        "content" : {
            "" : ["home.html", "Home"],
            "info" : ["info.html", "Info", false],
            "/^man\/\d*$/" : ["man.php"]
          "404": "404.html"
  • fadeAnimationDuration: the time in milliseconds for the fade animation between page change.
  • scrollAnimationDuration: the time in milliseconds for the "scrollToTop" animation before page change.
  • content: the content that will be public and its corresponding path.
Content entry format:
  • "<path>" : ["<file-name>[.html|.php]", "<link-string>"]
  • "<path>" : ["<file-name>[.html|.php]", "<link-string>", false]
    β†’ The link won't be added to the navigation menu.
  • "<path-pattern>" : ["<file-name>[.html|.php]"]
    β†’ The link won't be added to the navigation menu.

Set the main content template

All the page design will be supported by an html file template, which will define the content that will remain static in the page. This content will be defined in the main.php file.
            <header class="with-shadow"></header>
                <{ link-template }>
                    <span style="margin: 5px">
                        <{ link-text }>
                <{ /link-template }>
            <{ content }>
  • <{ link-template }>
        [html]<{ link-text }>[html]
    <{ /link-template }>
    β†’ It indicates where to place the link elemeents and the template to follow.
  • <{ content }>
    β†’ It indicates where to place the corresponding content.

Insert content files

The html content to be inserted with each path must be specified inside the content directory, inside its corresponding file, as it was previously specified in the config file.
The PHP and JavaScript code inside those files will also be executed.

To change the page title you have to add the following script to the content file:
    document.title = "<content-title>";

Ethenis PHP special functions

  • Ethenis::get_config()
    β†’ Returns the configuration values as an array.
  • Ethenis::get_config_json()
    β†’ Returns the configuration values as json string.
  • Ethenis::get_path()
    β†’ Returns the actual path.

Ethenis JavaScript special functions

  • __ETHENIS.config
    β†’ Stores ethenis' configuration.
  • __ETHENIS.loadPage(path)
    β†’ Loads a specific page
  • __ETHENIS.reloadContent()
    β†’ Forces ethenis to reload the main content.
  • __ETHENIS.loadLinks(element | [elements])
    β†’ Configures the passed <a> elements to be handled by ethenis. Alternatively you can set the class __eth-link to the desired <a> elements and ethenis will automatically handle them on load.
  • __ETHENIS.onLoad = functionRef
    β†’ Where functionRef is a function. Sets the action to be executed every time new content is loaded.
  • __ETHENIS.onLoadOnce = functionRef
    β†’ Where functionRef is a function. Sets the action to be executed only after the current content is loaded.
  • __ETHENIS.onPageChange = functionRef
    β†’ Where functionRef is a function. Sets the action to be executed only when the current page is left.

Latest posts

Kali 2020.2 desktop and theme updates

kali 2020.2

Today Kali 2020.2 has been released and with it lots of new visual changes and desktop improvements.

Here's a quick summary of what's new:

  • KDE Plasma Makeover & Login
  • PowerShell by Default. Kind of.
  • Kali on ARM Improvements
  • Lessons From The Installer Changes
  • New Key Packages & Icons
  • Behind the Scenes, Infrastructure Improvements
Read more ↦

Pimp my terminal

pimp my term!

As a Linux user, I enjoy working with the terminal, and I find it an especially powerful tool. Therefore, I've spent quite a long time customizing it, and here is my definitive guide for terminal customizations.

First I thought I would only create a short post with some of the tweaks I like. But I had so many things I wanted to show that this started to become a considerably long post. So I've decided to publish it now, with as many tips as I can write, and I'll be updating it with new tips & tricks.

terminal preview Read more ↦

Kali 2020.1 visual updates

Today Kali 2020.1 has been released and with it lots of new visual changes for its desktop. The following is a brief feature summary for this release:

  • Non-Root by default
  • Kali single installer image
  • Kali NetHunter Rootless
  • Improvements to theme & kali-undercover
  • New tools

But here I'm not going to explain all the latest improvements that have been introduced in this version but to reveal all the different themes and visual modifications that come with it. By the way, an essential change that I do want to emphasize is the switch to a default non-root user, with the username "kali" and password "kali". For more of the reasons behind this switch, please see this blog post: Kali Default Non-Root User.

kali 2020.1 gnome desktop Read more ↦

Kali 2019.4 new themes πŸ‰

Today Kali Linux 2019.4 just launched, and I'm so excited to announce that, for the last two months, I've been working together with the Kali team developing all its new look. The first noticeable change is the move from Gnome to Xfce as the default desktop. This change was made to make default Kali more comfortable for low resource computers, as it is also commonly used on small ARM devices that don't have as high performance as an average desktop.

If you don't want to leave Gnome, don't worry. Kali now offers a Gnome build for you with some of the new desktop themes. As this release was focused on the Xfce DE change, most of the latest changes were intended for this desktop. For next releases, more changes will be available for all kali flavors to get them "close" to a similar user experience no matter the environment you run.

kali 2019.4 new desktop preview Read more ↦

Build a PHP minimal Blog

When I was about to create this new fancy blog for my website, I was wondering what would be the easiest way to implement it without losing much time programming. Moments later, I was doing the same thing I always do when something could be just straight forward. Using an existing framework? Would you say...
... πŸ€¦β€β™‚οΈ

Noup! I created my own ultra-minimal framework to handle it. But that is great because now I can blog in my blog about the blog! 🀯
If that makes any sense at all.

blog preview

Read more ↦

Swagger-js, tips and tricks

This article explains step-by-step how to set up and use the Swagger Client module for your JavaScript project. It also shows examples about how to properly use it and some useful tips and tricks that may help you in your development.

Swagger logo

About Swagger-js

Exactly as they define it in their github repository: Swagger Client is a JavaScript module that allows you to fetch, resolve, and interact with Swagger/OpenAPI documents. Thanks to these tools the developer is able to define the API to be used in a clean manner, and ensure all the code uses the latest API version.

Read more ↦

New Blog!


Finally! I've added a blog to my personal website 😎

Since I created this website I've been using it as a personal portfolio and a place to share my projects with the world. But many times I've felt I wanted to upload something less serious, not just projects. Something like tutorials, cool tech related posts, or just my thoughts... That's why I've just opened this blog and I hope I'll be adding lots of posts soon.

Read more ↦


Kali Linux Dragon logo

Kali Linux themes

Flat Remix cover

Flat Remix ICON theme

Flat Remix GNOME theme

Flat Remix GNOME theme

Flat Remix GTK theme

Flat Remix GTK theme



Flat Remix css library

Flat Remix CSS Library

Skeuos CSS Library

Skeuos CSS Library

Flat Remix KDE themes

Flat Remix KDE themes

Neural network with genetic algorithms in Unity3d

Neural network with genetic algorithms

Color Fixer logo

Color Fixer

Tetяis JS

Tetяis JS

Ethenis Framework logo

Ethenis Framework

Consider supporting my work with a Donation πŸ˜‰