Skip to content

Simplicity and modularity - yet another hyprland rice for Arch Linux

License

Notifications You must be signed in to change notification settings

NeKoRoSYS/NeKoRoSHELL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

690 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Tip

Please star the repo if you like the dotfiles. Thank you πŸ™


Screenshot

NeKoRoSHELL

GitHub Repo stars GitHub Release Size GitHub last commit GitHub contributors Discord

The best way to say "I use Linux btw πŸ€“" is if your desktop profile looks sleek and suave.

NeKoRoSHELL aims to provide an out-of-the-box, clean and reliable, generic, and modular framework that lets you easily customize your desktop experience with simple UI design philosophy in mind.

πŸ“Œ Table of Contents
πŸš€ Features
πŸ”¨ Skins and Layouts
πŸ”— Dependencies
πŸ€” Optional

NeKoRoSHELL focuses on simplicity and modularity.

The following are what NeKoRoSHELL currently offers:

  • Distro-agnostic Installer Script

    • Use git clone https://github.com/NeKoRoSYS/NeKoRoSHELL
    • Then cd NeKoRoSHELL
    • and finally, bash install.sh to install the dotfiles.
      • install.sh assumes you already have git and a distro-specific g++ compiler.
      • install.sh requires you to have cargo, paru/yay, go, and flatpak.
      • You can freely customize flatpak.txt and pkglist-DISTRO.txt before running install.sh.
      • The installer is safe. It backs up your pre-existing .config folders. (If you have any)
      • The installer automatically handles assigning your monitors at ~/.config/hypr/configs/monitors.conf/ and replaces every occurence of /home/nekorosys/ with your username for your own convenience.
  • Window Controls

    • Maximize
    • Fullscreen
    • Toggle Opacity
    • Toggle Floating Window
    • Pseudo-floating/organized windows
    • Change tile placement
  • Copying and Pasting

    • Screenshot support via hyprshot .
    • Clipboard history via cliphist.
  • Notificications Handling

    • Uses SwayNC for a dedicated notification center with customizable buttons and options.
  • Smart Navbar

    • Uses bash script wrappers for waybar for the modes: Static, Dynamic, and Hover.

Navbar Demo

  • Advanced Customization - Make NeKoRoSHELL YOURS!
    • NeKoRoSHELL is not just an identity, it is a framework. This repo gives you at most 2 pre-installed out-of-the-box layouts/styling for waybar, hyprlock, and SwayNC. The best part? You can make your own!
    • Credits to iyiolacak, justinmdickey, and mkhmtolzhas for their amazing theming.
    • Switch to Dark and Light Mode
    • Select Waybar Skins
    • Select Rofi Skins
    • Select Hyprlock Layouts
    • Select SwayNC Styles
    • Wallpaper Handling
      • Supports both online (yes, online.) and offline image (via swww) and video (via mpvpaper) formats.
        • mpvpaper automatically stops if an app is on fullscreen mode to save CPU, RAM, or GPU space.
        • Paste image or video links with valid file extensions in the rofi prompt and the download will automatically be processed, saved, and set as your new wallpaper.
      • Border colors and UI elements have dynamic color schemes.

Screenshot


Screenshot


Screenshot


Screenshot

Roadmap

NeKoRoSHELL is currently being developed by one person (cough CONTRIBUTING cough) and is constantly under rigorous quality assurance for improvement. We always aim to keep a "no-break" promise for every update so that you can safely update to later versions without expecting any breakages.

πŸ“‹ TODO STATUS
Improve base "legacy" theme βœ…
Implement base functionality βœ…
Implement base QOL features βœ…
Optimizations βœ…
Color Handling - Replace pywal6 with wallust βœ…
Dmenu Overhaul - Replace wofi with rofi βœ…
Support for other distros; BETA, see CONTRIBUTING πŸ”
Theme System - Set all skins in one go βœ…
wlogout integration ⏳
Qt and Kvantum integration πŸ€”
Quickshell integration πŸ€”

NOTE: It is unclear what I'll have to do to properly execute a Quickshell integration for this repo. Maybe I'll only add widgets; or maybe I'll make an entirely new desktop environment on top of Hyprland, replacing waybar and swaync. Who knows? It doesn't matter for now so please take it with a grain of salt.


Desktop Customization

Make sure to analyze the directory structure of ~/.config/waybar/skins, ~/.config/hypr/hyprlock/, and ~/.config/hypr/swaync/; and how the files (hyprlock.conf, config.jsonc, colors.css, style.css, layout.jsonc, modules.jsonc) include or import from each other. That way, you can easily create more options or looks to choose from!

You have two options:

  • Install someone else's Waybar/Hyprlock setup and then manually adjust its files to correctly import or include; or
  • Make your own. Β―_(ツ)_/Β―


Screenshot


Screenshot


Screenshot

Dependencies

Caution

HARDWARE SPECIFIC CONFIGURATION

