eng.md
July 30, 2026 · View on GitHub
Just Enough Shell
Built for everyday use, not for screenshots.
| System Info | |
| Component | Value |
|---|---|
| OS | NixOS 26.05 |
| WM | SwayFX / Hyprland / niri / DriftWM |
| Shell | bash |
| Terminal | Foot |
| Interface | QuickShell |
| Screen Locker | Hyprlock |
| Monitoring | Btop |
| Audio | PipeWire |
| Browser | Zen browser |
| File Manager | ranger / yazi / dolphin |
| Editor | micro / helix |
| Theme | zenburn |
| Icons | Tela Gray |
| Bootloader | Grub |
| Optimization | Go binaries |
| theme changer | matugen |
-- About the project -- :
JES uses QuickShell for rendering the interface.
JES supports:
- SwayFX
- Hyprland
- Niri
- DriftWM
- Any other WM via 3 scripts and one QML file
The project has some optimization, but it hasn't been tested on weak hardware.
Go binaries are used for scripts where fast processing of large data streams matters — this keeps CPU usage at 5–10% (only JES - 1-2% CPU and ~400 MB RAM) idle instead of 35–45%.
The project has a simple plugin system, making it extensible.
JES was designed for desktop PCs, allowing it to be better tailored to those machines.
The author's monitor is UWQHD (3440×1440); tested resolutions: FHD (1920×1080) and above. (FHD is supported natively, but with minibar enabled there may be bugs, since the size doesn't change but the display model does.)
On those resolutions the bar has no issues with module placement.
Project supports multi-monitor setups.
The project uses bash with custom output, and updates faster for SwayFX and DriftWM, since it's oriented toward the author's everyday use.
This also gives the project longevity — as long as the author goes about his business, the project will keep evolving and improving.
For faster loading, the author chose not to bundle live wallpapers from the screenshots, leaving a link to them instead.
The zenburn theme does not apply to JES itself — only to external apps, tty (NixOS only), and similar. JES has a built-in generated theme + base16 theme support via base16.json.
JES is oriented not toward trends, but toward practicality and convenience in everyday use.
-- acknowledgements -- :
Thanks to Blxshell and its author for help with learning Quickshell and hosting the website.
Thanks to f026 for the first plugin for JES.
Thanks to DriftWM for help with DriftWM IPC, adding new features to the WM for JES, and in general for being supportive of the project.
Thanks to frosti-4 for the script for Arch Linux.
-- Roadmap -- :
[c] Add Hyprland support
[c] Add Niri support
[c] Add DriftWM support
[c] base16 theme support in JES
[c] Soft Material You
[c] Display info for devices connected via KDE Connect
[c] Nice screen picker
[c] Animated album art in the player when no cover is available
[c] Protection against static wallpapers with wrong format in the wallpaper picker
[c] Calendar widget
[c] Multi-monitor support
[c] Settings installer
[c] Neutral / vibrant style toggle
[c] Popup minimap for driftwm
[c] Add waypoints to map
[c] Add full map
[c] Add normal ui in full map
[c] Development of API for working with launcher
[c] Development of API for working with plugin center
[c] Weather widget
[c] Creating a full-fledged API
[c] Installing JES via flake
[c] Refactoring the underlying architecture
[i] Migrate Hyprland config to Lua
[i] Fix Niri
[p] Development of API for working with bar
[n] Dark / light theme toggle
c = completed; n = not completed; i = in progress; p = planned.
Who is JES for?
- Desktop PCs with FHD+ resolution (the author uses UWQHD)
- Users of SwayFX / Hyprland / Niri / DriftWM, or enthusiasts willing to invest time in initial setup (the shell itself works on any WM, but keybinds and tiling config won't be included)
- Those who value performance and architecture over trends
- Anyone who wants a pleasant, CPU/GPU-lightweight interface
If you fall into this audience — welcome. If not — this project might not be for you, and that's okay.
-- IMPORTANT -- :
- Nvidia graphics cards work TERRIBLY, everything can freeze instantly for no reason, the author is not going to fix this issue, because it's problems on the driver side!
- The author has no experience with Arch Linux; installation on Arch may be incorrect. If that's the case, please describe the issue in an Issue and, if possible, suggest a fix.
- Installation instructions are at the very bottom.
- The author is open to suggestions and helps with onboarding; for issues, open an Issue.
If you want live video wallpapers, there are both video wallpapers and shaders available
(the latter may work poorly with JES's auto theme generation)
Wallpapers from screenshots: click
JES structure
-- What you can configure in JES -- :
wm— auto, but for WMs not in the supported list you need to specify the name with a capital letterwm_type— auto, but for unsupported WMs choose betweenworkspacesorcoordinatesmainRad— corner radius, default 10, works best in the range 0–25barOnTop— control bar on top along with adjacent widgets, enabled by defaultminibar— constrains the bar width to 1920px, disabled by defaultBarHeight— bar height, default 30fontSize— font size, default 17fontFamily— font, default Mononoki Nerd Font Propocustom_wallpaper_engine— disable the built-in wallpaper engine, default falsedisableGenerate- replace JES matugen theme on base16, default falsedoNotDisturb— silent mode, default falsetimezone— the city for the weather widget; it is not present by default, the value is taken from theuser-config.tomlfile of the NixOS configuration.
Note: config.toml lives in the Quickshell folder (~/.config/JES/)
The author left an alias in .bashrc — if you don't want to type the path, just run:
jes-cli editConf
The alias uses micro; to quit press Ctrl+Q, to save press Ctrl+S
JES for DriftWM
-- Keybindings for SwayFX, Hyprland and Niri -- :
| keybinding | action |
|---|---|
super + e | file manager |
super + q | super + enter | terminal |
super + p | power buttons |
super + 1-0 or super + scroll up | scroll down | switch workspaces |
super + shift + 1-0 or super + shift + arrows | move windows between workspaces |
super + RMB | resize windows |
super + shift + arrows or super + LMB | move window |
super + arrows | switch between windows |
super + alt + LMB | toggle window type: floating or tiling |
super + w | restart the interface |
home | fullscreen screenshot |
shift + home | screenshot of selected area |
super + d | open app launcher |
super + g | create group |
super + ctrl + g | ungroup windows |
super + tab | previous workspace |
capslock or shift + alt | switch language |
shift + capslock | toggle caps lock |
super + space | raise window above others |
ctrl + / | play | pause music |
ctrl + . | next track |
ctrl + , | previous track |
alt + pgup | increase brightness |
alt + pgdn | decrease brightness |
alt + F9 | mute |
alt + F10 | volume down |
alt + F11 | volume up |
alt + F12 | open | close player |
- To open the plugin center, right-click on the power button.
- To open the calendar, right-click on the time; left-click swaps the time and date.
The screenshot key is configurable since not everyone has a convenient Home key — the author's keyboard doesn't have Print Screen either.
Keybindings for DriftWM
-- How JES looks -- :
Desktop

Control bar (DriftWM version differs, see DriftWM_eng.md)

Wallpaper picker

Player

Power buttons

fastfetch

Volume / audio popup

App launcher

Lock screen

bash prompt
1 [02:00 - orflem:~]$ cd gits/just_enough_shell/
2 [02:00 - orflem:~/gits/just_enough_shell main]$
command number, time, user, directory, git status (when inside a git-tracked project)
-- Plugins -- :
Installation
1. open ~/.config/JES/
2. drop the plugin folder there
3. open config.toml
4. add the following lines:
[[plugin]]
name = "plugin name" # data in property name from manifest.json
active = true
Detailed plugin creation guide
Plugin Repository
Important: the repository is only available in English, as this part is heavily influenced by the project community, and translating all short descriptions into multiple languages is extremely difficult.
-- Installing JES -- :
NixOS clear
- Install NixOS
- run the installer:
nix-shell -p git --run "git clone https://github.com/ORFLEM/just_enough_shell.git && cd just_enough_shell && ./install.sh"
- select full installation
- reboot with
reboot
NixOS develop
- Install NixOS
- run the installer:
nix-shell -p git --run "git clone https://github.com/ORFLEM/just_enough_shell.git && cd just_enough_shell && ./install.sh"
- select installation of JES only
- add to imports
./JES.nixand in the config
services.jes = {
enable = true;
users = [ " your user" ];
};
- rebuild the system with the desired parameters
- reboot with
reboot
NixOS flake
- in
flakespecify the following:
{
inputs = {
jes.url = "github:ORFLEM/just_enough_shell";
}
outputs = { your inputs, jes, ... }@inputs:
let
system = "x86_64-linux";
hostname = "nixos";
specialArgs = { inherit inputs system hostname; };
in {
nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem {
inherit system specialArgs;
modules = [
jes.nixosModules.default
];
};
};
}
- rebuild the flake
- in
configuration.nixspecify
services.jes = {
enable = true;
users = [ " your user" ];
};
- rebuild NixOS
Arch Linux or Arch-based (may be incorrect; if so, please open an Issue)
- Install Arch Linux (EndeavourOS is recommended for simplicity)
- Start the installer:
git clone https://github.com/ORFLEM/just_enough_shell.git && cd just_enough_shell && ./install_arch.sh
- In case of errors, install manually:
1. Install Arch Linux (EndeavourOS is recommended for simplicity)
2. Install yay or paru (yay: git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si)
3. Install official packages (sudo pacman -Syu && pacman -S $(cat ./installer/arch_official.txt))
4. Install AUR packages (yay -S $(cat ./installer/arch_aur.txt))
5. Install the zenburn theme for Qt and GTK
6. Optionally configure system themes (GTK/Qt) to zenburn and install the ter-v32n font
7. Back up user configs (cp -r ~/.config/ ~/backups/ && cp ~/.bashrc ~/backups)
8. Copy files from ".config/" to "~/.config" and from ".local/" to "~/.local" (cp -r ./.local/* ~/.local/ && cp -r ./.config/* ~/.config/ && cp ./.bashrc ~/.bashrc)
9. reboot
-- License -- :
Notifications were taken from the blxshell project and improved both visually and partially technically. License: GNU GPL v3. Worth checking out.
These configurations are distributed under the GNU GPL v3 license.
In plain terms:
- You are free to use, study, and modify this code.
- If you share your modifications or derivative work with others (e.g. by publishing a fork), you must make your source code open and available to everyone under the same license.
This ensures that all improvements and derivative works remain free and open, just like the original.
Full license text: LICENSE.