Is Unity / GNOME used to create the UI

I'm trying to understand what Unity and GNOME do in Linux operating systems. Is Unity and / or GNOME used to create the UI for the operating system written in code (C / C++ / Java...)? 

 

yes they are the ui and there are many more of them besides unity or gnome

Yeah I was just using Unity and GNOME as examples, are they programs you can download and make your own UI's with?

Actually no.

It's a little bit more complicated. Unity is a plugin for compiz and a desktop shell/desktop environment like Gnome Shell, KDE, E17. Compiz is a window manage/compositor, like Kwin, metacity and mutter. GTK and Qt are frameworks to create GUIs (they all use Xlib; the GUIs are the windows you see).

So... if you want your own desktop environment, you choose a window manager and build a system on top of it or you just grab an existing one, like Gnome Shell and modify it. If you want to change how the windows look, you write themes for Gtk2, Gtk3 and possibly Qt.

You can install different desktop eviorments suc has GNOME, KDE, XFCE, etc. Or you can get a window manager such as OpenBox and just build off of that by install a task bar and desktop. But like Wickedwig said, you can download something like GNOME or XFCE and modify it or just make a Qt theme(GTK should die in a out if fire). But the Linux kernel is coded in quite a few languages. Mostly C and C++ but there is some Assembly floating around somewhere.