Lightweight desktop environment for ubuntu server

Greetings

I am working on a full rebuild of my Ubuntu Linux server (16.04.2 LTS) which I use for a media
server. My previous server, I followed this guide to install a lightweight Gnome desktop to use in various occasions where a desktop environment was handy to have:

https://www.htpcbeginner.com/lightwe...ubuntu-server/

The desktop would not start automatically when the system was rebooted. For the new server, I am interested in doing the same, but with a Mate desktop instead. I am interested if there would be a minimal Mate desktop install, as well as not have it automatically load at boot. When using Gnome, I would just launch the desktop by typing in “startx”. The procedure in the link above walked you through disabling some services so that Gnome would not start at startup. I am interested if the same procedure would apply for the Mate desktop

Appreciate any feedback!

Finding the code that starts the desktop is probably going to lead straight to systemd, which i think stuffs all its parameterizing into a single directory, or something, anyway no matter how much i gripe about systemd they did write some doc for it. Google is your friend… and i’m not saying that as a rebuke, i’m saying that this stuff is so spread out that you need some kind of map to find most anything. And a couple clues about what to look for, which not always obvious.

So knowing that Ubuntu-MATE runs systemd, all you have to do is grep around a little bit for whatever naming convention they used, which they should at least have hinted at in the doc. So let’s see what i can find with “linux systemd lightdm” (because lightdm is the desktop manager in use).

What i found is this, which might be just what you want to know, https://unix.stackexchange.com/questions/264393/how-to-disable-x-server-autostart-in-debian-jessie

Ubuntu-MATE is ubuntu-derived and ubuntu is debian-derived so jessie (i think it’s still in LTS) is like the upstream of um-16.04, or maybe i have my numbers crossed.

Ah, here is some connecting information, systemd does everything in “units” apparently,

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html

That oughta keep you busy for a while, i remember when i first started using linux, i kept getting told to search with google but it took me a while to figure out what to search for, since the youngsters had been busy making up new terms while i was off doing work with the old ones, LOL.

I have a little experience with the well-kept secret Ubuntu mini.iso. This installs via network and has many “minimal” options including MATE desktop.

Long story short, minimal seems to be only the ubuntu-mate-core package. The ubuntu-mate-desktop package adds the heavier stuff.

All the Ubuntu desktops and server are available on this 58M ISO but you need a hardwired network. What’s nice is you start up to date on everything.

HTH

3 Likes

So no ability at this point to just perform a sudo apt-get install command to install a minimal install of Mate? (no need for LibreOffice, ThunderBird, Rhythmbox, etc). The ability to install things like Ubuntu Tweak and gparted is all I really need.

In this link - https://www.htpcbeginner.com/lightweight-desktop-environment-for-ubuntu-server - it walks you through to install a very minimal Gnome install and then set it so that it doesn’t automatically load the desktop at startup. When you need the desktop, you just invoke the command - startx

Since Mate is basically a fork of Gnome, would there be something available like the following command (subbing Gnome with Mate as an example)?

sudo apt-get install xorg mate-core mate-media mate-system-monitor mate-applets mate-system-tools mate-utils mate-app-install sysv-rc-conf gdm

Also, in the link, it explains to disable gdm for runlevels 2 & 3 by invoking sudo sysv-rc-conf

Could this also work for Mate if I don’t want it to automatically launch at boot?

Cheers,

Torbuk

First, be aware major under-the-hood changes has replaced sysv with systemd. This means sysv-rc.conf and startx no longer exist. This is what @crankypuss is getting at.

Is there a 1-to-1 command translation? From what I see, not even close. htpcbeginner hasn’t updated but there may be no simple solution.

The minimal MATE install package is named ubuntu-mate-core. I see it includes Firefox but nothing else heavy like a Libre Office.

Personally, I run Ubuntu Server 16.04 with no desktop at all. But I run remote via ssh -X to run GUI apps on the server like synaptic and gparted from my main MATE desktop. This may or may not fit your needs as some things simply won’t work.

