Sysfex - Another system information tool written in C++

Overview

Sysfex

Another neofetch-like system information fetching tool for linux-based systems written in C++

Installation

To install this program using the provided installer script:

git clone https://github.com/mebesus/sysfex
cd sysfex
./installer.sh

The installer script uses g++ for compiling sysfex and sudo for elevated permissions. If you don't have g++ installed already, install it before running the script. You may see a warning or two, ignore them.

Usage

Flag Description
--help Print available commands
--ascii <value> If value = 0, the ascii art won't be shown (sysfex --ascii 0). Else it'll be shown (sysfex --ascii 1)
--ascii-dir <path-to-ascii> Show an ascii image from anywhere of your computer on output
--ascii-beside-txt <value> Choose whether ascii art will be printed beside infos or not ( ASCII will be printed first, then info)
--icons <value> If value = 0, no font-icons will be shown, else they'll be
--config <path-to-file> Specify the file which you want to be used as the config file
--printables <path-to-file> Specify the file which you want to be used as the printables file

Configuration

Global config files can be found inside /opt/sysfex and local ones can be found in ~/.config/sysfex. Please note that global config files are used as fallback when local config files are absent, so modifying global config files are deprecated.

Gallery

FAQ

  • I get the error <X11/Xlib.h> header file is not found

Install libx11 or libx11-dev (whichever name your package manager uses) if you see this error

  • The font icons doesn't look okay / looks like boxes

You may wish to install the font-awesome and nerd-fonts package for displaying font-icons properly

Contribute?

Interested to be a part of this project? Maybe report a bug or two, or request features. I'm waiting to see your PR.

Plans for the future

  • Add color support for ASCII outputs
  • Improve the config stuffs

Special thanks to

  • Some cool fetch tools spreaded all over Github for inspiration and ideas.
  • The contributors, testers and those who gave me ideas as well as spread this project
  • You, for being interested in this project
