{"id":19845864,"url":"https://github.com/jluttine/nide","last_synced_at":"2025-05-01T21:30:53.314Z","repository":{"id":65417680,"uuid":"213166230","full_name":"jluttine/NiDE","owner":"jluttine","description":"Niche i3 Desktop Environment: Keyboard-driven DE installed in the home directory","archived":false,"fork":false,"pushed_at":"2024-09-14T08:40:15.000Z","size":92,"stargazers_count":32,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-09-14T19:38:28.203Z","etag":null,"topics":["desktop-environment","i3","keyboard-interface","nixos"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jluttine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-06T12:40:25.000Z","updated_at":"2024-09-14T08:40:19.000Z","dependencies_parsed_at":"2024-06-11T10:06:35.792Z","dependency_job_id":"b1f6e136-ed1f-43fd-b7a2-b24c75c6c42c","html_url":"https://github.com/jluttine/NiDE","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jluttine%2FNiDE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jluttine%2FNiDE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jluttine%2FNiDE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jluttine%2FNiDE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jluttine","download_url":"https://codeload.github.com/jluttine/NiDE/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224278474,"owners_count":17285080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-environment","i3","keyboard-interface","nixos"],"created_at":"2024-11-12T13:09:32.371Z","updated_at":"2024-11-12T13:09:33.111Z","avatar_url":"https://github.com/jluttine.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NiDE - Niche i3 Desktop Environment\n\n*In Finnish, \"nide\" means a book or a volume and refers to the binding that ties\nthe pages together. In English, \"nide\" means a group of pheasants. Similarly,\nNiDE ties a collection of amazing software packages together to form a desktop\nenvironment.*\n\n## Overview\n\nNiDE is a light keyboard-driven Linux desktop environment installed in the home\ndirectory. NiDE is constructed from a collection of amazing software packages to\nprovide a full desktop-environment experience similar to GNOME, KDE, XFCE and\nmany other desktop environments. NiDE aims to provide a simplistic and light but\npowerful desktop environment with good support for keyboard interface and tiling\nwindows. It can be easily installed and configured in the home directory without\nsystem administrator. NiDE is installed in a separate directory so it won't mess\nup your other desktop environments and existing configurations.\n\n**NOTE: Previously NiDE was called \"NixOS i3 Desktop Environment\" and it was a\nconfiguration just for NixOS. That is deprecated but still available in\n`nixos-nide` branch. Currently, NiDE works on any Linux operating system and it\ncan be installed in the user home directory without root. But there is still\ngood support for NixOS similar to what it used to be.**\n\n**NOTE: NiDE is currently very much work in progress and it's mainly configured\nfor my personal needs at the moment. There are still many things that are\nmissing or aren't working properly. Also, no effort has yet been put to the\nvisual appearance.**\n\nNiDE is constructed by putting together numerous amazing open-source software\npackages. The point of NiDE is to select these great packages and put them\ntogether with a decent default configuration. When selecting the software\npackages, the following guidelines are taken into account if there are multiple\noptions. The software package should preferably:\n\n- not be bloated nor overly complex but still do well what it's supposed to do\n- have good keyboard user interface\n- be configurable with text files\n- use standards for things it does\n- work well with a tiling window manager\n- not fill the window with graphical garbage (e.g., large menu/icon bars) but\n  rather try to maximize the space for the actual content\n\nThe following non-exhaustive list mentions some of the awesome software packages\nused to form NiDE:\n\n- [i3](https://i3wm.org/) for window management\n- [Polybar](https://polybar.github.io/) as the status bar\n- [Rofi](https://github.com/davatorium/rofi) as a generic menu and launcher\n- [Pulseaudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) for sound\n  management\n- [NetworkManager](https://wiki.gnome.org/Projects/NetworkManager) for network\n  connection management\n- [pass](https://www.passwordstore.org/) for storing passwords and passphrases\n- [pass-secret-service](https://github.com/mdellweg/pass_secret_service/) for\n  integrating pass with the standard secret service D-Bus interface.\n- [Dunst](https://dunst-project.org/) for showing desktop notifications\n- [Dex](https://github.com/jceb/dex) for autostarting desktop applications when\n  logging in\n- [Alacritty](https://github.com/alacritty/alacritty) as the default terminal\n- [Simple X Image Viewer (sxiv)](https://github.com/muennich/sxiv) as the\n  default image viewer\n- [Luakit](https://luakit.github.io/) as the default browser with vim-like\n  keybindings and minimal visual garbage\n- [udiskie](https://github.com/coldfix/udiskie) for automounting removable\n  media\n- [kbdd](https://github.com/qnikst/kbdd) for managing keyboard layouts per\n  window\n- [light](https://haikarainen.github.io/light/) for controlling the screen\n  backlight\n- [actkbd](https://github.com/thkala/actkbd) for keybindings that work also in\n  virtual terminals\n- [XSecureLock](https://github.com/google/xsecurelock) as a lock screen\n- [autorandr](https://github.com/phillipberndt/autorandr) for managing monitor\n  configurations automatically\n- .. and many other amazing open-source software packages\n\nSome small possibly interesting details:\n\n- Keyboard layouts are window-specific.\n- Computer locking with `Ctrl+Alt+L` works also in virtual terminals if the user\n  has logged in.\n- Brightness and volume control keybindings work also in virtual terminals.\n\n## Installation\n\nCopy this repository under `~/.nide`. You can use `git` to clone:\n\n```\ngit clone https://github.com/jluttine/NiDE ~/.nide\n```\n\nAlternatively, you can download a tarball of your choice\n\n- Releases: https://github.com/jluttine/NiDE/releases\n- Latest development snapshot: https://github.com/jluttine/NiDE/archive/master.zip\n\nUnpack the tarball to `~/.nide`.\n\nNow you just need to run `~/.nide/bin/nide` as your X session startup script.\nFor instance, use it as your `~/.xsession` script and at log-in time choose a\nsession that will run that script (at least in NixOS `xterm` session does that):\n\n```\nln -s ~/.nide/bin/nide ~/.xsession\n```\n\nOther (and better) ideas of how to launch NiDE are welcome!\n\nThe packages NiDE uses need to be installed for NiDE to work. How to install\nthose packages depends on the Linux distro, see below for some examples.\n\n### Nix/NixOS\n\nThere are two ways to install the dependencies on NixOS as described below:\n\n#### Home-directory installation of dependencies\n\nIn `~/.nide` directory, run:\n\n```\nnix-build\n```\n\nNow, there should be `~/.nide/result` directory (or, more precisely, a symlink\nto a directory) that contains the dependencies. When NiDE is launched, it'll add\nthose paths to relevant environment variables, so they are available (only) when\nrunning NiDE without affecting your entire system or other desktop environments.\nThis also makes it possible to update the environment while running it without\nneeding to restart NiDE because only the target of the symlink changes.\n\nNote that with this approach, you need to take care of updating the packages\nmanually (i.e., running `nix-build`) because they won't be updated automatically\nwhen the system is updated. This can have its pros and cons but it's something\nto be aware of.\n\n#### System-wide installation of dependencies\n\nIn your `configuration.nix`, import NiDE configuration and add the packages:\n\n```\n{ pkgs, ...}:\nlet\n  nide = builtins.fetchTarball \"https://github.com/jluttine/NiDE/archive/master.tar.gz\";\nin {\n  imports = [\n    ...\n    \"${nide}/nix/configuration.nix\"\n  ];\n  config = {\n    ...\n    services.xserver.desktopManager.nide = {\n      enable = true;\n      installPackages = true;\n    };\n    nix.extraOptions = ''\n      tarball-ttl = 0\n    '';\n  };\n}\n```\n\nThe nix extra option sets tarball cache to zero seconds, so the tarball isn't\ncached but always downloaded. However, it's recommended to pin the tarball to a\nspecific commit or tag and then set `sha256`:\n\n```\nnide = builtins.fetchTarball {\n  url = \"https://github.com/jluttine/NiDE/archive/SOME_REV_HERE.tar.gz\";\n  sha256 = \"SHA256 HASH HERE\";\n};\n```\n\nThat isn't done here because it's difficult to maintain in this README file. Of\ncourse, you can also use your local check-out of the repository and import from\nthat path instead of GitHub.\n\nNote that it is not mandatory to install the packages system wide: set\n`installPackages = false;` to disable. Personally, I import `configuration.nix`\nto enable configurations that cannot be done by the user in the home directory,\nbut I disable `installPackages` because I want to maintain those packages in the\nhome directory as described in the previous section.\n\n### Ubuntu and others\n\nTODO\n\n## Usage\n\nThe user is assumed to be familiar with basic i3 usage. Here are some important\nkeybindings that are configured in NiDE:\n\n- `Super` is the i3 modifier key.\n- `Super+Space` opens the Rofi application launcher.\n- `Super+Esc` closes the current window.\n- `Super+Enter` opens a terminal.\n- `Ctrl+Alt+L` locks the computer.\n- `Ctrl+Alt+Del` opens a system power menu.\n- `Super+Shift+Space` switches the keyboard layout.\n- `Super+h/j/k/l` move focus to another window.\n- `Super+Shift+h/j/k/l` move the focused window.\n- `Super+w/e/s` switch to tabbed/split/stacked mode.\n- `Super+1/2/3/...` move to workspace 1/2/3/...\n- `Super+Shift+1/2/3/...` move window to workspace 1/2/3/...\n\nAlso, `Caps Lock` key is used as `Esc`.\n\n## TODO\n\n- Use Dhall to provide a high-level configuration syntax for NiDE and then\n  compile these to the actual dotfiles that the various software package read.\n  Similarly as nix is used to configure NixOS.\n- Make keybindings configurable. Almost everything is now hard-coded.\n- Configure solarized dark and light color themes for the desktop environment.\n- Allow other keyboard layouts than `fi` and `us`.\n- Find a decent graphical email client.\n- Add X11 lock screen and dimmer.\n- Define XDG default applications.\n- Define user XDG directories.\n- Run/source correct dotfiles from the user home directory (e.g., `.profile`).\n- Add icons\n- Customize rofi-file-browser appearance after\n  https://github.com/marvinkreis/rofi-file-browser-extended/issues/24\n- Overlay notifications for brightness and volume:\n  - https://www.reddit.com/r/unixporn/comments/9i5seg/brightness_and_volume_notifications_with_dunst_oc/\n  - https://askubuntu.com/questions/670602/event-handler-even-more-low-level-than-acpid\n  - https://stackoverflow.com/questions/34936783/watch-for-volume-changes-in-alsa-pulseaudio#comment119780742_57722672\n  - https://wiki.archlinux.org/title/Dunst#Using_dunstify_as_volume/brightness_level_indicator\n\n## Contributions\n\nContributions are most welcome. Just open an issue or a pull request. Feel free\nto suggest better default applications or configurations.\n\n## Copyright\n\n*The following copyright information holds for the files in this git repository.\nNixOS and all the packages that are used by NiDE have their own licenses.*\n\nCopyright (C) 2019-2020 Jaakko Luttinen\n\nNiDE is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjluttine%2Fnide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjluttine%2Fnide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjluttine%2Fnide/lists"}