Just my 2 cents.

1 Like

This was my first thought also.

@torbuk from a terminal you can run apt-cache showpkg ubuntu-mate-core to see what ubuntu-mate-core consist of. My virtual ubuntu-mini reports it would add 1223 new files, download 691 MB of archives, and 2,445 MB of space taken after install. Although as @Bill_MI stated, Firefox is the only heavy hitter in the list of dependencies.

Thankyou thankyou thankyou! Your link to the mini iso has shown me from “Index of /ubuntu/dists/xenial/main/installer-i386/current/images/netboot” just how the builds are organized, or am i mistaken?

I’ve never figured out exactly what this is but I do notice, thanks to your expanding the path, I pointed to the i386 and not the amd64 version.

Perhaps someone can explain this tree of files. I got here from a very obscure link long ago.

EDIT: Gee, I know what this is. It’s one of several mirrored repositories. Here’s another from my /etc/apt/sources.list. But why hide mini.iso here?

I too desired a very minimal MATE desktop using as few space and apps as possible -- it didn't need to be pretty -- this was for a virtual machine purely for building i386 builds of Wine. It was based off either the mini or Ubuntu Server 16.04 ISO.

The whole installed OS is 1.5 GB -- although it could possibly be slimmed down further, I tried taking out the packages installed by wine-dep.

Starting it would require startx, but I modified some config somewhere so the first console would automatically login and boot straight to this.

In case you're curious, here's all the installed packages for this installation

Bear in mind this is a i386 installation.