Comments
  • "std::filesystem has not been declared" installation error

    I tried to install it on Ubuntu but it failed. Here's what was printed:

    #Compiling sysfex... In file included from src/sysfex.cpp:25: src/functions.h:14:37: warning: use of ‘auto’ in parameter declaration only available with ‘-fconcepts-ts’ 14 | void print(string icon, string key, auto value) | ^~~~ src/functions.h: In function ‘void init_config()’: src/functions.h:46:13: error: ‘std::filesystem’ has not been declared 46 | if(std::filesystem::exists("/opt/sysfex/config")) | ^~~~~~~~~~ src/functions.h: In function ‘std::string exec(const char*)’: src/functions.h:89:10: error: ‘unique_ptr’ is not a member of ‘std’ 89 | std::unique_ptr<FILE, decltype(&pclose)> stream{popen(input, "r"), &pclose}; | ^~~~~~~~~~ src/functions.h:1:1: note: ‘std::unique_ptr’ is defined in header ‘’; did you forget to ‘#include ’? +++ |+#include 1 | #define BOLD "\033[1m" src/functions.h:89:25: error: expected primary-expression before ‘,’ token 89 | std::unique_ptr<FILE, decltype(&pclose)> stream{popen(input, "r"), &pclose}; | ^ src/functions.h:89:27: error: expected primary-expression before ‘decltype’ 89 | std::unique_ptr<FILE, decltype(&pclose)> stream{popen(input, "r"), &pclose}; | ^~~~~~~~~~~~~~~~~ src/functions.h:91:8: error: ‘stream’ was not declared in this scope; did you mean ‘std::io_errc::stream’? 91 | if(stream) | ^~~~~~ | std::io_errc::stream In file included from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from src/sysfex.cpp:2: /usr/include/c++/10/bits/ios_base.h:203:24: note: ‘std::io_errc::stream’ declared here 203 | enum class io_errc { stream = 1 }; | ^~~~~~ In file included from src/sysfex.cpp:26: src/fetch_functions.h: In function ‘int Pacman(std::string)’: src/fetch_functions.h:174:10: error: ‘std::filesystem’ has not been declared 174 | std::filesystem::path pkgfolder = path; | ^~~~~~~~~~ src/fetch_functions.h:175:16: error: ‘std::filesystem’ has not been declared 175 | using std::filesystem::directory_iterator; | ^~~~~~~~~~ src/fetch_functions.h:176:45: error: ‘pkgfolder’ was not declared in this scope 176 | return std::distance(directory_iterator(pkgfolder), directory_iterator{}); | ^~~~~~~~~ src/fetch_functions.h:176:26: error: ‘directory_iterator’ was not declared in this scope 176 | return std::distance(directory_iterator(pkgfolder), directory_iterator{}); | ^~~~~~~~~~~~~~~~~~ src/fetch_functions.h:176:75: error: expected ‘)’ before ‘{’ token 176 | return std::distance(directory_iterator(pkgfolder), directory_iterator{}); | ~ ^ | ) src/fetch_functions.h: In function ‘int Portage(std::string)’: src/fetch_functions.h:181:10: error: ‘std::filesystem’ has not been declared 181 | std::filesystem::path pkgfolder = path; | ^~~~~~~~~~ src/fetch_functions.h:183:16: error: ‘std::filesystem’ has not been declared 183 | using std::filesystem::recursive_directory_iterator; | ^~~~~~~~~~ src/fetch_functions.h:184:16: error: ‘recursive_directory_iterator’ was not declared in this scope 184 | for(auto i=recursive_directory_iterator(path); i!=recursive_directory_iterator(); ++i) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/fetch_functions.h: In function ‘void pkgs()’: src/fetch_functions.h:201:13: error: ‘std::filesystem’ has not been declared 201 | if(std::filesystem::exists("/etc/portage")) | ^~~~~~~~~~ src/fetch_functions.h:205:13: error: ‘std::filesystem’ has not been declared 205 | if(std::filesystem::exists("/etc/pacman.d")) | ^~~~~~~~~~ src/fetch_functions.h:209:13: error: ‘std::filesystem’ has not been declared 209 | if(std::filesystem::exists("/etc/apt")) | ^~~~~~~~~~ src/fetch_functions.h:213:13: error: ‘std::filesystem’ has not been declared 213 | if(std::filesystem::exists("/nix")) | ^~~~~~~~~~ src/fetch_functions.h:215:17: error: ‘std::filesystem’ has not been declared 215 | if(std::filesystem::exists("/etc/nix")) | ^~~~~~~~~~ An error occured. Failed to install sysfex

    opened by MrHappyHam 4
  • Binary and Conf directory owned by Root when using `./install.sh`

    Binary and Conf directory owned by Root when using `./install.sh`

    Hi, just to let you know that I had some installation issues. The sysfex binary and the opt configure directory are both owned by root and therefore could not be run by a standard users. This was resolved with a simple chown $USER /usr/bin/sysfex however it should probably be within the install script.

    This was done on Ubuntu 20.0.4 compiled using g++.

    opened by JMuff22 3
  • Segmentation fault when no display is available

    Segmentation fault when no display is available

    Sysfex segfaults when a display is not available. For example, on tty there's no display. Try running it in a tty(Ctrl+Alt+F(n)).

    What happens probably is that when the display is null, X11Display returns nullptr instead of an actual pointer. And dereferencing that causes segfault. Solution is to check for null pointer and take action accordingly.

    bug good first issue 
    opened by mdgaziur 3
  • Added Void Linux pkg number support

    Added Void Linux pkg number support

    Edited the 'src/fetch_functions.h' file and made the program able to print the number of installed packages on a Void Linux system by using the "xbps-query" command, part of the X Binary Package System package manager.

    opened by mirk0dex 1
  • [Bug] macOS

    [Bug] macOS

    ./installer.sh compile errors on macOS, is this supported on Mac?

    Compiling sysfex...
    In file included from src/sysfex.cpp:19:
    src/functions.h:9:37: error: 'auto' not allowed in function prototype
    void print(string icon, string key, auto value)
                                        ^~~~
    src/functions.h:43:5: error: no matching function for call to 'print'
        print("", "--help", "Print this screen");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [18]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:44:5: error: no matching function for call to 'print'
        print("", "--ascii <value>", "If value == 0, don't print the ascii art, else do");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [50]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:45:5: error: no matching function for call to 'print'
        print("", "--ascii-dir <path-to-ascii>", "Specify the file which you want to be shown as ascii-art");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [57]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:46:5: error: no matching function for call to 'print'
        print("", "--ascii-beside-txt <value>", "Choose whether ascii art will be printed beside infos or not");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [61]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:47:5: error: no matching function for call to 'print'
        print("", "--icons <value>", "If value == 0, don't print font-icons beside informations, else do");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [67]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:48:5: error: no matching function for call to 'print'
        print("", "--config <path-to-config>", "Specify the file which you want to be used as the config file");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [62]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:4:
    src/modules/cpu.h:30:5: error: no matching function for call to 'print'
        print("", "CPU", cpu);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:5:
    src/modules/de.h:12:9: error: no matching function for call to 'print'
            print("", "DE/WM", desktop_session);
            ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char *' to 'int' for 3rd argument; dereference the argument with *
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:6:
    src/modules/host.h:18:5: error: no matching function for call to 'print'
        print("", "Host", name+" "+version);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'basic_string<char>' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:7:
    src/modules/kernel.h:5:2: error: no matching function for call to 'print'
            print("", "Kernel", uname_info.release);
            ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'char [256]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:8:
    src/modules/os.h:24:5: error: no matching function for call to 'print'
        print("", "OS", name+" "+uname_info.machine);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'basic_string<char>' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:9:
    src/modules/pkgs.h:48:5: error: no matching function for call to 'print'
        print("", "Pkgs", pkg);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:10:
    src/modules/ram.h:27:5: error: no matching function for call to 'print'
        print("", "Mem", ram);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:11:
    src/modules/resolution.h:12:5: error: no matching function for call to 'print'
        print("", "Res", res);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:12:
    src/modules/shell.h:3:2: error: no matching function for call to 'print'
            print("", "Shell", std::getenv("SHELL"));
            ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'char *' to 'int' for 3rd argument; dereference the argument with *
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:14:
    src/modules/uptime.h:49:5: error: no matching function for call to 'print'
        print("", "Uptime", time);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    17 errors generated.
    An error occured. Failed to install sysfex
    [email protected] ~/sysfex (main) [1]> ./installer.sh
    An existing installation of Sysfex is found. Remove or override it? [Y/n] y
    Removing old sysfex installation
    rm: /usr/bin/sysfex: No such file or directory
    Install Sysfex? [Y/n] y
    Compiling sysfex...
    In file included from src/sysfex.cpp:19:
    src/functions.h:9:37: error: 'auto' not allowed in function prototype
    void print(string icon, string key, auto value)
                                        ^~~~
    src/functions.h:43:5: error: no matching function for call to 'print'
        print("", "--help", "Print this screen");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [18]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:44:5: error: no matching function for call to 'print'
        print("", "--ascii <value>", "If value == 0, don't print the ascii art, else do");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [50]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:45:5: error: no matching function for call to 'print'
        print("", "--ascii-dir <path-to-ascii>", "Specify the file which you want to be shown as ascii-art");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [57]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:46:5: error: no matching function for call to 'print'
        print("", "--ascii-beside-txt <value>", "Choose whether ascii art will be printed beside infos or not");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [61]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:47:5: error: no matching function for call to 'print'
        print("", "--icons <value>", "If value == 0, don't print font-icons beside informations, else do");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [67]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    src/functions.h:48:5: error: no matching function for call to 'print'
        print("", "--config <path-to-config>", "Specify the file which you want to be used as the config file");
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char [62]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:4:
    src/modules/cpu.h:30:5: error: no matching function for call to 'print'
        print("", "CPU", cpu);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:5:
    src/modules/de.h:12:9: error: no matching function for call to 'print'
            print("", "DE/WM", desktop_session);
            ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'const char *' to 'int' for 3rd argument; dereference the argument with *
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:6:
    src/modules/host.h:18:5: error: no matching function for call to 'print'
        print("", "Host", name+" "+version);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'basic_string<char>' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:7:
    src/modules/kernel.h:5:2: error: no matching function for call to 'print'
            print("", "Kernel", uname_info.release);
            ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'char [256]' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:8:
    src/modules/os.h:24:5: error: no matching function for call to 'print'
        print("", "OS", name+" "+uname_info.machine);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'basic_string<char>' to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:9:
    src/modules/pkgs.h:48:5: error: no matching function for call to 'print'
        print("", "Pkgs", pkg);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:10:
    src/modules/ram.h:27:5: error: no matching function for call to 'print'
        print("", "Mem", ram);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:11:
    src/modules/resolution.h:12:5: error: no matching function for call to 'print'
        print("", "Res", res);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:12:
    src/modules/shell.h:3:2: error: no matching function for call to 'print'
            print("", "Shell", std::getenv("SHELL"));
            ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'char *' to 'int' for 3rd argument; dereference the argument with *
    void print(string icon, string key, auto value)
         ^
    In file included from src/sysfex.cpp:20:
    In file included from src/modules.h:14:
    src/modules/uptime.h:49:5: error: no matching function for call to 'print'
        print("", "Uptime", time);
        ^~~~~
    src/functions.h:9:6: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'int' for 3rd argument
    void print(string icon, string key, auto value)
         ^
    17 errors generated.
    An error occured. Failed to install sysfex
    
    opened by shadows1003929 5
  • Misalignment of infos when using ASCII art with certain characters

    Misalignment of infos when using ASCII art with certain characters

    Example:

    image

    Reason:

    image By current line length, I don't mean character count. I mean the number of blocks the string will occupy. Though this thing works as it's supposed to be on strings with fontawesome, it doesn't work with strings which have Chinese, Bengali and/or characters of some other languages as well. I don't know how to actually solve this issue yet. Need a bit help here.

    bug help wanted 
    opened by mehedirm6244 0
