Nirit

NIRIT

RELEASE LICENSE BASH PYTHON Visual Studio Code

OVERVIEW Overview

Nirit is a desktop environment for GNU/Linux distributions focused on Tiling Windows Management, minimal installed packages and maximum customization

LICENSE License

This project is licensed under a GNU General Public License v3.0.

If you want to know about this license, click here

STACK Stack

TechDescriptionUsed for
BASH_LOGOUnix shell scripting language for command line tasksNirit Installer Script
PYTHON_LOGOHigh-level programming language for versatile, readable code.Qtile Settings Script

COMPATIBILITY Compatibility

Nirit currently works on the following GNU/Linux distributions:

STARTED Getting Started

Note

First of All, I Recommend to do a clean Installation to avoid conflicts with packages

DEBIAN_TITLE Using Debian

Note

I recommend that in the installation, in the part where you can install a desktop environment, you only choose to install the standard system utilities

Tip

After reboot the system, enter as root to install sudo. To install the program sudo do:

apt install sudo
gpasswd -a <your_user> sudo
exit

USE Use

Here will explain to you how to use this project

USE Installation

First, to use the Nirit Installer, you need to install git

DISTROS Distributions

Here will show how to install the dependencies in the different distros that support Nirit

DEBIAN_INSTALLATION Using Debian
sudo apt install git

CLONE_REPO Clone Repository

Later, you will clone this repository:

git clone https://github.com/sh4dow18/nirit.git

Now, go to "nirit" folder:

cd nirit/

Finally, to execute the installer, put:

sudo bash nirit-installer.sh

CLONE_REPO Screenshots

Installer

Here will show screenshots of the Nirit Installer Script working

Help

INSTALLER_HELP_SCREENSHOOT

Installing (Normal Mode)

INSTALLER_1_SCREENSHOOT INSTALLER_2_SCREENSHOOT INSTALLER_3_SCREENSHOOT

Installed

Here will show screenshots when Nirit was successfully installed

Login

LOGIN_SCREENSHOOT

Browsers

BROWSER_SCREENSHOOT

IDEs

IDE_SCREENSHOOT

Terminal

TERMINAL_SCREENSHOOT

Calls

CALLS_SCREENSHOOT

Games

HEROIC_SCREENSHOOT MICKEY_SCREENSHOOT SPIDER_MAN_SCREENSHOOT

Video

OBS_SCREENSHOOT

Misc

THUNAR_SCREENSHOOT

DEEPER Looking Deeper

Do you Want to Know More? Keep Reading :D

VISION Vision

Here the Project Vision will be explained, which shows why it was created

Note

This Vision was created using my knowledge in Scrum

Problem Definition

The problem is that creating a custom desktop environment for Linux by installing package by package can take hours, up to 10 hours. In the case of a system failure or wanting to clean up by reinstalling the system, even more time is required to redo the custom desktop environment. This generates several inconveniences, including:

Who Does It Affect?

This problem affects several types of users, including:

Impact of Not Undertaking the Project

Not developing the project can have a significant impact, which can be mentioned as follows:

Technical Required Resources

Here will show what technical resources were necessary to create the project, ignoring the stack

Integrated Development Environments
NameUsed for
Visual Studio CodeEverything

REQUIREMENTS Requirements

Here will show the Project Requirements

Note

These Requirements were created using my knowledge in Scrum

Functional Requirements

IdNameDescription
RF-01LoginThe system must allow users to log into their existing accounts
RF-02DesktopThe system must allow users to have a desktop to work on
RF-03FilesThe system must allow users to view and work with system files
RF-04MenusThe system must allow users to easily navigate between applications
RF-05DevicesThe system must allow users to connect removable devices and view their information
RF-06TerminalThe system must allow users to work comfortably through a terminal
RF-07AudioThe system must allow users to listen to audio from the computer and adjust its volume
RF-08UtilitiesThe system must allow users to have basic utilities
RF-09BrowsersThe system must allow users to browse the internet through a browser
RF-10MultimediaThe system must allow users to view or play their multimedia content if desired
RF-11OfficeThe system must allow users to work on documents and presentations if desired
RF-12DriversThe system must allow users to have video drivers if desired
RF-13IDEsThe system must allow users to use IDEs to write code if desired
RF-14Games LaunchersThe system must allow users to play video games easily if desired
RF-15FontsThe system must allow users to have custom text fonts if desired

Non-Functional Requirements