accountsservice
acl
adduser
adwaita-icon-theme
apt
apt-utils
aptitude
aptitude-common
aspell
aspell-en
at-spi2-core
base-files
base-passwd
bash
binutils
bsdmainutils
bsdutils
busybox-initramfs
bzip2
ca-certificates
caja
caja-common
colord
colord-data
console-setup
console-setup-linux
coreutils
cpio
cpp
cpp-5
crda
cron
dash
dbus
dbus-x11
dconf-gsettings-backend:i386
dconf-service
debconf
debconf-i18n
debianutils
desktop-file-utils
dh-python
dictionaries-common
diffutils
discover
discover-data
distro-info-data
dmidecode
dosfstools
dpkg
e2fslibs:i386
e2fsprogs
eject
emacsen-common
enchant
engrampa
engrampa-common
file
findutils
fontconfig
fontconfig-config
fonts-dejavu-core
fuse
gcc-5-base:i386
gcc-6-base:i386
gcr
gdisk
gettext-base
gir1.2-glib-2.0:i386
glib-networking:i386
glib-networking-common
glib-networking-services
gnome-keyring
gnome-user-guide
gnupg
gpgv
grep
groff-base
grub-common
grub-gfxpayload-lists
grub-pc
grub-pc-bin
grub2-common
gsettings-desktop-schemas
gstreamer1.0-plugins-base:i386
gstreamer1.0-plugins-good:i386
gstreamer1.0-x:i386
gvfs:i386
gvfs-backends
gvfs-bin
gvfs-common
gvfs-daemons
gvfs-libs:i386
gzip
hicolor-icon-theme
hostname
humanity-icon-theme
hunspell-en-us
ifupdown
im-config
indicator-application
init
init-system-helpers
initramfs-tools
initramfs-tools-bin
initramfs-tools-core
initscripts
insserv
installation-report
iproute2
iputils-ping
isc-dhcp-client
isc-dhcp-common
iso-codes
iw
kbd
keyboard-configuration
klibc-utils
kmod
krb5-locales
language-pack-en
language-pack-en-base
language-pack-gnome-en
language-pack-gnome-en-base
language-selector-common
laptop-detect
leafpad
less
libaa1:i386
libaccountsservice0:i386
libacl1:i386
libapparmor1:i386
libappindicator1
libappindicator3-1
libapt-inst2.0:i386
libapt-pkg5.0:i386
libarchive13:i386
libasn1-8-heimdal:i386
libasound2:i386
libasound2-data
libaspell15:i386
libasprintf0v5:i386
libassuan0:i386
libasyncns0:i386
libatasmart4:i386
libatk-bridge2.0-0:i386
libatk1.0-0:i386
libatk1.0-data
libatm1:i386
libatspi2.0-0:i386
libattr1:i386
libaudit-common
libaudit1:i386
libavahi-client3:i386
libavahi-common-data:i386
libavahi-common3:i386
libavahi-glib1:i386
libavc1394-0:i386
libblkid1:i386
libboost-filesystem1.58.0:i386
libboost-iostreams1.58.0:i386
libboost-system1.58.0:i386
libbsd0:i386
libbz2-1.0:i386
libc-bin
libc6:i386
libcaca0:i386
libcairo-gobject2:i386
libcairo2:i386
libcaja-extension1:i386
libcanberra-gtk-module:i386
libcanberra-gtk0:i386
libcanberra0:i386
libcap-ng0:i386
libcap2:i386
libcap2-bin
libcdio-cdda1:i386
libcdio-paranoia1:i386
libcdio13:i386
libcdparanoia0:i386
libcolord2:i386
libcolorhug2:i386
libcomerr2:i386
libcroco3:i386
libcryptsetup4:i386
libcups2:i386
libcurl3-gnutls:i386
libcwidget3v5:i386
libdatrie1:i386
libdb5.3:i386
libdbus-1-3:i386
libdbus-glib-1-2:i386
libdbusmenu-glib4:i386
libdbusmenu-gtk3-4:i386
libdbusmenu-gtk4:i386
libdconf1:i386
libdebconfclient0:i386
libdevmapper1.02.1:i386
libdiscover2
libdns-export162
libdpkg-perl
libdrm-amdgpu1:i386
libdrm-intel1:i386
libdrm-nouveau2:i386
libdrm-radeon1:i386
libdrm2:i386
libdv4:i386
libedit2:i386
libegl1-mesa:i386
libelf1:i386
libenchant1c2a:i386
libepoxy0:i386
libestr0
libevdev2:i386
libexempi3:i386
libexif12:i386
libexpat1:i386
libfdisk1:i386
libffi6:i386
libflac8:i386
libfontconfig1:i386
libfontenc1:i386
libfreetype6:i386
libfribidi0:i386
libfuse2:i386
libgail18:i386
libgbm1:i386
libgcc1:i386
libgck-1-0:i386
libgcr-3-common
libgcr-base-3-1:i386
libgcr-ui-3-1:i386
libgcrypt20:i386
libgd3:i386
libgdata-common
libgdata22:i386
libgdbm3:i386
libgdk-pixbuf2.0-0:i386
libgdk-pixbuf2.0-common
libgeoclue0:i386
libgirepository-1.0-1:i386
libgl1-mesa-dri:i386
libgl1-mesa-glx:i386
libglapi-mesa:i386
libglib2.0-0:i386
libglib2.0-bin
libglib2.0-data
libglu1-mesa:i386
libgmp10:i386
libgnutls-openssl27:i386
libgnutls30:i386
libgoa-1.0-0b:i386
libgoa-1.0-common
libgpg-error0:i386
libgphoto2-6:i386
libgphoto2-l10n
libgphoto2-port12:i386
libgpm2:i386
libgraphite2-3:i386
libgssapi-krb5-2:i386
libgssapi3-heimdal:i386
libgstreamer-plugins-base1.0-0:i386
libgstreamer-plugins-good1.0-0:i386
libgstreamer1.0-0:i386
libgtk-3-0:i386
libgtk-3-bin
libgtk-3-common
libgtk2.0-0:i386
libgtk2.0-bin
libgtk2.0-common
libgtop-2.0-10:i386
libgtop2-common
libgudev-1.0-0:i386
libgusb2:i386
libharfbuzz-icu0:i386
libharfbuzz0b:i386
libhcrypto4-heimdal:i386
libheimbase1-heimdal:i386
libheimntlm0-heimdal:i386
libhogweed4:i386
libhunspell-1.3-0:i386
libhx509-5-heimdal:i386
libhyphen0:i386
libice6:i386
libicu55:i386
libidn11:i386
libiec61883-0:i386
libieee1284-3:i386
libimobiledevice6:i386
libindicator3-7
libindicator7
libisc-export160
libisl15:i386
libjack-jackd2-0:i386
libjavascriptcoregtk-4.0-18:i386
libjbig0:i386
libjpeg-turbo8:i386
libjpeg8:i386
libjson-c2:i386
libjson-glib-1.0-0:i386
libjson-glib-1.0-common
libk5crypto3:i386
libkeyutils1:i386
libklibc
libkmod2:i386
libkrb5-26-heimdal:i386
libkrb5-3:i386
libkrb5support0:i386
liblcms2-2:i386
libldap-2.4-2:i386
libldb1:i386
libllvm3.8:i386
liblocale-gettext-perl
libltdl7:i386
liblz4-1:i386
liblzma5:i386
liblzo2-2:i386
libmagic1:i386
libmarco-private0:i386
libmate-desktop-2-17:i386
libmate-menu2:i386
libmate-panel-applet-4-1
libmate-slab0:i386
libmate-window-settings1:i386
libmatekbd-common
libmatekbd4:i386
libmatemixer-common
libmatemixer0:i386
libmateweather-common
libmateweather1:i386
libmirclient9:i386
libmircommon5:i386
libmirprotobuf3:i386
libmnl0:i386
libmount1:i386
libmpc3:i386
libmpdec2:i386
libmpfr4:i386
libmtdev1:i386
libmtp-common
libmtp-runtime
libmtp9:i386
libncurses5:i386
libncursesw5:i386
libnettle6:i386
libnewt0.52:i386
libnih1:i386
libnl-3-200:i386
libnl-genl-3-200:i386
libnotify4:i386
libnspr4:i386
libnss3:i386
libnss3-nssdb
liboauth0:i386
libogg0:i386
libopus0:i386
liborc-0.4-0:i386
libp11-kit-gnome-keyring:i386
libp11-kit0:i386
libpam-gnome-keyring:i386
libpam-modules:i386
libpam-modules-bin
libpam-runtime
libpam-systemd:i386
libpam0g:i386
libpango-1.0-0:i386
libpangocairo-1.0-0:i386
libpangoft2-1.0-0:i386
libparted2:i386
libpci3:i386
libpciaccess0:i386
libpcre3:i386
libperl5.22:i386
libpipeline1:i386
libpixman-1-0:i386
libplist3:i386
libpng12-0:i386
libpolkit-agent-1-0:i386
libpolkit-backend-1-0:i386
libpolkit-gobject-1-0:i386
libpopt0:i386
libprocps4:i386
libprotobuf-lite9v5:i386
libproxy1v5:i386
libpulse-mainloop-glib0:i386
libpulse0:i386
libpython-stdlib:i386
libpython2.7:i386
libpython2.7-minimal:i386
libpython2.7-stdlib:i386
libpython3-stdlib:i386
libpython3.5-minimal:i386
libpython3.5-stdlib:i386
libraw1394-11:i386
libreadline6:i386
librest-0.7-0:i386
libroken18-heimdal:i386
librsvg2-2:i386
librsvg2-common:i386
librtmp1:i386
libsamplerate0:i386
libsane:i386
libsane-common
libsasl2-2:i386
libsasl2-modules:i386
libsasl2-modules-db:i386
libseccomp2:i386
libsecret-1-0:i386
libsecret-common
libselinux1:i386
libsemanage-common
libsemanage1:i386
libsepol1:i386
libshout3:i386
libsigc++-2.0-0v5:i386
libslang2:i386
libsm6:i386
libsmartcols1:i386
libsmbclient:i386
libsndfile1:i386
libsoup-gnome2.4-1:i386
libsoup2.4-1:i386
libspeex1:i386
libsqlite3-0:i386
libss2:i386
libssl1.0.0:i386
libstartup-notification0:i386
libstdc++6:i386
libsystemd0:i386
libtag1v5:i386
libtag1v5-vanilla:i386
libtalloc2:i386
libtasn1-6:i386
libtdb1:i386
libtevent0:i386
libtext-charwidth-perl
libtext-iconv-perl
libtext-wrapi18n-perl
libthai-data
libthai0:i386
libtheora0:i386
libtiff5:i386
libtinfo5:i386
libtxc-dxtn-s2tc0:i386
libudev1:i386
libudisks2-0:i386
libunique-1.0-0
libupower-glib3:i386
libusb-0.1-4:i386
libusb-1.0-0:i386
libusbmuxd4:i386
libustr-1.0-1:i386
libutempter0:i386
libuuid1:i386
libv4l-0:i386
libv4lconvert0:i386
libvisual-0.4-0:i386
libvorbis0a:i386
libvorbisenc2:i386
libvorbisfile3:i386
libvpx3:i386
libvte-common
libvte9
libwavpack1:i386
libwayland-client0:i386
libwayland-cursor0:i386
libwayland-egl1-mesa:i386
libwayland-server0:i386
libwbclient0:i386
libwebkit2gtk-4.0-37:i386
libwebkit2gtk-4.0-37-gtk2:i386
libwebp5:i386
libwind0-heimdal:i386
libwnck-common
libwnck22:i386
libwrap0:i386
libx11-6:i386
libx11-data
libx11-xcb1:i386
libxapian22v5:i386
libxatracker2:i386
libxau6:i386
libxaw7:i386
libxcb-dri2-0:i386
libxcb-dri3-0:i386
libxcb-glx0:i386
libxcb-present0:i386
libxcb-render0:i386
libxcb-shape0:i386
libxcb-shm0:i386
libxcb-sync1:i386
libxcb-util1:i386
libxcb-xfixes0:i386
libxcb1:i386
libxcomposite1:i386
libxcursor1:i386
libxdamage1:i386
libxdmcp6:i386
libxext6:i386
libxfixes3:i386
libxfont1:i386
libxft2:i386
libxi6:i386
libxinerama1:i386
libxkbcommon0:i386
libxkbfile1:i386
libxklavier16:i386
libxml2:i386
libxmu6:i386
libxmuu1:i386
libxpm4:i386
libxrandr2:i386
libxrender1:i386
libxres1:i386
libxshmfence1:i386
libxslt1.1:i386
libxss1:i386
libxt6:i386
libxtables11:i386
libxtst6:i386
libxv1:i386
libxvmc1:i386
libxxf86dga1:i386
libxxf86vm1:i386
libyelp0:i386
linux-base
linux-firmware
linux-generic
linux-headers-4.4.0-24
linux-headers-4.4.0-24-generic
linux-headers-generic
linux-image-4.4.0-24-generic
linux-image-extra-4.4.0-24-generic
linux-image-generic
locales
login
logrotate
lsb-base
lsb-release
lynx
lynx-common
man-db
marco
marco-common
mate-backgrounds
mate-control-center
mate-control-center-common
mate-desktop
mate-desktop-common
mate-desktop-environment-core
mate-icon-theme
mate-menus
mate-panel
mate-panel-common
mate-polkit:i386
mate-polkit-common
mate-session-manager
mate-settings-daemon
mate-settings-daemon-common
mate-terminal
mate-terminal-common
mate-user-guide
mawk
menu
menu-xdg
mime-support
mount
multiarch-support
nano
ncurses-base
ncurses-bin
net-tools
netbase
netcat-openbsd
notification-daemon
ntfs-3g
openssl
os-prober
p11-kit
p11-kit-modules:i386
p7zip-full
parted
passwd
patch
pciutils
perl
perl-base
perl-modules-5.22
pinentry-gnome3
policykit-1
procps
psmisc
python
python-apt-common
python-minimal
python-talloc
python2.7
python2.7-minimal
python3
python3-apt
python3-dbus
python3-gi
python3-minimal
python3.5
python3.5-minimal
readline-common
resolvconf
rsyslog
samba-libs:i386
sed
sensible-utils
sgml-base
shared-mime-info
sound-theme-freedesktop
sudo
systemd
systemd-sysv
sysv-rc
sysvinit-utils
tar
tasksel
tasksel-data
tcpd
ttf-ubuntu-font-family
tzdata
ubuntu-keyring
ubuntu-mate-default-settings
ubuntu-minimal
ubuntu-mono
ucf
udev
udisks2
unzip
upower
ureadahead
usbmuxd
usbutils
util-linux
vim-common
vim-tiny
wamerican
wbritish
whiptail
wireless-regdb
x11-apps
x11-common
x11-session-utils
x11-utils
x11-xkb-utils
x11-xserver-utils
xauth
xbitmaps
xdg-user-dirs
xfonts-base
xfonts-encodings
xfonts-scalable
xfonts-utils
xinit
xinput
xkb-data
xml-core
xorg
xorg-docs-core
xserver-common
xserver-xorg
xserver-xorg-core
xserver-xorg-input-all
xserver-xorg-input-evdev
xserver-xorg-input-synaptics
xserver-xorg-input-vmmouse
xserver-xorg-input-wacom
xserver-xorg-video-all
xserver-xorg-video-amdgpu
xserver-xorg-video-ati
xserver-xorg-video-fbdev
xserver-xorg-video-intel
xserver-xorg-video-nouveau
xserver-xorg-video-qxl
xserver-xorg-video-radeon
xserver-xorg-video-vesa
xserver-xorg-video-vmware
xterm
xz-utils
yelp
yelp-xsl
zenity
zenity-common
zip
zlib1g:i386