Owner
Mehedi Rahman Mahi
I code shit
Mehedi Rahman Mahi
This is just another Potato to get SYSTEM via SeImpersonate privileges.

MultiPotato First of all - credit to @splinter_code & @decoder_it for RoguePotato as this code heavily bases on it. This is just another Potato to get

null 456 Sep 12, 2022
A Lilu plugin that makes System Information recognize your Realtek card reader as a native one

Realtek Card Reader Driver Friend Introduction A Lilu plugin that makes System Information recognize your Realtek card reader as a native one. Support

FireWolf 52 Sep 6, 2022
A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth.

Bluetooth-System-Monitor A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth and thus giving

Dustin Watts 28 Sep 19, 2022
Information on my chord-based typing system

taipo A chord-based typing system: only needs 10 keys per hand (2 keys per finger) optimized to reduce finger usage, travel distance, and awkward patt

Michael 19 Aug 6, 2022
See your system information on LCD with Arduino!

Nodejs Arduino System Info See your system information on LCD with Arduino! You can see RAM usage, and CPU usage. Requipments: An Arduino Board. [ You

Akif9748 4 Jan 14, 2022
Yeah, so basically this program will give you the same information of a neofetch with the difference that is written in C.

neofetch-c Basically this program will give you the same information of a neofetch with the difference that is written in C. Build Compile Before runn

Francesco P. 2 Mar 27, 2022
Yet another alarm (control) panel for Home Assistant.

HASS-YAAP Yet another alarm (control) panel for Home Assistant. Change alarm system mode (away, home, night, disarmed) Welcome people arriving by thei

Paul-Vincent Roll 48 Dec 4, 2021
Another version of EVA using anti-debugging techs && using Syscalls

EVA2 Another version of EVA using anti-debugging techs && using Syscalls First thing: Dont Upload to virus total. this note is for you and not for me.

null 264 Sep 9, 2022
Yet Another Ghidra Integration for IDA

Yagi Yet Another Ghidra Integration for IDA Overview Yagi intends to include the wonderful Ghidra decompiler into both IDA pro and IDA Free. ?? You ca

Airbus CERT 377 Sep 5, 2022
Another try to re-create Project Astoria , or some bridge between A and W...

Bridge 1.0.10.0 Forked from: https://github.com/DroidOnUWP/Bridge Abstract Another "Project Astoria" remake (UWP) Original status: Forgotten (?) My ac

Media Explorer 5 Sep 10, 2022
Subtract one PE file from another!

PEDiffGen A simple PE subtraction utility. PEDiffGen.exe <pe1> <pe2> <output> The above command generates the result of pe1 - pe2 in memory (as in, m

null 18 Sep 10, 2022
Yet another abstraction layer - a general purpose C++ library.

Yet Another Abstraction Layer What yaal is a cross platform, general purpose C++ library. This library provides unified, high level, C++ interfaces an

Marcin Konarski 14 Jul 27, 2022
YARP - Yet Another Robot Platform

YARP __ __ ___ ____ ____ \ \/ // || _ \ | _ \ \ // /| || |/ / | |/ / / // ___ || _ \ | _/ /_//_/ |_||_| \_\|_| ===================

Robotology 439 Sep 14, 2022
Just another short video app (not tiktok) but 3 in 1.

Short videos app - India Another short videos app for Hindi audience. Made with 3 different apis: Moj app Josh app Chingari app Authetication No authe

Not Your Surya 2 Jan 6, 2022
Just another "Won't Fix" Windows Privilege Escalation from User to Domain Admin.

RemotePotato0 Just another "Won't Fix" Windows Privilege Escalation from User to Domain Admin. RemotePotato0 is an exploit that allows you to escalate

null 1.1k Sep 20, 2022
YACHT: Yet Another C++ Helper Template

YACHT: Yet Another C++ Helper Template A template for C++ projects. Welcome to your YACHT! Because why build a boat from scratch, when you can enjoy a

Dimitri Belopopsky 11 Apr 2, 2022
Han: ANother SOLOminer

HAN Han: ANother SOLOminer WARNING: you may have to wait longer than the current age of the universe to find a valid block. Introduction HAN is a solo

Valerio Vaccaro 8 May 29, 2022
Yet another matrix client. Click packaging for locally running on Ubuntu Touch

Cinny Click Packaging Cinny is a Matrix client focusing primarily on simple, elegant and secure interface. License Cinny source package licensed under

Nitan Alexandru Marcel 5 Jun 24, 2022
M5Paper project with weather information from openweathermap

M5PaperWeather **M5Paper project with weather information from openweathermap *** Description Arduino project to show internal environment data and we

null 72 Sep 16, 2022