IdNameDescription
RNF-01UsabilityThe system must ensure it is intuitive and easy to use for users
RNF-02SecurityThe system must ensure the protection of data against unauthorized access
RNF-03ScalabilityThe system must ensure it can adapt and expand without losing performance
RNF-04MaintainabilityThe system must facilitate the task of maintaining and improving the system

STANDARTS Standarts

The mandatory formats to work on this project will be shown here

Note

These Standarts were created using my knowledge in Scrum

Programming Format

IdNameFormatLanguageExample
ST-01VariablesName in UPPER_SNAKE_CASEEnglish$LIGHT_BLUE
ST-02FunctionsName in snake_caseEnglishprogress_status

WHAT_DOES What does "Nirit" install?

Here will explain what Nirit does on installation, from Nirit Core to custom settings.

Software

First, the software needed to create Nirit

Core

In this part, will explain the Core Programs that allow to Nirit work well

Login
NameDescriptionUsed ForDocumentation Link
xorgX.Org Graphic Server Package SetUse Graphic User InterfacesSee Docs
lightdmLightweight Screen ManagerLogin ScreenSee Docs
lightdm-gtk-greeterLightDM Graphic InterfaceLightDM GUISee Docs
lightdm-gtk-greeter-settingsLightDM GTK+ SettingsLightDM GUI SettingsSee Docs
Desktop
NameDescriptionUsed ForDocumentation Link
x11-xserver-utilsX11 Server UtilitiesHave Xrandr to Manage Screen ResolutionSee Docs
python3-pipPackage Installer for PythonInstall QtileSee Docs
python3-xcffibXCB Python ImplementationQtile DependencySee Docs
python3-cairocffiPython Cairo's CFFI InterfaceQtile DependencySee Docs
libpangocairo-1.0-0Pango with Cairo LibraryQtile DependencySee Docs
python3-psutilProcess and System Utils in PythonCPU, Memory and Net Qtile WidgetsSee Docs
apt-show-versionsShow APT Packages VersionsCheck Updates Qtile WidgetsSee Docs
qtileTiling Window ManagerMain Window ManagerSee Docs
Files
NameDescriptionUsed ForDocumentation Link
zipFile CompressorCompress files in ZipSee Docs
unzipZip File DecompressorDecompress Zip FilesSee Docs
thunarLightweight File ManagerFile ManagerSee Docs
Menus
NameDescriptionUsed ForDocumentation Link
rofiApp Launcher and SelectorApp Launcher and SelectorSee Docs
Devices
NameDescriptionUsed ForDocumentation Link
udiskieAutomounter for Removable MediaAutomounterSee Docs
ntfs-3gRead/Write NTFS DriverRead NTFS DisksSee Docs
policykit-1-gnomeGnome PolicyKit Auth AgentAllow Mounting Disks in ThunarSee Docs
Terminal
NameDescriptionUsed ForDocumentation Link
exaModern File ListerCLI File Lister as ls (alias)See Docs
fishFrendly and Interactive ShellDefault User ShellSee Docs
batCat Clone with Sintax HighlightingCLI File Reader as cat (alias)See Docs
alacrittyGPU Accelerated Terminal EmulatorTerminal EmulatorSee Docs
Audio
NameDescriptionUsed ForDocumentation Link
pulseaudioSound ServerHave AudioSee Docs
pamixerCLI PulseAudio Volume DriverVolume Qtile Widget and Set-Sink Fish FunctionSee Docs
Utilities
NameDescriptionUsed ForDocumentation Link
flameshotScreenshot ToolMake ScreenshotsSee Docs
Browsers
NameDescriptionUsed ForDocumentation Link
firefox-esrFirefox Extended Support VersionDefault BrowserSee Docs
opera-stableOpera BrowserOptional BrowserSee Docs
Recommended

Also exists the recommended programs that Nirit can install, but these programs only would be installed in Normal Mode

Multimedia
NameDescriptionUsed ForDocumentation Link
vlcMultimedia PlayerVideo PlayerSee Docs
fehFast Image ViewerImage Viewer and Wallpaper SelectorSee Docs
Themes
NameDescriptionUsed ForDocumentation Link
lxappearanceAppearance Settings ToolMain Theme, Icons and Cursor SelectorSee Docs
Office
NameDescriptionUsed ForDocumentation Link
qalculate-gtkAdvance CalculatorCalculatorSee Docs
evinceDocument ViewerView PDF FilesSee Docs
libreofficeFree Office SuiteDefault Office SuiteSee Docs
onlyoffice-desktop-editorsOnlyOffice Office Suite EditorOptional Office SuiteSee Docs
Custom