The main being -- use mate-desktop as the metapackage (for just a mate-desktop environment) and pass --no-install-recommends to only install the bare minimal needed.

3 Likes

Booting my virtual ubuntu mini as I type. Going to give your light Mate install a try. :slight_smile:

Edit 1:

From a base Ubuntu 16.04 mini VM it was necessary to install the following before the minimum Mate desktop would run

sudo apt install mate-desktop --no-install-recommends
sudo apt install xinit
sudo apt install mate-session-manager

And for some basic functionality

sudo apt install mate-terminal
sudo apt install pluma

So at this point the minimal Mate desktop is running by typing startx at the command line. But wait! No icon support :frowning:

To pretty things up a bit

sudo apt install mate-desktop-environment-core
sudo apt install ubuntu-mate-artwork

Now I'm happy :smile:

This is one lean Mate desktop environment. Very nice! :sunglasses: :sunglasses: :sunglasses:

Edit 2:

To get rid of error seen in both screenshots

sudo apt install mate-applets

This pulled in mate-system-monitor also, but I'm good with that. The VM has grown to just a touch over 2 GB in size.

2 Likes

I ended up performing a re-install of Ubuntu Server, which during the install process gives you an option to install a minimal mate desktop.

I tried to disable booting into Mate by editing grub by changing

grub_cmdline_linux_default= "quiet splash"

to

grub_cmdline_linux_default= "text" 

Unfortunately, this did not work. Any suggestions on how to force Ubuntu to boot to terminal? I would like to just launch Mate whenever needed.

Yes, read the following post.

https://askubuntu.com/questions/870221/booting-into-text-mode-in-16-04/870226

2 Likes

Just want to point out TinyCore Linux as a viable server solution. Barring that. you can at least take its desktop once you figure out what software it is using for most of it.

From a cursory search on Wikipedia the system uses BusyBox and FLTK.

Thank you! This did exactly what I wanted. Much appreciated

:grinning:

You are most welcome @torbuk. If you would, please mark your post as solved to help others find a solution in the future.

Hi team,
Long time bump, but was wondering what would be the best approach if I wanted to do a very light weight linux VM (on TrueNas OS); where I can use a GUI.

Trying to find mate core server etc. no luck. Just use Ubuntu server or something else I need to download?