diff --git a/manjaro/cinnamon/Packages-Desktop b/manjaro/cinnamon/Packages-Desktop
new file mode 100644
index 0000000..641f51b
--- /dev/null
+++ b/manjaro/cinnamon/Packages-Desktop
@@ -0,0 +1,132 @@
+######################################################
+### THIS FILE WILL INCLUDE shared/Packages-Desktop ###
+######################################################
+
+## Cinnamon
+baobab
+blueberry
+dconf-editor
+evince
+poppler-data # CKJ support for pdf
+ffmpegthumbnailer
+gimp
+gksu
+manjaro-cinnamon-settings
+manjaro-browser-settings
+nemo-fileroller # archiver
+nemo-preview
+nemo-python
+nemo-share
+pragha # musicplayer
+qt5ct
+qt5-styleplugins
+screenfetch
+transmission-gtk
+xdg-user-dirs-gtk
+
+## java
+jre8-openjdk
+icedtea-web
+jre8-openjdk-headless
+
+## GNOME related stuff
+gnome-system-log
+eog
+eog-plugins
+gedit
+gnome-disk-utility
+gnome-keyring
+gnome-screenshot
+gnome-system-monitor
+gnome-terminal
+gnome-vfs
+icon-naming-utils
+mousetweaks
+python2-gnomecanvas
+python2-gnomevfs
+python2-libgnome
+
+# needed
+python-ptyprocess
+python2-ptyprocess
+
+## Network
+netctl
+net-tools
+networkmanager-dispatcher-ntpd
+openresolv
+openvpn
+
+## Internet
+firefox
+thunderbird
+
+## Extra
+npapi-vlc
+pidgin-libnotify
+vlc-nightly
+
+## Artwork
+cinnamon-wallpapers
+flattr-icon-theme
+plymouth-theme-manjaro-cinnamon
+xcursor-chameleon-pearl-deepin
+
+## Other Applications
+exfat-utils
+fuse-exfat
+galculator
+gcolor2
+gparted
+gvfs-afc
+gvfs-google
+gvfs-gphoto2
+gvfs-mtp
+gvfs-smb
+hexchat
+isousb
+libgsf
+lightdm-gtk-greeter-settings
+manjaro-documentation
+manjaro-features
+manjaro-settings-manager-notifier
+manjaro-welcome
+mugshot
+nss
+numlockx
+openssh
+p7zip
+parcellite
+pavucontrol
+udiskie
+udisks
+
+## Package management
+pamac
+yaourt
+
+## Packages for Sound and Audio
+gst-libav
+gst-plugins-bad
+gst-plugins-base
+gst-plugins-good
+gst-plugins-ugly
+gstreamer0.10-bad-plugins
+gstreamer0.10-base-plugins
+gstreamer0.10-good-plugins
+gstreamer0.10-ugly-plugins
+libdvdcss
+manjaro-alsa
+manjaro-pulse
+pulseaudio-bluetooth
+pulseaudio-ctl
+pulseaudio-gconf
+pulseaudio-zeroconf
+
+## Office
+libreoffice-still
+manjaro-printer
+system-config-printer
+
+## AUR Access
+base-devel
diff --git a/manjaro/cinnamon/Packages-Live b/manjaro/cinnamon/Packages-Live
new file mode 120000
index 0000000..5e66e00
--- /dev/null
+++ b/manjaro/cinnamon/Packages-Live
@@ -0,0 +1 @@
+../../shared/Packages-Live
\ No newline at end of file
diff --git a/manjaro/cinnamon/Packages-Mhwd b/manjaro/cinnamon/Packages-Mhwd
new file mode 100644
index 0000000..7b5a7dc
--- /dev/null
+++ b/manjaro/cinnamon/Packages-Mhwd
@@ -0,0 +1,71 @@
+## Packages-Xorg minus nvidia 340xx and 304xx drivers
+
+## Xorg Drivers
+xf86-video-apm
+xf86-video-ark
+xf86-video-ati
+xf86-video-amdgpu # only works with kernels 4.2+
+xf86-video-chips
+xf86-video-dummy
+xf86-video-fbdev
+xf86-video-glint
+xf86-video-i128
+xf86-video-i740
+xf86-video-intel
+xf86-video-mach64
+xf86-video-neomagic
+xf86-video-nouveau
+xf86-video-nv
+xf86-video-openchrome
+xf86-video-r128
+xf86-video-rendition
+xf86-video-s3
+xf86-video-s3virge
+xf86-video-savage
+xf86-video-siliconmotion
+xf86-video-sis
+xf86-video-sisusb
+xf86-video-tdfx
+xf86-video-trident
+xf86-video-tseng
+xf86-video-vesa
+xf86-video-vmware
+xf86-video-voodoo
+
+## Bumblebee Support
+>systemd bumblebee
+>openrc bumblebee-openrc
+primus
+>multilib lib32-primus
+KERNEL-bbswitch
+
+## Network Support
+KERNEL-broadcom-wl
+KERNEL-rt3562sta
+KERNEL-r8168
+
+## Proprietary Drivers
+>nonfree_default catalyst-utils
+>nonfree_default KERNEL-catalyst
+>nonfree_default nvidia-utils
+>nonfree_default KERNEL-nvidia
+>nonfree_multilib lib32-catalyst-utils
+>nonfree_multilib lib32-nvidia-utils
+
+## Virtualbox Drivers
+>openrc virtualbox-guest-utils-openrc
+>systemd virtualbox-guest-utils
+KERNEL-virtualbox-guest-modules
+
+## Xorg Packages
+libxaw
+libxpm
+libxvmc
+pangox-compat
+
+## Xorg x86_64 Packages
+>multilib lib32-libxvmc
+
+## VMWare Support
+open-vm-tools
+xf86-input-vmmouse
diff --git a/manjaro/cinnamon/Packages-Root b/manjaro/cinnamon/Packages-Root
new file mode 120000
index 0000000..60cc7bd
--- /dev/null
+++ b/manjaro/cinnamon/Packages-Root
@@ -0,0 +1 @@
+../../shared/Packages-Root
\ No newline at end of file
diff --git a/manjaro/cinnamon/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf b/manjaro/cinnamon/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf
new file mode 120000
index 0000000..d6c7fc1
--- /dev/null
+++ b/manjaro/cinnamon/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf
@@ -0,0 +1 @@
+/etc/fonts/conf.avail/70-no-bitmaps.conf
\ No newline at end of file
diff --git a/manjaro/cinnamon/desktop-overlay/etc/lightdm/lightdm-gtk-greeter.conf b/manjaro/cinnamon/desktop-overlay/etc/lightdm/lightdm-gtk-greeter.conf
new file mode 100644
index 0000000..83035ba
--- /dev/null
+++ b/manjaro/cinnamon/desktop-overlay/etc/lightdm/lightdm-gtk-greeter.conf
@@ -0,0 +1,12 @@
+[greeter]
+background = /usr/share/backgrounds/maia.jpg
+font-name = Cantarell 11
+xft-antialias = true
+icon-theme-name = maia
+theme-name = Vertex-Maia-Square
+cursor-theme-name = Simple-and-Soft
+show-clock = true
+default-user-image = /usr/share/icons/manjaro-maia.png
+xft-hintstyle = hintfull
+position = 50%,center 50%,center
+panel-position = top
diff --git a/manjaro/cinnamon/desktop-overlay/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py b/manjaro/cinnamon/desktop-overlay/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py
new file mode 100755
index 0000000..931daab
--- /dev/null
+++ b/manjaro/cinnamon/desktop-overlay/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py
@@ -0,0 +1,607 @@
+#!/usr/bin/env python2
+
+import sys
+reload(sys)
+sys.setdefaultencoding('utf-8')
+
+sys.path.append('/usr/share/cinnamon/cinnamon-settings/modules')
+sys.path.append('/usr/share/cinnamon/cinnamon-settings/bin')
+import os
+import glob
+import gettext
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gio, Gtk, GObject, GdkPixbuf, GLib, Pango, Gdk, cairo
+import SettingsWidgets
+import capi
+import time
+import traceback
+import locale
+import urllib2
+import proxygsettings
+from functools import cmp_to_key
+import unicodedata
+
+# i18n
+gettext.install("cinnamon", "/usr/share/locale")
+
+# Standard setting pages... this can be expanded to include applet dirs maybe?
+mod_files = glob.glob('/usr/share/cinnamon/cinnamon-settings/modules/*.py')
+mod_files.sort()
+if len(mod_files) is 0:
+ print "No settings modules found!!"
+ sys.exit(1)
+
+mod_files = [x.split('/')[6].split('.')[0] for x in mod_files]
+
+for mod_file in mod_files:
+ if mod_file[0:3] != "cs_":
+ raise Exception("Settings modules must have a prefix of 'cs_' !!")
+
+modules = map(__import__, mod_files)
+
+# i18n for menu item
+menuName = _("System Settings")
+menuComment = _("Control Center")
+
+WIN_WIDTH = 800
+WIN_HEIGHT = 600
+WIN_H_PADDING = 20
+
+MIN_LABEL_WIDTH = 16
+MAX_LABEL_WIDTH = 25
+MIN_PIX_WIDTH = 100
+MAX_PIX_WIDTH = 160
+
+MOUSE_BACK_BUTTON = 8
+
+CATEGORIES = [
+# Display name ID Show it? Always False to start Icon
+ {"label": _("Appearance"), "id": "appear", "show": False, "icon": "cs-cat-appearance"},
+ {"label": _("Preferences"), "id": "prefs", "show": False, "icon": "cs-cat-prefs"},
+ {"label": _("Hardware"), "id": "hardware", "show": False, "icon": "cs-cat-hardware"},
+ {"label": _("Administration"), "id": "admin", "show": False, "icon": "cs-cat-admin"}
+]
+
+CONTROL_CENTER_MODULES = [
+# Label Module ID Icon Category Keywords for filter
+ [_("Networking"), "network", "cs-network", "hardware", _("network, wireless, wifi, ethernet, broadband, internet")],
+ [_("Display"), "display", "cs-display", "hardware", _("display, screen, monitor, layout, resolution, dual, lcd")],
+ [_("Color"), "color", "cs-color", "hardware", _("color, profile, display, printer, output")],
+ [_("Graphics Tablet"), "wacom", "cs-tablet", "hardware", _("wacom, digitize, tablet, graphics, calibrate, stylus")]
+]
+
+STANDALONE_MODULES = [
+# Label Executable Icon Category Keywords for filter
+ [_("Printers"), "system-config-printer", "cs-printer", "hardware", _("printers, laser, inkjet")],
+ [_("Firewall"), "gufw", "cs-firewall", "admin", _("firewall, block, filter, programs")],
+ [_("Languages"), "mintlocale", "cs-language", "prefs", _("language, install, foreign")],
+ [_("Input Method"), "mintlocale im", "cs-input-method", "prefs", _("language, install, foreign, input, method, chinese, korean, japanese, typing")],
+ [_("Login Window"), "gksu /usr/sbin/mdmsetup", "cs-login", "admin", _("login, mdm, gdm, manager, user, password, startup, switch")],
+ [_("Driver Manager"), "mintdrivers", "cs-drivers", "admin", _("video, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrx")],
+ [_("Software Sources"), "mintsources", "cs-sources", "admin", _("ppa, repository, package, source, download")],
+ [_("Users and Groups"), "cinnamon-settings-users", "cs-user-accounts", "admin", _("user, users, account, accounts, group, groups, password")],
+ [_("Bluetooth"), "blueberry", "cs-bluetooth", "hardware", _("bluetooth, dongle, transfer, mobile")]
+ [_("Manjaro Settings Manager"), "manjaro-settings-manager", "cs-cat-hardware", "admin", _("manjaro, settings, manager, kernel, graphics, driver, language")],
+ [_("Manjaro Notifier Settings"), "msm_notifier --settings", "cs-sources", "admin", _("manjaro, settings, notifier, kernel, language")]
+]
+
+def print_timing(func):
+ # decorate functions with @print_timing to output how long they take to run.
+ def wrapper(*arg):
+ t1 = time.time()
+ res = func(*arg)
+ t2 = time.time()
+ print '%s took %0.3f ms' % (func.func_name, (t2-t1)*1000.0)
+ return res
+ return wrapper
+
+def touch(fname, times=None):
+ with file(fname, 'a'):
+ os.utime(fname, times)
+
+class MainWindow:
+
+ # Change pages
+ def side_view_nav(self, side_view, path, cat):
+ selected_items = side_view.get_selected_items()
+ if len(selected_items) > 0:
+ self.deselect(cat)
+ filtered_path = side_view.get_model().convert_path_to_child_path(selected_items[0])
+ if filtered_path is not None:
+ self.go_to_sidepage(cat, filtered_path)
+
+ def _on_sidepage_hide_stack(self):
+ self.stack_switcher.set_opacity(0)
+
+ def _on_sidepage_show_stack(self):
+ self.stack_switcher.set_opacity(1)
+
+ def go_to_sidepage(self, cat, path):
+ iterator = self.store[cat].get_iter(path)
+ sidePage = self.store[cat].get_value(iterator,2)
+ if not sidePage.is_standalone:
+ self.window.set_title(sidePage.name)
+ sidePage.build()
+ if sidePage.stack:
+ current_page = sidePage.stack.get_visible_child_name()
+ self.stack_switcher.set_stack(sidePage.stack)
+ l = sidePage.stack.get_children()
+ if len(l) > 0:
+ sidePage.stack.set_visible_child(l[0])
+ if sidePage.stack.get_visible():
+ self.stack_switcher.set_opacity(1)
+ else:
+ self.stack_switcher.set_opacity(0)
+ if hasattr(sidePage, "connect_proxy"):
+ sidePage.connect_proxy("hide_stack", self._on_sidepage_hide_stack)
+ sidePage.connect_proxy("show_stack", self._on_sidepage_show_stack)
+ else:
+ self.stack_switcher.set_opacity(0)
+ else:
+ self.stack_switcher.set_opacity(0)
+ self.main_stack.set_visible_child_name("content_box_page")
+ self.header_stack.set_visible_child_name("content_box")
+ self.current_sidepage = sidePage
+ width = 0
+ for widget in self.top_bar:
+ m, n = widget.get_preferred_width()
+ width += n
+ self.top_bar.set_size_request(width + 20, -1)
+ self.maybe_resize(sidePage)
+ else:
+ sidePage.build()
+
+ def maybe_resize(self, sidePage):
+ m, n = self.content_box.get_preferred_size()
+
+ # Resize horizontally if the module is wider than the window
+ use_width = WIN_WIDTH
+ if n.width > WIN_WIDTH:
+ use_width = n.width
+
+ # Resize vertically depending on the height requested by the module
+ use_height = WIN_HEIGHT
+ if not sidePage.size:
+ # No height requested, resize vertically if the module is taller than the window
+ if n.height > WIN_HEIGHT:
+ use_height = n.height + self.bar_heights + WIN_H_PADDING
+ #self.window.resize(use_width, n.height + self.bar_heights + WIN_H_PADDING)
+ elif sidePage.size > 0:
+ # Height hardcoded by the module
+ use_height = sidePage.size + self.bar_heights + WIN_H_PADDING
+ elif sidePage.size == -1:
+ # Module requested the window to fit it (i.e. shrink the window if necessary)
+ use_height = n.height + self.bar_heights + WIN_H_PADDING
+
+ self.window.resize(use_width, use_height)
+
+ def deselect(self, cat):
+ for key in self.side_view.keys():
+ if key is not cat:
+ self.side_view[key].unselect_all()
+
+ ''' Create the UI '''
+ def __init__(self):
+ self.builder = Gtk.Builder()
+ self.builder.add_from_file("/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.ui")
+ self.window = self.builder.get_object("main_window")
+ self.top_bar = self.builder.get_object("top_bar")
+ self.side_view = {}
+ self.main_stack = self.builder.get_object("main_stack")
+ self.main_stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
+ self.main_stack.set_transition_duration(150)
+ self.header_stack = self.builder.get_object("header_stack")
+ self.header_stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
+ self.header_stack.set_transition_duration(150)
+ self.side_view_container = self.builder.get_object("category_box")
+ self.side_view_sw = self.builder.get_object("side_view_sw")
+ context = self.side_view_sw.get_style_context()
+ context.add_class("cs-category-view")
+ context.add_class("view")
+ self.side_view_sw.show_all()
+ self.content_box = self.builder.get_object("content_box")
+ self.content_box_sw = self.builder.get_object("content_box_sw")
+ self.content_box_sw.show_all()
+ self.button_back = self.builder.get_object("button_back")
+ self.button_back.set_tooltip_text(_("Back to all settings"))
+ button_image = self.builder.get_object("image1")
+ button_image.props.icon_size = Gtk.IconSize.MENU
+
+ self.stack_switcher = self.builder.get_object("stack_switcher")
+
+ m, n = self.button_back.get_preferred_width()
+ self.stack_switcher.set_margin_right(n)
+
+ self.search_entry = self.builder.get_object("search_box")
+ self.search_entry.connect("changed", self.onSearchTextChanged)
+ self.search_entry.connect("icon-press", self.onClearSearchBox)
+
+ self.window.connect("destroy", self.quit)
+ self.window.connect("key-press-event", self.on_keypress)
+ self.window.connect("button-press-event", self.on_buttonpress)
+ self.window.show()
+
+ self.builder.connect_signals(self)
+ self.window.set_has_resize_grip(False)
+ self.unsortedSidePages = []
+ self.sidePages = []
+ self.settings = Gio.Settings.new("org.cinnamon")
+ self.current_cat_widget = None
+
+ self.current_sidepage = None
+ self.c_manager = capi.CManager()
+ self.content_box.c_manager = self.c_manager
+ self.bar_heights = 0
+
+ for module in modules:
+ try:
+ mod = module.Module(self.content_box)
+ if self.loadCheck(mod) and self.setParentRefs(mod):
+ self.unsortedSidePages.append((mod.sidePage, mod.name, mod.category))
+ except:
+ print "Failed to load module %s" % module
+ traceback.print_exc()
+
+ for item in CONTROL_CENTER_MODULES:
+ ccmodule = SettingsWidgets.CCModule(item[0], item[1], item[2], item[3], item[4], self.content_box)
+ if ccmodule.process(self.c_manager):
+ self.unsortedSidePages.append((ccmodule.sidePage, ccmodule.name, ccmodule.category))
+
+ for item in STANDALONE_MODULES:
+ samodule = SettingsWidgets.SAModule(item[0], item[1], item[2], item[3], item[4], self.content_box)
+ if samodule.process():
+ self.unsortedSidePages.append((samodule.sidePage, samodule.name, samodule.category))
+
+ # sort the modules alphabetically according to the current locale
+ sidePageNamesToSort = map(lambda m: m[0].name, self.unsortedSidePages)
+ sortedSidePageNames = sorted(sidePageNamesToSort, key=cmp_to_key(locale.strcoll))
+ for sidePageName in sortedSidePageNames:
+ nextSidePage = None
+ for trySidePage in self.unsortedSidePages:
+ if(trySidePage[0].name == sidePageName):
+ nextSidePage = trySidePage
+
+ self.sidePages.append(nextSidePage);
+
+
+ # create the backing stores for the side nav-view.
+ sidePagesIters = {}
+ self.store = {}
+ self.storeFilter = {}
+ for sidepage in self.sidePages:
+ sp, sp_id, sp_cat = sidepage
+ if not self.store.has_key(sp_cat): # Label Icon sidePage Category
+ self.store[sidepage[2]] = Gtk.ListStore(str, str, object, str)
+ for category in CATEGORIES:
+ if category["id"] == sp_cat:
+ category["show"] = True
+
+ # Don't allow item names (and their translations) to be more than 30 chars long. It looks ugly and it creates huge gaps in the icon views
+ name = unicode(sp.name,'utf-8')
+ if len(name) > 30:
+ name = "%s..." % name[:30]
+ sidePagesIters[sp_id] = (self.store[sp_cat].append([name, sp.icon, sp, sp_cat]), sp_cat)
+
+ self.min_label_length = 0
+ self.min_pix_length = 0
+
+ for key in self.store.keys():
+ char, pix = self.get_label_min_width(self.store[key])
+ self.min_label_length = max(char, self.min_label_length)
+ self.min_pix_length = max(pix, self.min_pix_length)
+ self.storeFilter[key] = self.store[key].filter_new()
+ self.storeFilter[key].set_visible_func(self.filter_visible_function)
+
+ self.min_label_length += 2
+ self.min_pix_length += 4
+
+ self.min_label_length = max(self.min_label_length, MIN_LABEL_WIDTH)
+ self.min_pix_length = max(self.min_pix_length, MIN_PIX_WIDTH)
+
+ self.min_label_length = min(self.min_label_length, MAX_LABEL_WIDTH)
+ self.min_pix_length = min(self.min_pix_length, MAX_PIX_WIDTH)
+
+ self.displayCategories()
+
+ # set up larger components.
+ self.window.set_title(_("System Settings"))
+ self.button_back.connect('clicked', self.back_to_icon_view)
+
+ self.calculate_bar_heights()
+
+ # Select the first sidePage
+ if len(sys.argv) > 1 and sys.argv[1] in sidePagesIters.keys():
+ (iter, cat) = sidePagesIters[sys.argv[1]]
+ path = self.store[cat].get_path(iter)
+ if path:
+ self.go_to_sidepage(cat, path)
+ else:
+ self.search_entry.grab_focus()
+ else:
+ self.search_entry.grab_focus()
+
+ def on_keypress(self, widget, event):
+ grab = False
+ device = Gtk.get_current_event_device()
+ if device.get_source() == Gdk.InputSource.KEYBOARD:
+ grab = Gdk.Display.get_default().device_is_grabbed(device)
+ if not grab and event.keyval == Gdk.KEY_BackSpace and (type(self.window.get_focus()) not in
+ (Gtk.TreeView, Gtk.Entry, Gtk.SpinButton, Gtk.TextView)):
+ self.back_to_icon_view(None)
+ return True
+ return False
+
+ def on_buttonpress(self, widget, event):
+ if event.button == MOUSE_BACK_BUTTON:
+ self.back_to_icon_view(None)
+ return True
+ return False
+
+ def calculate_bar_heights(self):
+ h = 0
+ m, n = self.top_bar.get_preferred_size()
+ h += n.height
+ self.bar_heights = h
+
+ def onSearchTextChanged(self, widget):
+ self.displayCategories()
+
+ def onClearSearchBox(self, widget, position, event):
+ if position == Gtk.EntryIconPosition.SECONDARY:
+ self.search_entry.set_text("")
+
+ def strip_accents(self, text):
+ try:
+ text = unicode(text, 'utf-8')
+ except NameError:
+ # unicode is default in Python 3
+ pass
+ text = unicodedata.normalize('NFD', text)
+ text = text.encode('ascii', 'ignore')
+ text = text.decode("utf-8")
+ return str(text)
+
+ def filter_visible_function(self, model, iter, user_data = None):
+ sidePage = model.get_value(iter, 2)
+ text = self.strip_accents(self.search_entry.get_text().lower())
+ if self.strip_accents(sidePage.name.lower()).find(text) > -1 or \
+ self.strip_accents(sidePage.keywords.lower()).find(text) > -1:
+ return True
+ else:
+ return False
+
+ def displayCategories(self):
+ widgets = self.side_view_container.get_children()
+ for widget in widgets:
+ widget.destroy()
+ self.first_category_done = False # This is just to prevent an extra separator showing up before the first category
+ for category in CATEGORIES:
+ if category["show"] is True:
+ self.prepCategory(category)
+ self.side_view_container.show_all()
+
+ def get_label_min_width(self, model):
+ min_width_chars = 0
+ min_width_pixels = 0
+ icon_view = Gtk.IconView()
+ iter = model.get_iter_first()
+ while iter != None:
+ string = model.get_value(iter, 0)
+ split_by_word = string.split(" ")
+ for word in split_by_word:
+ layout = icon_view.create_pango_layout(word)
+ item_width, item_height = layout.get_pixel_size()
+ if item_width > min_width_pixels:
+ min_width_pixels = item_width
+ if len(word) > min_width_chars:
+ min_width_chars = len(word)
+ iter = model.iter_next(iter)
+ return min_width_chars, min_width_pixels
+
+ def pixbuf_data_func(self, column, cell, model, iter, data=None):
+ wrapper = model.get_value(iter, 1)
+ if wrapper:
+ cell.set_property('surface', wrapper.surface)
+
+ def prepCategory(self, category):
+ self.storeFilter[category["id"]].refilter()
+ if not self.anyVisibleInCategory(category):
+ return
+ if self.first_category_done:
+ widget = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL)
+ self.side_view_container.pack_start(widget, False, False, 10)
+
+ box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 4)
+ img = Gtk.Image.new_from_icon_name(category["icon"], Gtk.IconSize.BUTTON)
+ box.pack_start(img, False, False, 4)
+
+ widget = Gtk.Label()
+ widget.set_use_markup(True)
+ widget.set_markup('%s' % category["label"])
+ widget.set_alignment(.5, .5)
+ box.pack_start(widget, False, False, 1)
+ self.side_view_container.pack_start(box, False, False, 0)
+ widget = Gtk.IconView.new_with_model(self.storeFilter[category["id"]])
+
+ area = widget.get_area()
+
+ widget.set_item_width(self.min_pix_length)
+ widget.set_item_padding(0)
+ widget.set_column_spacing(18)
+ widget.set_row_spacing(18)
+ widget.set_margin(20)
+
+ pixbuf_renderer = Gtk.CellRendererPixbuf()
+ text_renderer = Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.NONE, wrap_mode=Pango.WrapMode.WORD_CHAR, wrap_width=0, width_chars=self.min_label_length, alignment=Pango.Alignment.CENTER)
+
+ text_renderer.set_alignment(.5, 0)
+ area.pack_start(pixbuf_renderer, True, True, False)
+ area.pack_start(text_renderer, True, True, False)
+ area.add_attribute(pixbuf_renderer, "icon-name", 1)
+ pixbuf_renderer.set_property("stock-size", Gtk.IconSize.DIALOG)
+ pixbuf_renderer.set_property("follow-state", True)
+
+ area.add_attribute(text_renderer, "text", 0)
+
+ self.side_view[category["id"]] = widget
+ self.side_view_container.pack_start(self.side_view[category["id"]], False, False, 0)
+ self.first_category_done = True
+ self.side_view[category["id"]].connect("item-activated", self.side_view_nav, category["id"])
+ self.side_view[category["id"]].connect("button-release-event", self.button_press, category["id"])
+ self.side_view[category["id"]].connect("keynav-failed", self.on_keynav_failed, category["id"])
+ self.side_view[category["id"]].connect("selection-changed", self.on_selection_changed, category["id"])
+
+ def bring_selection_into_view(self, iconview):
+ sel = iconview.get_selected_items()
+
+ if sel:
+ path = sel[0]
+ found, rect = iconview.get_cell_rect(path, None)
+
+ cw = self.side_view_container.get_window()
+ cw_x, cw_y = cw.get_position()
+
+ ivw = iconview.get_window()
+ iv_x, iv_y = ivw.get_position()
+
+ final_y = rect.y + (rect.height / 2) + cw_y + iv_y
+
+ adj = self.side_view_sw.get_vadjustment()
+ page = adj.get_page_size()
+ current_pos = adj.get_value()
+
+ if final_y > current_pos + page:
+ adj.set_value(iv_y + rect.y)
+ elif final_y < current_pos:
+ adj.set_value(iv_y + rect.y)
+
+ def on_selection_changed(self, widget, category):
+ sel = widget.get_selected_items()
+ if len(sel) > 0:
+ self.current_cat_widget = widget
+ self.bring_selection_into_view(widget)
+ for iv in self.side_view:
+ if self.side_view[iv] == self.current_cat_widget:
+ continue
+ self.side_view[iv].unselect_all()
+
+ def get_cur_cat_index(self, category):
+ i = 0
+ for cat in CATEGORIES:
+ if category == cat["id"]:
+ return i
+ i += 1
+
+ def get_cur_column(self, iconview):
+ s, path, cell = iconview.get_cursor()
+ if path:
+ col = iconview.get_item_column(path)
+ return col
+
+ def reposition_new_cat(self, sel, iconview):
+ iconview.set_cursor(sel, None, False)
+ iconview.select_path(sel)
+ iconview.grab_focus()
+
+ def on_keynav_failed(self, widget, direction, category):
+ num_cats = len(CATEGORIES)
+ current_idx = self.get_cur_cat_index(category)
+ new_cat = CATEGORIES[current_idx]
+ ret = False
+ dist = 1000
+ sel = None
+
+ if direction == Gtk.DirectionType.DOWN and current_idx < num_cats - 1:
+ new_cat = CATEGORIES[current_idx + 1]
+ col = self.get_cur_column(widget)
+ new_cat_view = self.side_view[new_cat["id"]]
+ model = new_cat_view.get_model()
+ iter = model.get_iter_first()
+ while iter is not None:
+ path = model.get_path(iter)
+ c = new_cat_view.get_item_column(path)
+ d = abs(c - col)
+ if d < dist:
+ sel = path
+ dist = d
+ iter = model.iter_next(iter)
+ self.reposition_new_cat(sel, new_cat_view)
+ ret = True
+ elif direction == Gtk.DirectionType.UP and current_idx > 0:
+ new_cat = CATEGORIES[current_idx - 1]
+ col = self.get_cur_column(widget)
+ new_cat_view = self.side_view[new_cat["id"]]
+ model = new_cat_view.get_model()
+ iter = model.get_iter_first()
+ while iter is not None:
+ path = model.get_path(iter)
+ c = new_cat_view.get_item_column(path)
+ d = abs(c - col)
+ if d <= dist:
+ sel = path
+ dist = d
+ iter = model.iter_next(iter)
+ self.reposition_new_cat(sel, new_cat_view)
+ ret = True
+ return ret
+
+ def button_press(self, widget, event, category):
+ if event.button == 1:
+ self.side_view_nav(widget, None, category)
+
+ def anyVisibleInCategory(self, category):
+ id = category["id"]
+ iter = self.storeFilter[id].get_iter_first()
+ visible = False
+ while iter is not None:
+ cat = self.storeFilter[id].get_value(iter, 3)
+ visible = cat == category["id"]
+ iter = self.storeFilter[id].iter_next(iter)
+ return visible
+
+ def setParentRefs (self, mod):
+ try:
+ mod._setParentRef(self.window)
+ except AttributeError:
+ pass
+ return True
+
+ def loadCheck (self, mod):
+ try:
+ return mod._loadCheck()
+ except:
+ return True
+
+ def back_to_icon_view(self, widget):
+ self.window.set_title(_("System Settings"))
+ self.window.resize(WIN_WIDTH, WIN_HEIGHT)
+ children = self.content_box.get_children()
+ for child in children:
+ child.hide()
+ if child.get_name() == "c_box":
+ c_widgets = child.get_children()
+ for c_widget in c_widgets:
+ c_widget.hide()
+ self.main_stack.set_visible_child_name("side_view_page")
+ self.header_stack.set_visible_child_name("side_view")
+ self.search_entry.grab_focus()
+ self.current_sidepage = None
+
+ def quit(self, *args):
+ self.window.destroy()
+ Gtk.main_quit()
+
+if __name__ == "__main__":
+ import signal
+
+ ps = proxygsettings.get_proxy_settings()
+ if ps:
+ proxy = urllib2.ProxyHandler(ps)
+ else:
+ proxy = urllib2.ProxyHandler()
+ urllib2.install_opener(urllib2.build_opener(proxy))
+
+ window = MainWindow()
+ signal.signal(signal.SIGINT, window.quit)
+ Gtk.main()
diff --git a/manjaro/cinnamon/desktop-overlay/usr/share/icons/default/index.theme b/manjaro/cinnamon/desktop-overlay/usr/share/icons/default/index.theme
new file mode 100644
index 0000000..741f643
--- /dev/null
+++ b/manjaro/cinnamon/desktop-overlay/usr/share/icons/default/index.theme
@@ -0,0 +1,2 @@
+[Icon Theme]
+Inherits=Breeze
diff --git a/manjaro/cinnamon/live-overlay b/manjaro/cinnamon/live-overlay
new file mode 120000
index 0000000..27b9d2a
--- /dev/null
+++ b/manjaro/cinnamon/live-overlay
@@ -0,0 +1 @@
+../../shared/manjaro/live-overlay
\ No newline at end of file
diff --git a/manjaro/cinnamon/mkinitcpio.conf b/manjaro/cinnamon/mkinitcpio.conf
new file mode 120000
index 0000000..d624606
--- /dev/null
+++ b/manjaro/cinnamon/mkinitcpio.conf
@@ -0,0 +1 @@
+../../shared/mkinitcpio.conf
\ No newline at end of file
diff --git a/manjaro/cinnamon/profile.conf b/manjaro/cinnamon/profile.conf
new file mode 100644
index 0000000..7c100d1
--- /dev/null
+++ b/manjaro/cinnamon/profile.conf
@@ -0,0 +1,84 @@
+##########################################
+###### use this file in the profile ######
+##########################################
+
+# use multilib packages; x86_64 only
+# multilib="true"
+
+# use pxe
+# pxe_boot="true"
+
+################ torrent ################
+
+# the torrent tracker urls, comma separated
+# tracker_url='udp://mirror.strits.dk:6969'
+
+# Piece size, 2^n
+# piece_size=21
+
+################ install ################
+
+# default displaymanager: none
+# supported; lightdm, sddm, gdm, lxdm, mdm
+displaymanager="lightdm"
+
+# Set to false to disable autologin in the livecd
+# autologin="true"
+
+# nonfree xorg drivers
+# nonfree_mhwd="true"
+
+# use plymouth
+plymouth_boot="true"
+
+# possible values: grub;systemd-boot
+# efi_boot_loader="grub"
+
+# configure calamares for netinstall
+# netinstall="false"
+
+# the default url for the netinstall.yaml
+# netgroups="https://raw.githubusercontent.com/manjaro/manjaro-tools-iso-profiles/master/shared/netinstall"
+
+# configure calamares to use chrootcfg instead of unpackfs
+# unpackfs="false"
+
+# use geoip
+# geoip="true"
+
+# unset defaults to given value
+plymouth_theme=manjaro-cinnamon
+
+# unset defaults to given values
+# names must match systemd service names
+# enable_systemd=('bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep')
+# disable_systemd=()
+
+# unset defaults to given values,
+# names must match openrc service names
+# enable_openrc=('acpid' 'bluetooth' 'consolekit' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
+# disable_openrc=()
+
+# unset defaults to given values
+# addgroups="video,power,disk,storage,optical,network,lp,scanner,wheel"
+
+# the same workgroup name if samba is used
+# smb_workgroup=""
+
+################# live-session #################
+
+# unset defaults to given value
+hostname="manjaro-cinnamon"
+
+# unset defaults to given value
+# password="manjaro"
+
+# unset defaults to given values
+# names must match systemd service names
+# services in enable_systemd array don't need to be listed here
+# enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
+
+# unset defaults to given values,
+# names must match openrc service names
+# services in enable_openrc array don't need to be listed here
+# enable_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
diff --git a/manjaro/deepin/Packages-Desktop b/manjaro/deepin/Packages-Desktop
new file mode 100644
index 0000000..d1038b2
--- /dev/null
+++ b/manjaro/deepin/Packages-Desktop
@@ -0,0 +1,122 @@
+######################################################
+### THIS FILE WILL INCLUDE shared/Packages-Desktop ###
+######################################################
+
+## deepin packages
+deepin-calendar
+deepin-file-manager
+deepin-gtk-theme
+deepin-social-sharing
+deepin-image-viewer
+
+## deepin-extra packages
+deepin-movie
+deepin-screenshot
+deepin-terminal
+# workaround launcher-bug https://github.com/linuxdeepin/dde-launcher/issues/5
+gnome-terminal
+
+## other deepin Packages
+baobab
+chromium
+dconf-editor
+downgrade
+evince
+gedit
+poppler-data # CKJ support for pdf
+evolution
+galculator
+gimp
+gksu
+gnome-system-monitor
+gnome-vfs
+gparted
+gvfs-afc
+gvfs-gphoto2
+gvfs-mtp # for mounting Samsung phones
+gvfs-smb
+hexchat
+htop
+isousb
+libimobiledevice
+libreoffice-still
+manjaro-browser-settings
+manjaro-deepin-settings
+manjaro-documentation
+manjaro-features
+manjaro-settings-manager-notifier
+manjaro-welcome
+mlocate
+polkit-gnome
+qt5ct
+qt5-styleplugins
+screenfetch
+smplayer
+sushi
+gufw # firewall
+transmission-gtk
+xarchiver
+xfburn
+
+## Network
+netctl
+networkmanager
+networkmanager-dispatcher-ntpd
+networkmanager-openconnect
+networkmanager-openvpn
+networkmanager-pptp
+networkmanager-vpnc
+openresolv
+syslog-ng
+
+## Packages for Sound and Audio
+gst-libav
+gst-plugins-bad
+gst-plugins-base
+gst-plugins-good
+gst-plugins-ugly
+gstreamer0.10-bad-plugins
+gstreamer0.10-base-plugins
+gstreamer0.10-good-plugins
+gstreamer0.10-ugly-plugins
+libdvdcss
+manjaro-alsa
+manjaro-pulse
+pulseaudio-bluetooth
+pulseaudio-ctl
+pulseaudio-zeroconf
+
+## Package management
+pamac
+yaourt
+
+## Artwork
+adwaita-manjaro-themes
+plymouth-theme-manjaro-deepin-circle
+
+## Games
+deepin-game
+#steam-manjaro
+
+## Java
+jre8-openjdk
+jre8-openjdk-headless
+icedtea-web
+
+## Printing / Scanning
+manjaro-printer
+xsane
+xsane-gimp
+
+## AUR Access
+autoconf
+automake
+binutils
+bison
+fakeroot
+flex
+gcc
+libtool
+m4
+make
+patch
diff --git a/manjaro/deepin/Packages-Live b/manjaro/deepin/Packages-Live
new file mode 120000
index 0000000..5e66e00
--- /dev/null
+++ b/manjaro/deepin/Packages-Live
@@ -0,0 +1 @@
+../../shared/Packages-Live
\ No newline at end of file
diff --git a/manjaro/deepin/Packages-Mhwd b/manjaro/deepin/Packages-Mhwd
new file mode 120000
index 0000000..9df3d5e
--- /dev/null
+++ b/manjaro/deepin/Packages-Mhwd
@@ -0,0 +1 @@
+../../shared/Packages-Mhwd
\ No newline at end of file
diff --git a/manjaro/deepin/Packages-Root b/manjaro/deepin/Packages-Root
new file mode 120000
index 0000000..60cc7bd
--- /dev/null
+++ b/manjaro/deepin/Packages-Root
@@ -0,0 +1 @@
+../../shared/Packages-Root
\ No newline at end of file
diff --git a/manjaro/deepin/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf b/manjaro/deepin/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf
new file mode 120000
index 0000000..d6c7fc1
--- /dev/null
+++ b/manjaro/deepin/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf
@@ -0,0 +1 @@
+/etc/fonts/conf.avail/70-no-bitmaps.conf
\ No newline at end of file
diff --git a/manjaro/deepin/desktop-overlay/usr/share/icons/default/index.theme b/manjaro/deepin/desktop-overlay/usr/share/icons/default/index.theme
new file mode 100644
index 0000000..741f643
--- /dev/null
+++ b/manjaro/deepin/desktop-overlay/usr/share/icons/default/index.theme
@@ -0,0 +1,2 @@
+[Icon Theme]
+Inherits=Breeze
diff --git a/manjaro/deepin/live-overlay b/manjaro/deepin/live-overlay
new file mode 120000
index 0000000..27b9d2a
--- /dev/null
+++ b/manjaro/deepin/live-overlay
@@ -0,0 +1 @@
+../../shared/manjaro/live-overlay
\ No newline at end of file
diff --git a/manjaro/deepin/mkinitcpio.conf b/manjaro/deepin/mkinitcpio.conf
new file mode 120000
index 0000000..d624606
--- /dev/null
+++ b/manjaro/deepin/mkinitcpio.conf
@@ -0,0 +1 @@
+../../shared/mkinitcpio.conf
\ No newline at end of file
diff --git a/manjaro/deepin/profile.conf b/manjaro/deepin/profile.conf
new file mode 100644
index 0000000..4e28873
--- /dev/null
+++ b/manjaro/deepin/profile.conf
@@ -0,0 +1,84 @@
+##########################################
+###### use this file in the profile ######
+##########################################
+
+# use multilib packages; x86_64 only
+# multilib="true"
+
+# use pxe
+# pxe_boot="true"
+
+################ torrent ################
+
+# the torrent tracker urls, comma separated
+# tracker_url='udp://mirror.strits.dk:6969'
+
+# Piece size, 2^n
+# piece_size=21
+
+################ install ################
+
+# default displaymanager: none
+# supported; lightdm, sddm, gdm, lxdm, mdm
+displaymanager="lightdm"
+
+# Set to false to disable autologin in the livecd
+# autologin="true"
+
+# nonfree xorg drivers
+# nonfree_mhwd="true"
+
+# use plymouth
+plymouth_boot="true"
+
+# possible values: grub;systemd-boot
+# efi_boot_loader="grub"
+
+# configure calamares for netinstall
+# netinstall="false"
+
+# the default url for the netinstall.yaml
+# netgroups="https://raw.githubusercontent.com/manjaro/manjaro-tools-iso-profiles/master/shared/netinstall"
+
+# configure calamares to use chrootcfg instead of unpackfs
+# unpackfs="false"
+
+# use geoip
+# geoip="true"
+
+# unset defaults to given value
+plymouth_theme=manjaro-deepin-circle
+
+# unset defaults to given values
+# names must match systemd service names
+# enable_systemd=('bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep')
+# disable_systemd=()
+
+# unset defaults to given values,
+# names must match openrc service names
+# enable_openrc=('acpid' 'bluetooth' 'consolekit' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
+# disable_openrc=()
+
+# unset defaults to given values
+# addgroups="video,power,disk,storage,optical,network,lp,scanner,wheel"
+
+# the same workgroup name if samba is used
+# smb_workgroup=""
+
+################# live-session #################
+
+# unset defaults to given value
+hostname="manjaro-deepin"
+
+# unset defaults to given value
+# password="manjaro"
+
+# unset defaults to given values
+# names must match systemd service names
+# services in enable_systemd array don't need to be listed here
+# enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
+
+# unset defaults to given values,
+# names must match openrc service names
+# services in enable_openrc array don't need to be listed here
+# enable_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
diff --git a/manjaro/i3/Packages-Desktop b/manjaro/i3/Packages-Desktop
new file mode 100644
index 0000000..f3d0a59
--- /dev/null
+++ b/manjaro/i3/Packages-Desktop
@@ -0,0 +1,135 @@
+######################################################
+### THIS FILE WILL INCLUDE shared/Packages-Desktop ###
+######################################################
+
+## i3 Packages
+accountsservice
+artwork-i3
+bmenu
+downgrade
+ffmpeg
+ffmpegthumbnailer
+flashplugin
+gconf # fix qt-theme
+gnome-keyring # fix wlan segfault
+gufw # firewall
+>openrc ufw-openrc
+hexchat
+htop
+lightdm-gtk-greeter-settings
+lm_sensors
+lxappearance
+manjaro-i3-settings
+manjaro-settings-manager-notifier
+mlocate
+morc_menu
+p7zip
+polkit-gnome
+ranger
+screenfetch
+>openrc timeset
+>openrc ntp-openrc
+qt5ct
+qt5-styleplugins
+tree
+vi
+vim
+wmutils
+xarchiver
+xautolock
+xdotool
+xfce4-power-manager
+xcursor-chameleon-pearl
+xcursor-maia
+xorg-xkill
+xorg-xprop
+
+## Applications
+arandr
+clipit
+dfc
+epdfview
+gcolor2
+gimp
+gksu
+gnome-vfs
+gparted
+gvfs # trash support and mounting volumes
+gvfs-afc
+gvfs-gphoto2
+gvfs-mtp # for mounting Samsung phones
+gvfs-smb
+isousb
+libgpod # iPhone/Pod connectivity
+manjaro-browser-settings
+manjaro-features
+manjaro-welcome
+# eventually add upower-pm-utils; it seems to depend on DE features; take what works default is upower
+# >openrc upower-pm-utils
+upower
+moc
+mousepad
+ncdu
+palemoon-bin
+perl-file-mimeinfo
+pcmanfm
+poppler-data # CKJ support for pdf
+open-fuse-iso
+sbxkb
+speedtest-cli
+transmission-gtk
+viewnior
+vlc-nightly
+w3m
+xfburn
+xterm
+
+## Network
+blueman
+>openrc bluez-openrc
+>systemd netctl
+>systemd networkmanager
+>openrc networkmanager-openrc
+>openrc networkmanager-consolekit
+network-manager-applet
+networkmanager-dispatcher-ntpd
+>systemd networkmanager-openconnect
+networkmanager-openvpn
+>systemd openssh
+>openrc openssh-openrc
+>openrc openvpn-openrc
+>systemd networkmanager-pptp
+networkmanager-vpnc
+>systemd openresolv
+>systemd syslog-ng
+json-c # for syslog-ng
+>openrc syslog-ng-openrc
+
+## Audio Packages
+>openrc alsa-utils-openrc
+>systemd alsa-utils
+alsa-plugins
+gst-libav
+gst-plugins-bad
+gst-plugins-base
+gst-plugins-good
+gst-plugins-ugly
+gstreamer0.10-bad-plugins
+gstreamer0.10-base-plugins
+gstreamer0.10-good-plugins
+gstreamer0.10-ugly-plugins
+flac
+libdvdcss
+manjaro-alsa
+volumeicon
+
+## Package management
+pamac
+yaourt
+
+## Printing
+manjaro-printer
+>openrc cups-openrc
+
+## AUR Access
+base-devel
diff --git a/manjaro/i3/Packages-Live b/manjaro/i3/Packages-Live
new file mode 120000
index 0000000..5e66e00
--- /dev/null
+++ b/manjaro/i3/Packages-Live
@@ -0,0 +1 @@
+../../shared/Packages-Live
\ No newline at end of file
diff --git a/manjaro/i3/Packages-Mhwd b/manjaro/i3/Packages-Mhwd
new file mode 100644
index 0000000..7b5a7dc
--- /dev/null
+++ b/manjaro/i3/Packages-Mhwd
@@ -0,0 +1,71 @@
+## Packages-Xorg minus nvidia 340xx and 304xx drivers
+
+## Xorg Drivers
+xf86-video-apm
+xf86-video-ark
+xf86-video-ati
+xf86-video-amdgpu # only works with kernels 4.2+
+xf86-video-chips
+xf86-video-dummy
+xf86-video-fbdev
+xf86-video-glint
+xf86-video-i128
+xf86-video-i740
+xf86-video-intel
+xf86-video-mach64
+xf86-video-neomagic
+xf86-video-nouveau
+xf86-video-nv
+xf86-video-openchrome
+xf86-video-r128
+xf86-video-rendition
+xf86-video-s3
+xf86-video-s3virge
+xf86-video-savage
+xf86-video-siliconmotion
+xf86-video-sis
+xf86-video-sisusb
+xf86-video-tdfx
+xf86-video-trident
+xf86-video-tseng
+xf86-video-vesa
+xf86-video-vmware
+xf86-video-voodoo
+
+## Bumblebee Support
+>systemd bumblebee
+>openrc bumblebee-openrc
+primus
+>multilib lib32-primus
+KERNEL-bbswitch
+
+## Network Support
+KERNEL-broadcom-wl
+KERNEL-rt3562sta
+KERNEL-r8168
+
+## Proprietary Drivers
+>nonfree_default catalyst-utils
+>nonfree_default KERNEL-catalyst
+>nonfree_default nvidia-utils
+>nonfree_default KERNEL-nvidia
+>nonfree_multilib lib32-catalyst-utils
+>nonfree_multilib lib32-nvidia-utils
+
+## Virtualbox Drivers
+>openrc virtualbox-guest-utils-openrc
+>systemd virtualbox-guest-utils
+KERNEL-virtualbox-guest-modules
+
+## Xorg Packages
+libxaw
+libxpm
+libxvmc
+pangox-compat
+
+## Xorg x86_64 Packages
+>multilib lib32-libxvmc
+
+## VMWare Support
+open-vm-tools
+xf86-input-vmmouse
diff --git a/manjaro/i3/Packages-Root b/manjaro/i3/Packages-Root
new file mode 120000
index 0000000..60cc7bd
--- /dev/null
+++ b/manjaro/i3/Packages-Root
@@ -0,0 +1 @@
+../../shared/Packages-Root
\ No newline at end of file
diff --git a/manjaro/i3/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf b/manjaro/i3/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf
new file mode 120000
index 0000000..d6c7fc1
--- /dev/null
+++ b/manjaro/i3/desktop-overlay/etc/fonts/conf.d/70-no-bitmaps.conf
@@ -0,0 +1 @@
+/etc/fonts/conf.avail/70-no-bitmaps.conf
\ No newline at end of file
diff --git a/manjaro/i3/desktop-overlay/etc/lightdm/lightdm-gtk-greeter.conf b/manjaro/i3/desktop-overlay/etc/lightdm/lightdm-gtk-greeter.conf
new file mode 100644
index 0000000..8c1b80a
--- /dev/null
+++ b/manjaro/i3/desktop-overlay/etc/lightdm/lightdm-gtk-greeter.conf
@@ -0,0 +1,17 @@
+[greeter]
+active-monitor = cursor
+
+# Possible options for images: "#source:", "#stretched:" Default: "#zoomed:"
+background = #353836
+user-background = false
+position = -50%,center
+default-user-image = /usr/share/pixmaps/faces/i3-maia_small.png
+font-name = Noto Sans 11
+xft-antialias = true
+xft-hintstyle = hintfull
+icon-theme-name = Breeze-Maia-Dark
+theme-name = Vertex-Maia-Dark
+cursor-theme-name = Breeze
+panel-position = top
+show-clock = true
+clock-format =
diff --git a/manjaro/i3/live-overlay/etc/default b/manjaro/i3/live-overlay/etc/default
new file mode 120000
index 0000000..812b9ff
--- /dev/null
+++ b/manjaro/i3/live-overlay/etc/default
@@ -0,0 +1 @@
+../../../../shared/manjaro/live-overlay/etc/default
\ No newline at end of file
diff --git a/manjaro/i3/live-overlay/etc/fstab b/manjaro/i3/live-overlay/etc/fstab
new file mode 120000
index 0000000..8750aca
--- /dev/null
+++ b/manjaro/i3/live-overlay/etc/fstab
@@ -0,0 +1 @@
+../../../../shared/manjaro/live-overlay/etc/fstab
\ No newline at end of file
diff --git a/manjaro/i3/live-overlay/etc/issue b/manjaro/i3/live-overlay/etc/issue
new file mode 120000
index 0000000..c519805
--- /dev/null
+++ b/manjaro/i3/live-overlay/etc/issue
@@ -0,0 +1 @@
+../../../../shared/manjaro/live-overlay/etc/issue
\ No newline at end of file
diff --git a/manjaro/i3/live-overlay/etc/pam.d b/manjaro/i3/live-overlay/etc/pam.d
new file mode 120000
index 0000000..68de596
--- /dev/null
+++ b/manjaro/i3/live-overlay/etc/pam.d
@@ -0,0 +1 @@
+../../../../shared/manjaro/live-overlay/etc/pam.d
\ No newline at end of file
diff --git a/manjaro/i3/live-overlay/etc/skel/.i3/config b/manjaro/i3/live-overlay/etc/skel/.i3/config
new file mode 100644
index 0000000..ce83624
--- /dev/null
+++ b/manjaro/i3/live-overlay/etc/skel/.i3/config
@@ -0,0 +1,387 @@
+# i3 config file (v4)
+# Please see http://i3wm.org/docs/userguide.html for a complete reference!
+
+# Set mod key (Mod1=, Mod4=)
+set $mod Mod4
+
+# set default desktop layout (default is tiling)
+# workspace_layout tabbed
+
+# Configure border style
+new_window pixel 1
+new_float normal
+
+# Hide borders
+hide_edge_borders none
+
+# change borders
+bindsym $mod+u border none
+bindsym $mod+y border pixel 1
+bindsym $mod+n border normal
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar {} block below.
+font xft:Noto Mono 10
+
+# Use Mouse+$mod to drag floating windows
+floating_modifier $mod
+
+# start a terminal
+bindsym $mod+Return exec terminal
+
+# kill focused window
+bindsym $mod+Shift+q kill
+
+# start program launcher
+bindsym $mod+d exec --no-startup-id dmenu_recency
+
+# launch categorized menu
+bindsym $mod+z exec --no-startup-id morc_menu
+
+################################################################################################
+## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ##
+################################################################################################
+
+exec --no-startup-id volumeicon
+bindsym $mod+Ctrl+m exec terminal -e 'alsamixer'
+#exec --no-startup-id pulseaudio
+#exec --no-startup-id pa-applet
+#bindsym $mod+Ctrl+m exec pavucontrol
+
+################################################################################################
+
+# Screen brightness controls
+# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
+# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
+
+# Start Applications
+bindsym $mod+Ctrl+b exec terminal -e 'bmenu'
+bindsym $mod+i exec exec sudo -E calamares
+bindsym $mod+F2 exec palemoon
+bindsym $mod+F3 exec pcmanfm
+# bindsym $mod+F3 exec ranger
+bindsym $mod+Shift+F3 exec gksu pcmanfm
+bindsym $mod+F5 exec terminal -e 'mocp'
+bindsym $mod+t exec --no-startup-id pkill compton
+bindsym $mod+Ctrl+t exec --no-startup-id compton -b
+bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'"
+bindsym Print exec --no-startup-id i3-scrot
+bindsym $mod+Print --release exec --no-startup-id i3-scrot -w
+bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s
+bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help_live.pdf
+bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
+
+# focus_follows_mouse no
+
+# change focus
+bindsym $mod+j focus left
+bindsym $mod+k focus down
+bindsym $mod+l focus up
+bindsym $mod+odiaeresis focus right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+bindsym $mod+Shift+j move left
+bindsym $mod+Shift+k move down
+bindsym $mod+Shift+l move up
+bindsym $mod+Shift+odiaeresis move right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# workspace back and forth (with/without active container)
+workspace_auto_back_and_forth yes
+bindsym $mod+b workspace back_and_forth
+bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
+
+# split orientation
+bindsym $mod+h split h;exec notify-send 'tile horizontally'
+bindsym $mod+v split v;exec notify-send 'tile vertically'
+bindsym $mod+q split toggle
+
+# toggle fullscreen mode for the focused container
+bindsym $mod+f fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# toggle sticky
+bindsym $mod+Shift+s sticky toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# move the currently focused window to the scratchpad
+bindsym $mod+Shift+minus move scratchpad
+
+# Show the next scratchpad window or hide the focused scratchpad window.
+# If there are multiple scratchpad windows, this command cycles through them.
+bindsym $mod+minus scratchpad show
+
+#navigate workspaces next / previous
+bindsym $mod+Ctrl+Right workspace next
+bindsym $mod+Ctrl+Left workspace prev
+
+# Workspace names
+# to display names or symbols instead of plain workspace numbers you can use
+# something like: set $ws1 1:mail
+# set $ws2 2:
+
+set $ws1 1
+set $ws2 2
+set $ws3 3
+set $ws4 4
+set $ws5 5
+set $ws6 6
+set $ws7 7
+set $ws8 8
+
+# switch to workspace
+bindsym $mod+1 workspace $ws1
+bindsym $mod+2 workspace $ws2
+bindsym $mod+3 workspace $ws3
+bindsym $mod+4 workspace $ws4
+bindsym $mod+5 workspace $ws5
+bindsym $mod+6 workspace $ws6
+bindsym $mod+7 workspace $ws7
+bindsym $mod+8 workspace $ws8
+
+# Move focused container to workspace
+bindsym $mod+Ctrl+1 move container to workspace $ws1
+bindsym $mod+Ctrl+2 move container to workspace $ws2
+bindsym $mod+Ctrl+3 move container to workspace $ws3
+bindsym $mod+Ctrl+4 move container to workspace $ws4
+bindsym $mod+Ctrl+5 move container to workspace $ws5
+bindsym $mod+Ctrl+6 move container to workspace $ws6
+bindsym $mod+Ctrl+7 move container to workspace $ws7
+bindsym $mod+Ctrl+8 move container to workspace $ws8
+
+# Move to workspace with focused container
+bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
+bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
+bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
+bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
+bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
+bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
+bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
+
+# Open applications on specific workspaces
+# assign [class="Thunderbird"] $ws1
+# assign [class="Pale moon"] $ws2
+# assign [class="Pcmanfm"] $ws3
+# assign [class="Skype"] $ws5
+
+# Open specific applications in floating mode
+for_window [title="alsamixer"] floating enable border pixel 1
+for_window [class="Calamares"] floating enable border normal
+for_window [class="Clipgrab"] floating enable
+for_window [title="File Transfer*"] floating enable
+for_window [class="Galculator"] floating enable border pixel 1
+for_window [class="GParted"] floating enable border normal
+for_window [title="i3_help"] floating enable sticky enable border normal
+for_window [class="Lightdm-gtk-greeter-settings"] floating enable
+for_window [class="Lxappearance"] floating enable border normal
+for_window [class="Manjaro Settings Manager"] floating enable border normal
+for_window [class="Manjaro Welcome"] floating enable
+for_window [title="MuseScore: Play Panel"] floating enable
+for_window [class="Nitrogen"] floating enable sticky enable border normal
+for_window [class="Oblogout"] fullscreen enable
+for_window [class="octopi"] floating enable
+for_window [class="Pamac-manager"] floating enable
+for_window [class="Pamac-updater"] floating enable
+for_window [class="Pavucontrol"] floating enable
+for_window [class="Qtconfig-qt4"] floating enable border normal
+for_window [class="qt5ct"] floating enable sticky enable border normal
+for_window [title="sudo"] floating enable border normal
+for_window [class="Simple-scan"] floating enable border normal
+for_window [class="(?i)System-config-printer.py"] floating enable border normal
+for_window [class="Skype"] floating enable border normal
+for_window [class="Thus"] floating enable border normal
+for_window [class="Timeset-gui"] floating enable border normal
+for_window [class="(?i)virtualbox"] floating enable border normal
+for_window [class="Xfburn"] floating enable
+
+# switch to workspace with urgent window automatically
+for_window [urgent=latest] focus
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
+
+# Set shut down, restart and locking features
+bindsym $mod+0 mode "$mode_system"
+set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
+mode "$mode_system" {
+ bindsym l exec --no-startup-id i3exit lock, mode "default"
+ bindsym s exec --no-startup-id i3exit suspend, mode "default"
+ bindsym u exec --no-startup-id i3exit switch_user, mode "default"
+ bindsym e exec --no-startup-id i3exit logout, mode "default"
+ bindsym h exec --no-startup-id i3exit hibernate, mode "default"
+ bindsym r exec --no-startup-id i3exit reboot, mode "default"
+ bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
+
+ # exit system mode: "Enter" or "Escape"
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+# Resize window (you can also use the mouse for that)
+bindsym $mod+r mode "resize"
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+ # Pressing left will shrink the window’s width.
+ # Pressing right will grow the window’s width.
+ # Pressing up will shrink the window’s height.
+ # Pressing down will grow the window’s height.
+ bindsym j resize shrink width 5 px or 5 ppt
+ bindsym k resize grow height 5 px or 5 ppt
+ bindsym l resize shrink height 5 px or 5 ppt
+ bindsym odiaeresis resize grow width 5 px or 5 ppt
+
+ # same bindings, but for the arrow keys
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Right resize grow width 10 px or 10 ppt
+
+ # exit resize mode: Enter or Escape
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+# Lock screen
+bindsym $mod+9 exec --no-startup-id blurlock
+
+# Autostart applications
+exec --no-startup-id nitrogen --restore; sleep 1; compton -b
+exec --no-startup-id start_conky_live_maia
+# exec --no-startup-id blueman
+exec --no-startup-id clipit
+exec --no-startup-id desktop-items
+exec --no-startup-id manjaro-welcome
+exec --no-startup-id nm-applet
+exec --no-startup-id pamac-tray
+exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+# exec_always --no-startup-id sbxkb
+exec --no-startup-id xfce4-power-manager
+exec_always --no-startup-id setcursor
+
+# Start i3bar to display a workspace bar (plus the system information i3status if available)
+bar {
+ status_command i3status
+ position bottom
+
+## please set your primary output first. Example: 'xrandr --output eDP1 --primary'
+# tray_output primary
+# tray_output eDP1
+
+ bindsym button4 nop
+ bindsym button5 nop
+ font xft:Noto Sans 10.5
+ strip_workspace_numbers yes
+
+ colors {
+# background $transparent
+ background #2B2C2B
+ statusline #F9FAF9
+ separator #454947
+
+# border backgr. text
+ focused_workspace #F9FAF9 #16A085 #2B2C2B
+ active_workspace #595B5B #353836 #FDF6E3
+ inactive_workspace #595B5B #353836 #EEE8D5
+ urgent_workspace #16A085 #FDF6E3 #E5201D
+ }
+}
+
+# hide/unhide i3status bar
+bindsym $mod+m bar mode toggle
+
+# Theme colors
+# class border backgr. text indic. child_border
+client.focused #808280 #808280 #80FFF9 #FDF6E3
+client.focused_inactive #434745 #434745 #16A085 #454948
+client.unfocused #434745 #434745 #16A085 #454948
+client.urgent #CB4B16 #FDF6E3 #16A085 #268BD2
+client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
+
+client.background #2B2C2B
+
+#############################
+### settings for i3-gaps: ###
+#############################
+
+# Set inner/outer gaps
+gaps inner 10
+gaps outer -4
+
+# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size.
+# gaps inner|outer current|all set|plus|minus
+# gaps inner all set 10
+# gaps outer all plus 5
+
+# Smart gaps (gaps used if only more than one container on the workspace)
+smart_gaps on
+
+# Smart borders (draw borders around container only if it is not the only container on this workspace)
+# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0)
+smart_borders on
+
+# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces.
+set $mode_gaps Gaps: (o) outer, (i) inner
+set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
+set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
+bindsym $mod+Shift+g mode "$mode_gaps"
+
+mode "$mode_gaps" {
+ bindsym o mode "$mode_gaps_outer"
+ bindsym i mode "$mode_gaps_inner"
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+mode "$mode_gaps_inner" {
+ bindsym plus gaps inner current plus 5
+ bindsym minus gaps inner current minus 5
+ bindsym 0 gaps inner current set 0
+
+ bindsym Shift+plus gaps inner all plus 5
+ bindsym Shift+minus gaps inner all minus 5
+ bindsym Shift+0 gaps inner all set 0
+
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+mode "$mode_gaps_outer" {
+ bindsym plus gaps outer current plus 5
+ bindsym minus gaps outer current minus 5
+ bindsym 0 gaps outer current set 0
+
+ bindsym Shift+plus gaps outer all plus 5
+ bindsym Shift+minus gaps outer all minus 5
+ bindsym Shift+0 gaps outer all set 0
+
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
diff --git a/manjaro/i3/live-overlay/etc/sudoers.d b/manjaro/i3/live-overlay/etc/sudoers.d
new file mode 120000
index 0000000..06f1eb3
--- /dev/null
+++ b/manjaro/i3/live-overlay/etc/sudoers.d
@@ -0,0 +1 @@
+../../../../shared/manjaro/live-overlay/etc/sudoers.d/
\ No newline at end of file
diff --git a/manjaro/i3/mkinitcpio.conf b/manjaro/i3/mkinitcpio.conf
new file mode 120000
index 0000000..d624606
--- /dev/null
+++ b/manjaro/i3/mkinitcpio.conf
@@ -0,0 +1 @@
+../../shared/mkinitcpio.conf
\ No newline at end of file
diff --git a/manjaro/i3/profile.conf b/manjaro/i3/profile.conf
new file mode 100644
index 0000000..1af8cd7
--- /dev/null
+++ b/manjaro/i3/profile.conf
@@ -0,0 +1,84 @@
+##########################################
+###### use this file in the profile ######
+##########################################
+
+# use multilib packages; x86_64 only
+# multilib="true"
+
+# use pxe
+# pxe_boot="true"
+
+################ torrent ################
+
+# the torrent tracker urls, comma separated
+# tracker_url='udp://mirror.strits.dk:6969'
+
+# Piece size, 2^n
+# piece_size=21
+
+################ install ################
+
+# default displaymanager: none
+# supported; lightdm, sddm, gdm, lxdm, mdm
+displaymanager="lightdm"
+
+# Set to false to disable autologin in the livecd
+# autologin="true"
+
+# nonfree xorg drivers
+# nonfree_mhwd="true"
+
+# use plymouth
+plymouth_boot="false"
+
+# possible values: grub;systemd-boot
+# efi_boot_loader="grub"
+
+# configure calamares for netinstall
+# netinstall="false"
+
+# the default url for the netinstall.yaml
+# netgroups="https://raw.githubusercontent.com/manjaro/manjaro-tools-iso-profiles/master/shared/netinstall"
+
+# configure calamares to use chrootcfg instead of unpackfs
+# unpackfs="false"
+
+# use geoip
+# geoip="true"
+
+# unset defaults to given value
+# plymouth_theme=manjaro-elegant
+
+# unset defaults to given values
+# names must match systemd service names
+# enable_systemd=('bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep')
+# disable_systemd=()
+
+# unset defaults to given values,
+# names must match openrc service names
+# enable_openrc=('acpid' 'bluetooth' 'consolekit' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
+# disable_openrc=()
+
+# unset defaults to given values
+# addgroups="video,power,disk,storage,optical,network,lp,scanner,wheel"
+
+# the same workgroup name if samba is used
+# smb_workgroup=""
+
+################# live-session #################
+
+# unset defaults to given value
+hostname="manjaro-i3"
+
+# unset defaults to given value
+# password="manjaro"
+
+# unset defaults to given values
+# names must match systemd service names
+# services in enable_systemd array don't need to be listed here
+# enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
+
+# unset defaults to given values,
+# names must match openrc service names
+# services in enable_openrc array don't need to be listed here
+# enable_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')