Some environment variables and params at ~/.config/hypr/configs/environment.conf/ and ~/.config/hypr/scripts/set-wallpaper.sh/ (also check the check-video.sh script, mpvpaper uses a "hwdec=nvdec" param) require an NVIDIA graphics card. Although it may be generally safe to leave it as is upon installing to a machine without such GPU, I recommend commenting it out or replacing it with a variable that goes according to your GPU.

The System Booting section contains settings specifically optimized for a dual-GPU laptop (Intel 620/Nvidia 940MX). Do not copy the GRUB_CMDLINE_LINUX_DEFAULT or mkinitcpio modules unless you have identical hardware, as this may prevent your system from booting.

Warning

SOFTWARE SPECIFIC CONFIGURATION

This project of mine was originally built only for Arch Linux but is now capable of claiming itself to be Distro-agnostic. However, installation of this repo in other Linux Distros aside from Arch is more or less UNTESTED. Please verify using nano or your preferred text-editor if your distro supports the packages listed at pkglist-DISTRO.txt or if the packages are named correctly.

Normal incompatibilities include distros like Artix not being able to run systemctl because they use a different init system/manager. For those who experience something similar, manually enable SwayNC and waybar services yourself. Furthermore, some distros have outdated packages and may require building from git, cargo, or go.

The installation system for that I implemented can be improved. If you're willing to help, please make a pull request. Your contributions are welcome and will be appreciated! :D

  • Auto-pause animated wallpapers via mpvpaper-stop (dependencies: cmake, cjson)

    • Used at set-wallpaper.sh and check-video.sh in ~/.config/hypr/scripts/wallpapers/ to save CPU/RAM usage.
  • This rice uses rofi to run actions and apps.

    • Some apps like mpvpaper needs to be ran using prime-run and gamemoderun
  • hyprland uses hypridle and hyprlock.

  • Waybar was set up to use kitty, Mozilla Firefox, and dolphin. You can change this if you want at ~/.config/waybar/config.jsonc.

  • The screenshot and clipboard features need grim, slurp, hyprshot, wl-clipboard, and cliphist to run.


Optional

Mostly personal notes just in case I switch over to another PC. Do NOT copy my Grub Linux CMDLINE and mkinitcpio modules unless you also have a laptop with old hybrid GPUs (Intel Graphics 620 and Nvidia GeForce 940mx).

System Booting (Dualboot)

  • Use MineGrub theme for Grub.

  • Identify GPU names.

  • /etc/modprobe.d/nvidia.conf

    options nvidia NVreg_PreserveVideoMemoryAllocations=1
    options nvidia NVreg_EnableS0ixPowerManagement=1
    install nvidia_uvm /usr/bin/false
    
  • Modify /etc/default/grub

    • Install os-prober.

      GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet rd.udev.log_level=3 systemd.show_status=auto vt.global_cursor_default=0 nvidia_drm.modeset=1 nvidia_drm.fbdev=1 pci=noaer pcie_aspm=off nvme_core.default_ps_max_latency_us=0 nvidia.NVreg_EnableS0ixPowerManagement=1 intel_pstate=active i915.modeset=1 i915.enable_fbc=1 mitigations=off"
      
    • GRUB_THEME="/boot/grub/themes/minegrub-world-selection/theme.txt"

    • GRUB_DISABLE_OS_PROBER=false

    • sudo grub-mkconfig -o /boot/grub/grub.cfg

  • Modify /etc/mkinitcpio.conf (MODULES for GPU and HOOKS for plymouth after base udev)

    • sudo mkinitcpio -P

Boot Animations and Login

  • Use plymouth and greetd (nwg-hello)

Fix Boosted/Noisy Mic on OBS and Discord (pipewire)

  • Install alsa-utils and noise-suppression-for-voice
    • wpctl status

    • alsamixer

    • sudo alsactl store

    • nano ~/.config/pipewire/pipewire.conf.d/99-input-denoising.conf

      context.modules = [
      {  name = libpipewire-module-filter-chain
         args = {
            node.description = "Noise Canceling Source"
            media.name       = "Noise Canceling Source"
            filter.graph = {
                nodes = [
                  {
                      type   = ladspa
                      name   = rnnoise
                      plugin = /usr/lib/ladspa/librnnoise_ladspa.so
                      label  = noise_suppressor_mono
                      control = {
                          "VAD Threshold (%)" = 50.0
                      }
                  }
              ]
            }
            capture.props = {
                node.name   = "capture.rnnoise_source"
                node.passive = true
                audio.rate   = 48000
            }
            playback.props = {
                node.name   = "rnnoise_source"
                media.class = Audio/Source
                audio.rate   = 48000
            }
          }
        }
      ]
      
    • wpctl set-default yourNoiceCancelledID (find in wpctl status)

Quality-of-Life

  • Install Hypremoji
  • Install blueman and r-quick-share for seamless bluetooth support. (Works with Apple Airpods and android phone)
  • Fix waybar tray disappearing after a certain amount of time by installing sni-qt. Make sure you're not killing waybar using -SIGUSER2 when refreshing the config.