# Nitrogen Desktop Experience (NDE)
This is a project I've had ideas about for a few years.  The end goal is to create a DE
(Desktop Environment) that can alter itself at runtime using various desktop agents which
dictate the look and feel.

For example:

+ A default desktop agent which provides a basic usable desktop
+ Another desktop agent to provide a macOS-like look and feel
+ A third desktop agent better suited for small screens, like phones and tablets

---
## Components
+ [`libnde`](src/libnde) : Library containing common components
+ [`libntk`](src/libntk) : Nitrogen ToolKit - all the GUI stuffies, API based on Java Swing and [Xwing](https://github.com/qrux/xwing/)
+ [`NitroWin`](src/NitroWin) : Nitrogen Window Manager

---
## Documents
None yet.  :crying_cat_face:

---
## Requirements
+ [FreeBSD](http://freebsd.org/) `>= 10.1` (tested using FreeBSD 11)
+ [`x11/libX11`](https://www.freshports.org/x11/libX11/)
+ [`x11/xproto`](https://www.freshports.org/x11/xproto/)
+ [`devel/cmake`](https://www.freshports.org/devel/cmake/)
+ [`devel/cmake-modules`](https://www.freshports.org/devel/cmake-modules/) (if this port is not available, then it has been merged with [`devel/cmake`](https://www.freshports.org/devel/cmake/))
+ [`devel/boehm-gc`](https://www.freshports.org/devel/boehm-gc/)
+ [`devel/boehm-gc-threaded`](https://www.freshports.org/devel/boehm-gc-threaded/)

---
## Misc Tooling
+ [`devel/git`](https://www.freshports.org/devel/git/) **or** [`devel/git-gui`](https://www.freshports.org/devel/git-gui/)

---
## Building the NDE
It's easy to build Nitrogen Desktop Experience.

**Checkout**
```console
$ git clone https://LadySerenaKitty@felinewith.me/LadySerenaKitty/nitrogen.git
$ cd nitrogen
```

**Prep for build**
```console
$ cmake .
```

**Build it!**
```console
$ make
```

**Test**
```console
$ ./test_Nitrogen.sh
```