Finally, here are custom programs that could be install optionally in Normal Mode

Important

These programs will only be installed if the user so wishes

Kernel
NameDescriptionUsed ForDocumentation Link
linux-headers-amd64Linux Kernel HeadersNvidia Drivers DependencySee Docs
linux-image-amd64Linux Kernel ImagesNvidia Drivers DependencySee Docs
Graphics
NameDescriptionUsed ForDocumentation Link
mesa-vulkan-driversMesa Vulkan DriversSteam DependencySee Docs
libglx-mesa0:i386Mesa GLX Implementation (32-Bit)Steam DependencySee Docs
mesa-vulkan-drivers:i386Mesa Vulkan Drivers (32-bit)Steam DependencySee Docs
libgl1-mesa-dri:i386Mesa OpenGL Implementation (32-bit)Steam DependencySee Docs
Drivers
NameDescriptionUsed ForDocumentation Link
nvidia-detectNvidia Hardware Detection ToolDetect Nvidia GPUSee Docs
nvidia-driverNvidia Graphics DriversNvidia DriversSee Docs
IDEs
NameDescriptionUsed ForDocumentation Link
codeSource Code EditorProgrammingSee Docs
Games Launchers
NameDescriptionUsed ForDocumentation Link
steam-installerSteam Client InstallerSteam InstallerSee Docs
heroic-games-launcherEpic Games and GOG Games LauncherGames LauncherSee Docs

Themes

NameDescriptionUsed ForDocumentation Link
DarkmatterDark polished GRUB themeGRUB ThemeSee Docs
Adwaita-darkGnome Dark Mode ThemeMain ThemeSee Docs
ComixCursors-Opaque-WhiteX11 mouse theme with a comics feelingCursor ThemeSee Docs

Fonts

NameDescriptionUsed ForDocumentation Link
Ubuntu Mono Nerd FontSmall, monospace, outline, simple fontQtile Bar FontSee Docs
Agave Nerd FontLatin characters as a base for design fontMain FontSee Docs

Settings

In this part, will explain the custom settings that Nirit install

Key Bindings
Note

These Key Bindings Configurations are for Qtile

Windows Behavior in Layouts
Key BingingWhat it do?
SUPER KEY + JChange Current Window to Previous Window
SUPER KEY + KChange Current Window to Next Window
Windows Behavior Regardless of Layouts
Key BingingWhat it do?
ALT GR KEY + WKill Window
Change Between Layouts
Key BingingWhat it do?
ALT GR KEY + TABChange Between Layouts
Spawn Apps
Key BingingWhat it do?
ALT GR KEY + F1Spawn Documentation Page
SUPER KEY + ReturnSpawn Alacritty
SUPER KEY + MSpawn Rofi Menu
ALT GR KEY + FSpawn Browser
ALT GR KEY + CSpawn Visual Studio Code
ALT GR KEY + SMake a Screenshot
ALT GR KEY + TSpawn Thunar
Manage Volume
Key BingingWhat it do?
SUPER KEY + F9Mute Volume in Actual Sink
SUPER KEY + F10Decrese Volume in Actual Sink
SUPER KEY + F11Increse Volume in Actual Sink
Qtile Behavior
Key BingingWhat it do?
SUPER KEY + CONTROL + RRestart Qtile
SUPER KEY + CONTROL + QShutdown Qtile
Aliases
Important

These Aliases are CLI only, and only work with fish shell

NameExecuteWhat it does?
lsexa --group-directories-firstShows the System Files Prettier and directories first
catbatcatShows the file prettier
treeexa -TShows the system files as a Tree
update-systemsudo apt update && sudo apt upgrade -y && sudo apt autoremoveUpdates the System Faster
install-programsudo apt installInstalls a Program
poweroff-pcsystemctl poweroffShutdown the System
restart-pcsystemctl rebootReboot the System
Functions
Important

These Functions are CLI only, and only work with fish shell

NameWhat it does?Use
set-wallpaperSet a Wallpaper for Qtileset-wallpaper "Downloads/Mega Wallpaper.png"
set-sinkChange the Actual Sink for Volumen Qtile Widgetset-sink 3
uninstall-programUninstall a Program and it configurationuninstall-program firefox-esr
fix-operaFix Opera's Video Codecs with updated "libffmpeg.so"fix-opera

TO_DO Post Launch

Here the planned Post Launched will be shown

TO_DO To Do

UPDATES Updates (Sorted from Newest to Oldest)

1.0.0 (2024-07-19)