code:
From 83594bd4476c71752b28ad4b261459571ae26773 Mon Sep 17 00:00:00 2001
From: Alex Suykov <alex.suykov@gmail.com>
Date: Mon, 29 Jan 2018 13:15:15 +0200
Subject: [PATCH xserver 8/8] add support for weston-launch protocol

As a device access protocol, it is similar to but simpler than
the dbus based one that logind uses.

Unlike logind, weston-launch needs device name to re-open the device.
To handle this, path field was added to InputInfoRec.

Support for weston-launch must be explicitly requested at configure time.
---
 configure.ac                                |  15 ++
 hw/xfree86/common/xf86Events.c              |   2 +-
 hw/xfree86/common/xf86Init.c                |   4 +
 hw/xfree86/common/xf86Xinput.c              |  11 +-
 hw/xfree86/common/xf86Xinput.h              |   2 +
 hw/xfree86/os-support/linux/Makefile.am     |   4 +
 hw/xfree86/os-support/linux/lnx_platform.c  |   3 +
 hw/xfree86/os-support/linux/weston-launch.c | 316 ++++++++++++++++++++++++++++
 include/dix-config.h.in                     |   3 +
 include/weston-launch.h                     |   9 +
 10 files changed, 365 insertions(+), 4 deletions(-)
 create mode 100644 hw/xfree86/os-support/linux/weston-launch.c
 create mode 100644 include/weston-launch.h

diff --git a/configure.ac b/configure.ac
index 76c8baa6f..416d2d7af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -644,6 +644,7 @@ AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with p
 AC_ARG_ENABLE(linux_acpi, AS_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
 AC_ARG_ENABLE(linux_apm, AS_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes])
 AC_ARG_ENABLE(systemd-logind, AS_HELP_STRING([--enable-systemd-logind], [Build systemd-logind support (default: auto)]), [SYSTEMD_LOGIND=$enableval], [SYSTEMD_LOGIND=auto])
+AC_ARG_ENABLE(weston-launch, AS_HELP_STRING([--enable-weston-launch], [Enable support for weston-launch protocol (default: no)]), [WESTON_LAUNCH=$enableval], [WESTON_LAUNCH=no])
 AC_ARG_ENABLE(suid-wrapper, AS_HELP_STRING([--enable-suid-wrapper], [Build suid-root wrapper for legacy driver support on rootless xserver systems (default: no)]), [SUID_WRAPPER=$enableval], [SUID_WRAPPER=no])

 dnl DDXes.
@@ -973,6 +974,20 @@ if test "x$CONFIG_HAL" = xyes; then
 fi
 AM_CONDITIONAL(CONFIG_HAL, [test "x$CONFIG_HAL" = xyes])

+if test "x$WESTON_LAUNCH" = xauto; then
+	WESTON_LAUNCH=no
+fi
+if test "x$WESTON_LAUNCH" = xyes; then
+	if test "x$SYSTEMD_LOGIND" = xyes; then
+		AC_MSG_ERROR([cannot enable both systemd-logind and weston-launch.])
+	elif test "x$SYSTEMD_LOGIND" = xauto; then
+		SYSTEMD_LOGIND=no
+	fi
+
+	AC_DEFINE(WESTON_LAUNCH, 1, [Enable weston-launch support code])
+fi
+AM_CONDITIONAL(WESTON_LAUNCH,  [test "x$WESTON_LAUNCH" = xyes])
+
 if test "x$SYSTEMD_LOGIND" = xauto; then
         if test "x$HAVE_DBUS" = xyes -a "x$CONFIG_UDEV" = xyes ; then
                 SYSTEMD_LOGIND=yes
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index e5b5c63ad..d7217d9e1 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -585,7 +585,7 @@ xf86VTSwitch(void)
 #ifdef SYSTEMD_LOGIND
     else if (!systemd_logind_controls_session())
         xf86VTEnter();
-#else
+#elif !defined(WESTON_LAUNCH)
     else
         xf86VTEnter();
 #endif
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index bad4cedde..9d828b5cb 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -55,6 +55,7 @@
 #include "mi.h"
 #include "dbus-core.h"
 #include "systemd-logind.h"
+#include "weston-launch.h"

 #include "loaderProcs.h"
 #ifdef XFreeXDGA
@@ -445,6 +446,9 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
 #ifdef SYSTEMD_LOGIND
         systemd_logind_init();
 #endif
+#ifdef WESTON_LAUNCH
+        weston_launch_init();
+#endif

         /* Do a general bus probe.  This will be a PCI probe for x86 platforms */
         xf86BusProbe();
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 4f0ab3661..b10003d80 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -64,6 +64,7 @@
 #include "extinit.h"
 #include "loaderProcs.h"
 #include "systemd-logind.h"
+#include "weston-launch.h"

 #include "exevents.h"           /* AddInputDevice */
 #include "exglobals.h"
@@ -745,6 +746,7 @@ xf86AllocateInput(void)

     pInfo->fd = -1;
     pInfo->type_name = "UNKNOWN";
+    pInfo->path = NULL;

     return pInfo;
 }
@@ -808,6 +810,9 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
         /* Else the entry wasn't in the xf86InputDevs list (ignore this). */
     }

+    if (pInp->path)
+        free(pInp->path);
+
     free((void *) pInp->driver);
     free((void *) pInp->name);
     xf86optionListFree(pInp->options);
@@ -923,6 +928,8 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)
     if (path && drv->capabilities & XI86_DRV_CAP_SERVER_FD){
 #ifdef SYSTEMD_LOGIND
         fd = systemd_logind_take_fd(pInfo->major, pInfo->minor, path, &paused);
+#elif defined(WESTON_LAUNCH)
+        fd = weston_launch_open(path);
 #else
         fd = open(path, O_RDONLY | O_CLOEXEC);
 #endif
@@ -935,18 +942,16 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)

                 xorg_list_append(&new_device->node, &new_input_devices_list);
                 systemd_logind_release_fd(pInfo->major, pInfo->minor, fd);
-                free(path);
                 return BadMatch;
             }
 #endif
             pInfo->fd = fd;
+            pInfo->path = path;
             pInfo->flags |= XI86_SERVER_FD;
             pInfo->options = xf86ReplaceIntOption(pInfo->options, "fd", fd);
         }
     }

-    free(path);
-
     xf86AddInput(drv, pInfo);

     input_lock();
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 0024053c7..4700557b1 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -111,6 +111,8 @@ struct _InputInfoRec {
     void *module;
     XF86OptionPtr options;
     InputAttributes *attrs;
+
+    char *path;
 };

 /* xf86Globals.c */
diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
index d8cb17777..135e13182 100644
--- a/hw/xfree86/os-support/linux/Makefile.am
+++ b/hw/xfree86/os-support/linux/Makefile.am
@@ -23,6 +23,10 @@ LOGIND_SRCS = systemd-logind.c
 XORG_CFLAGS += $(DBUS_CFLAGS)
 endif

+if WESTON_LAUNCH
+LOGIND_SRCS = weston-launch.c
+endif
+
 liblinux_la_SOURCES = linux.h lnx_init.c lnx_video.c \
                      lnx_agp.c lnx_kmod.c lnx_bell.c lnx_platform.c \
 		     $(srcdir)/../shared/VTsw_usl.c \
diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c
index fe1af0049..26f34de09 100644
--- a/hw/xfree86/os-support/linux/lnx_platform.c
+++ b/hw/xfree86/os-support/linux/lnx_platform.c
@@ -19,6 +19,7 @@

 #include "hotplug.h"
 #include "systemd-logind.h"
+#include "weston-launch.h"

 static Bool
 get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
@@ -34,6 +35,8 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
     int minor = attribs->minor;

     fd = systemd_logind_take_fd(major, minor, path, &paused);
+#elif defined(WESTON_LAUNCH)
+    fd = weston_launch_open(path);
 #else
     fd = open(path, O_RDWR | O_CLOEXEC);
 #endif
diff --git a/hw/xfree86/os-support/linux/weston-launch.c b/hw/xfree86/os-support/linux/weston-launch.c
new file mode 100644
index 000000000..6e9476d66
--- /dev/null
+++ b/hw/xfree86/os-support/linux/weston-launch.c
@@ -0,0 +1,316 @@
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#ifdef HAVE_SYS_SYSMACROS_H
+#include <sys/sysmacros.h>
+#endif
+#include <linux/major.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include "os.h"
+#include "linux.h"
+#include "xf86.h"
+#include "xf86platformBus.h"
+#include "xf86Xinput.h"
+#include "xf86Priv.h"
+#include "globals.h"
+
+#include "weston-launch.h"
+
+#define WESTON_LAUNCHER_OPEN 0
+
+#define WESTON_LAUNCHER_ACTIVATE   1
+#define WESTON_LAUNCHER_DEACTIVATE 2
+
+#ifndef WESTON_LAUNCH
+# error Trying to build weston-launch.c but WESTON_LAUNCH is not defined
+#endif
+
+static int weston_launch_fd;
+
+struct weston_launcher_cmd {
+    int opcode;
+};
+
+struct weston_launcher_open {
+    int opcode;
+    int flags;
+    char path[0];
+};
+
+/* When switching out or returning to a VT, logind sends one notifications
+   (signal in their terms) for each managed device, and does not clearly
+   distinguish between inputs and drms. The X server code then needs to
+   match the dev against either drms (xf86_platform_devices) or inputs
+   (xf86InputDevs), track when all devices have been suspended/resumed.
+
+   In contrast, both weston-launch and vtmux send a single notification
+   when all devices have been disabled or resumed. The X server then only
+   needs to disable or enable all devices it knows about. */
+
+static void disable_drm_devices(void)
+{
+    struct xf86_platform_device *pdev = xf86_platform_devices;
+    struct xf86_platform_device *pend = pdev + xf86_num_platform_devices;
+
+    for (; pdev < pend; pdev++)
+            pdev->flags |= XF86_PDEV_PAUSED;
+}
+
+static void enable_drm_devices(void)
+{
+    struct xf86_platform_device *pdev = xf86_platform_devices;
+    struct xf86_platform_device *pend = pdev + xf86_num_platform_devices;
+
+    for (; pdev < pend; pdev++)
+            pdev->flags &= ~XF86_PDEV_PAUSED;
+}
+
+static void close_input_devices(void)
+{
+    InputInfoPtr pdev;
+
+    for (pdev = xf86InputDevs; pdev; pdev = pdev->next) {
+        if (!(pdev->flags & XI86_SERVER_FD))
+            continue; /* do we ever get non-server-managed devices here? */
+
+        xf86DisableInputDeviceForVTSwitch(pdev);
+
+        close(pdev->fd);
+        pdev->fd = -1;
+        pdev->options = xf86ReplaceIntOption(pdev->options, "fd", pdev->fd);
+    }
+}
+
+static void reopen_input_devices(void)
+{
+    InputInfoPtr pdev;
+
+    for (pdev = xf86InputDevs; pdev; pdev = pdev->next) {
+        if (pdev->fd >= 0)
+            continue;
+        if (!pdev->path)
+            continue;
+
+        pdev->fd = weston_launch_open(pdev->path);
+        pdev->options = xf86ReplaceIntOption(pdev->options, "fd", pdev->fd);
+
+        if (pdev->fd < 0)
+            continue;
+
+        xf86EnableInputDeviceForVTSwitch(pdev);
+    }
+}
+
+static void activate_vt(void)
+{
+    enable_drm_devices();
+    xf86VTEnter();
+
+    reopen_input_devices();
+    xf86InputEnableVTProbe();
+}
+
+static void deactivate_vt(void)
+{
+    disable_drm_devices();
+    close_input_devices();
+}
+
+static void socket_handler(int fd, int ready, void *data)
+{
+    int ret, opcode;
+    char buf[64];
+    struct weston_launcher_cmd* msg;
+
+    (void)data;
+    (void)ready;
+
+    ret = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
+
+    if (ret <= 0)
+        return;
+    if (ret < sizeof(*msg))
+        return; /* invalid packet? */
+
+    msg = (void*)buf;
+    opcode = msg->opcode;
+
+    if (opcode == WESTON_LAUNCHER_ACTIVATE)
+        activate_vt();
+    else if (opcode == WESTON_LAUNCHER_DEACTIVATE)
+        deactivate_vt();
+    else
+        LogMessage(X_INFO, "weston-launch unknown opcode %i\n", opcode);
+}
+
+static int set_manager_fd(void)
+{
+    char* fdstr;
+    int fd;
+
+    if ((fdstr = getenv("WESTON_LAUNCHER_SOCK")) == NULL) {
+        LogMessage(X_INFO, "weston-launch missing control socket fd\n");
+        return -1;
+    }
+
+    if ((fd = atoi(fdstr)) <= 2) {
+        LogMessage(X_INFO, "weston-launch invalid control fd %s\n", fdstr);
+        return -1;
+    }
+
+    if (fcntl(fd, F_SETFD, FD_CLOEXEC) < 0) {
+        LogMessage(X_INFO, "weston-launch cannot set CLOEXEC\n");
+        return -1;
+    }
+
+    weston_launch_fd = fd;
+
+    SetNotifyFd(fd, socket_handler, X_NOTIFY_READ, NULL);
+
+    return 0;
+}
+
+static int set_vt_globals(void)
+{
+    struct stat st;
+
+    if (fstat(0, &st) < 0) {
+        LogMessage(X_INFO, "weston-launch cannot stat fd 0\n");
+        return -1;
+    }
+
+    if (!S_ISCHR(st.st_mode) || major(st.st_rdev) != TTY_MAJOR) {
+        LogMessage(X_INFO, "weston-launch fd 0 is not a tty\n");
+        return -1;
+    }
+
+    xf86Info.vtno = minor(st.st_rdev);
+    xf86Info.dontVTSwitch = TRUE;
+    xf86Info.autoVTSwitch = FALSE;
+    xf86Info.consoleFd = 0;
+
+    serverGeneration = 2;
+
+    return 0;
+}
+
+int weston_launch_init(void)
+{
+    if (set_manager_fd())
+        return -1;
+    if (set_vt_globals())
+        return -1;
+
+    return 0;
+}
+
+static int send_open_request(int fd, const char* path)
+{
+    struct weston_launcher_open *req;
+    int len, ret;
+
+    if (path == NULL) {
+        LogMessage(X_INFO, "weston-launch open NULL\n");
+        return -1;
+    }
+
+    if (strstr(path, "mouse"))
+        return -1;
+
+    len = sizeof(*req) + strlen(path) + 1;
+    req = malloc(len);
+
+    if (!req)
+        return -1;
+
+    req->opcode = WESTON_LAUNCHER_OPEN;
+    req->flags = O_RDWR;
+    strcpy(req->path, path);
+
+    ret = send(fd, req, len, 0);
+
+    free(req);
+
+    if (ret < 0)
+        return -1;
+
+    return 0;
+}
+
+static int recv_open_reply(int fd)
+{
+    struct msghdr msg;
+    struct cmsghdr *cmsg;
+    struct iovec iov;
+    char control[CMSG_SPACE(sizeof(int))];
+    int ret, cmd;
+
+again:
+    memset(&msg, 0, sizeof msg);
+    iov.iov_base = &cmd;
+    iov.iov_len = sizeof cmd;
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_control = control;
+    msg.msg_controllen = sizeof control;
+
+    ret = recvmsg(fd, &msg, MSG_CMSG_CLOEXEC);
+
+    if (ret < 0)
+        return -1;
+    if (ret < sizeof(int)) {
+        LogMessage(X_INFO, "weston-launch truncated reply\n");
+        return -1;
+    }
+
+    if (cmd < 0) {
+        LogMessage(X_INFO, "weston-launch open returns %i\n", cmd);
+        return cmd;
+    }
+
+    if (cmd > 0) {
+        if (cmd == WESTON_LAUNCHER_DEACTIVATE)
+            deactivate_vt();
+        LogMessage(X_INFO, "weston-launch interrupted request\n");
+        goto again;
+    }
+
+    cmsg = CMSG_FIRSTHDR(&msg);
+
+    if (!cmsg) {
+        LogMessage(X_INFO, "weston-launch got no ancillary data\n");
+        return -1;
+    }
+    if (cmsg->cmsg_level != SOL_SOCKET || cmsg->cmsg_type != SCM_RIGHTS) {
+        LogMessage(X_INFO, "weston-launch invalid ancillary data\n");
+        return -1;
+    }
+    if (cmsg->cmsg_len < sizeof(*cmsg) + sizeof(int)) {
+        LogMessage(X_INFO, "weston-launch malformed ancillary data\n");
+        return -1;
+    }
+
+    return *((int*)CMSG_DATA(cmsg));
+}
+
+int weston_launch_open(const char *path)
+{
+    int rfd, sfd = weston_launch_fd;
+
+    if (send_open_request(sfd, path))
+        return -1;
+
+    if ((rfd = recv_open_reply(sfd)) < 0)
+        return -1;
+
+    fcntl(rfd, F_SETFL, O_NONBLOCK);
+
+    return rfd;
+}
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index d357910a6..723dd412b 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -454,6 +454,9 @@
 /* Enable systemd-logind integration */
 #undef SYSTEMD_LOGIND 1

+/* Enable weston-launch integration */
+#undef WESTON_LAUNCH 1
+
 /* Have a monotonic clock from clock_gettime() */
 #undef MONOTONIC_CLOCK

diff --git a/include/weston-launch.h b/include/weston-launch.h
new file mode 100644
index 000000000..371d31eac
--- /dev/null
+++ b/include/weston-launch.h
@@ -0,0 +1,9 @@
+#ifndef WESTON_LAUNCH_H
+#define WESTON_LAUNCH_H
+
+#ifdef WESTON_LAUNCH
+int weston_launch_init(void);
+int weston_launch_open(const char *path);
+#endif
+
+#endif
--
2.16.1


code:
config BR2_PACKAGE_XORG_SERVER_WL
	bool "xorg-server-wl"
	depends on BR2_USE_MMU # fork()
	# xserver uses inb/outb on arm, which aren't available with musl
	depends on !(BR2_arm && BR2_TOOLCHAIN_USES_MUSL)
	# We need a SHA1 implementation. If either openssl or
	# libgcrypt are already part of the build, we'll use one of
	# them, otherwise, use the small libsha1 library.
	select BR2_PACKAGE_LIBSHA1 if (!BR2_PACKAGE_OPENSSL && !BR2_PACKAGE_LIBGCRYPT)
	select BR2_PACKAGE_MCOOKIE
	select BR2_PACKAGE_PIXMAN
	select BR2_PACKAGE_XFONT_FONT_ALIAS
	select BR2_PACKAGE_XFONT_FONT_MISC_MISC
	select BR2_PACKAGE_XFONT_FONT_CURSOR_MISC
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXAU
	select BR2_PACKAGE_XLIB_LIBXCURSOR
	select BR2_PACKAGE_XLIB_LIBXDAMAGE
	select BR2_PACKAGE_XLIB_LIBXDMCP
	select BR2_PACKAGE_XLIB_LIBXEXT
	select BR2_PACKAGE_XLIB_LIBXFIXES
	select BR2_PACKAGE_XLIB_LIBXFT
	select BR2_PACKAGE_XLIB_LIBXI
	select BR2_PACKAGE_XLIB_LIBXINERAMA
	select BR2_PACKAGE_XLIB_LIBXRANDR
	select BR2_PACKAGE_XLIB_LIBXRENDER
	select BR2_PACKAGE_XLIB_LIBXRES
	select BR2_PACKAGE_XLIB_LIBXXF86VM
	select BR2_PACKAGE_XLIB_LIBXKBFILE
	select BR2_PACKAGE_XLIB_XTRANS
	select BR2_PACKAGE_XDATA_XBITMAPS
	select BR2_PACKAGE_XPROTO_BIGREQSPROTO
	select BR2_PACKAGE_XPROTO_COMPOSITEPROTO
	select BR2_PACKAGE_XPROTO_DAMAGEPROTO
	select BR2_PACKAGE_XPROTO_FIXESPROTO
	select BR2_PACKAGE_XPROTO_FONTSPROTO
	select BR2_PACKAGE_XPROTO_GLPROTO
	select BR2_PACKAGE_XPROTO_INPUTPROTO
	select BR2_PACKAGE_XPROTO_KBPROTO
	select BR2_PACKAGE_XPROTO_RANDRPROTO
	select BR2_PACKAGE_XPROTO_RENDERPROTO
	select BR2_PACKAGE_XPROTO_RESOURCEPROTO
	select BR2_PACKAGE_XPROTO_VIDEOPROTO
	select BR2_PACKAGE_XPROTO_XCMISCPROTO
	select BR2_PACKAGE_XPROTO_XEXTPROTO
	select BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO
	select BR2_PACKAGE_XPROTO_XF86DGAPROTO
	select BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO
	select BR2_PACKAGE_XPROTO_XPROTO
	select BR2_PACKAGE_XUTIL_UTIL_MACROS
	select BR2_PACKAGE_XKEYBOARD_CONFIG
	select BR2_PACKAGE_XPROTO_DRI2PROTO
	select BR2_PACKAGE_XLIB_LIBXFONT2
	select BR2_PACKAGE_XLIB_LIBXCOMPOSITE
	select BR2_PACKAGE_XPROTO_PRESENTPROTO
	select BR2_PACKAGE_LIBDRM
	select BR2_PACKAGE_LIBPCIACCESS
	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_TOOLCHAIN_HAS_SYNC_4
	help
	  X.Org X server with weston-launch patch

	  http://xorg.freedesktop.org

repo_name: arsv/minibase

license: unknown


code:
################################################################################
#
# xorg-server-wl
#
################################################################################

XORG_SERVER_WL_VERSION = 1.19.6
XORG_SERVER_WL_SOURCE = xorg-server-$(XORG_SERVER_WL_VERSION).tar.bz2
XORG_SERVER_WL_SITE = https://xorg.freedesktop.org/archive/individual/xserver
XORG_SERVER_WL_LICENSE = MIT
XORG_SERVER_WL_LICENSE_FILES = COPYING
XORG_SERVER_WL_INSTALL_STAGING = YES
# xfont_font-util is needed only for autoreconf
XORG_SERVER_WL_AUTORECONF = YES
XORG_SERVER_WL_DEPENDENCIES = \
	libpciaccess \
	libdrm \
	xfont_font-util \
	xutil_util-macros \
	xlib_libX11 \
	xlib_libXau \
	xlib_libXdmcp \
	xlib_libXext \
	xlib_libXfixes \
	xlib_libXi \
	xlib_libXrender \
	xlib_libXres \
	xlib_libXft \
	xlib_libXcursor \
	xlib_libXinerama \
	xlib_libXrandr \
	xlib_libXdamage \
	xlib_libXxf86vm \
	xlib_libxkbfile \
	xlib_libXcomposite \
	xlib_xtrans \
	xdata_xbitmaps \
	xproto_bigreqsproto \
	xproto_compositeproto \
	xproto_damageproto \
	xproto_fixesproto \
	xproto_fontsproto \
	xproto_glproto \
	xproto_inputproto \
	xproto_kbproto \
	xproto_randrproto \
	xproto_renderproto \
	xproto_resourceproto \
	xproto_videoproto \
	xproto_xcmiscproto \
	xproto_xextproto \
	xproto_xf86bigfontproto \
	xproto_xf86dgaproto \
	xproto_xf86vidmodeproto \
	xproto_xproto \
	xproto_dri2proto \
	xproto_presentproto \
	xkeyboard-config \
	pixman \
	mcookie \
	host-pkgconf

# We force -O2 regardless of the optimization level chosen by the
# user, as the X.org server is known to trigger some compiler bugs at
# -Os on several architectures.
XORG_SERVER_WL_CONF_OPTS = \
	--disable-config-hal \
	--disable-xnest \
	--disable-xephyr \
	--disable-dmx \
	--with-builder-addr=buildroot@buildroot.org \
	CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/pixman-1 -O2" \
	--with-fontrootdir=/usr/share/fonts/X11/ \
	--disable-xvfb \
	--enable-weston-launch \
	--enable-libdrm \
	--enable-xorg \
	--enable-composite \
	--disable-kdrive \
	--disable-xfbdev \
	--disable-screensaver

# Xwayland support needs libdrm, libepoxy, wayland and libxcomposite
ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_LIBEPOXY)$(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_WAYLAND_PROTOCOLS),yyyy)
XORG_SERVER_WL_CONF_OPTS += --enable-xwayland
XORG_SERVER_WL_DEPENDENCIES += libdrm libepoxy wayland wayland-protocols
else
XORG_SERVER_WL_CONF_OPTS += --disable-xwayland
endif

ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)
XORG_SERVER_WL_CONF_OPTS += --enable-dri --enable-glx
XORG_SERVER_WL_DEPENDENCIES += mesa3d xproto_xf86driproto
else
XORG_SERVER_WL_CONF_OPTS += --disable-dri --disable-glx
endif

# Optional packages
ifeq ($(BR2_PACKAGE_TSLIB),y)
XORG_SERVER_WL_DEPENDENCIES += tslib
XORG_SERVER_WL_CONF_OPTS += --enable-tslib LDFLAGS="-lts"
endif

ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
XORG_SERVER_WL_DEPENDENCIES += udev
XORG_SERVER_WL_CONF_OPTS += --enable-config-udev
# udev kms support depends on libdrm and dri2
ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_XPROTO_DRI2PROTO),yy)
XORG_SERVER_WL_CONF_OPTS += --enable-config-udev-kms
else
XORG_SERVER_WL_CONF_OPTS += --disable-config-udev-kms
endif
endif

ifeq ($(BR2_PACKAGE_DBUS),y)
XORG_SERVER_WL_DEPENDENCIES += dbus
XORG_SERVER_WL_CONF_OPTS += --enable-config-dbus
endif

ifeq ($(BR2_PACKAGE_FREETYPE),y)
XORG_SERVER_WL_DEPENDENCIES += freetype
endif

ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
XORG_SERVER_WL_DEPENDENCIES += libunwind
XORG_SERVER_WL_CONF_OPTS += --enable-libunwind
else
XORG_SERVER_WL_CONF_OPTS += --disable-libunwind
endif

ifeq ($(BR2_PACKAGE_XPROTO_RECORDPROTO),y)
XORG_SERVER_WL_DEPENDENCIES += xproto_recordproto
XORG_SERVER_WL_CONF_OPTS += --enable-record
else
XORG_SERVER_WL_CONF_OPTS += --disable-record
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT2),y)
XORG_SERVER_WL_DEPENDENCIES += xlib_libXfont2
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT),y)
XORG_SERVER_WL_DEPENDENCIES += xlib_libXfont
endif

ifneq ($(BR2_PACKAGE_XLIB_LIBXVMC),y)
XORG_SERVER_WL_CONF_OPTS += --disable-xvmc
endif

ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y)
XORG_SERVER_WL_DEPENDENCIES += xproto_dri2proto
XORG_SERVER_WL_CONF_OPTS += --enable-dri2
else
XORG_SERVER_WL_CONF_OPTS += --disable-dri2
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE)$(BR2_PACKAGE_XPROTO_DRI3PROTO),yy)
XORG_SERVER_WL_DEPENDENCIES += xlib_libxshmfence xproto_dri3proto
XORG_SERVER_WL_CONF_OPTS += --enable-dri3
ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy)
XORG_SERVER_WL_DEPENDENCIES += libepoxy
XORG_SERVER_WL_CONF_OPTS += --enable-glamor
else
XORG_SERVER_WL_CONF_OPTS += --disable-glamor
endif
else
XORG_SERVER_WL_CONF_OPTS += --disable-dri3 --disable-glamor
endif

ifneq ($(BR2_PACKAGE_XLIB_LIBDMX),y)
XORG_SERVER_WL_CONF_OPTS += --disable-dmx
endif

ifeq ($(BR2_PACKAGE_OPENSSL),y)
XORG_SERVER_WL_CONF_OPTS += --with-sha1=libcrypto
XORG_SERVER_WL_DEPENDENCIES += openssl
else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
XORG_SERVER_WL_CONF_OPTS += --with-sha1=libgcrypt
XORG_SERVER_WL_DEPENDENCIES += libgcrypt
else
XORG_SERVER_WL_CONF_OPTS += --with-sha1=libsha1
XORG_SERVER_WL_DEPENDENCIES += libsha1
endif

$(eval $(autotools-package))


code:
From 24fd0551333e7eded87b64dd36062da3df2f6380 Mon Sep 17 00:00:00 2001
From: Explorer09 <explorer09@gmail.com>
Date: Mon, 4 Sep 2017 10:47:33 +0800
Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac.

This would, e.g. define _GNU_SOURCE in config.h, enabling the
reallocarray() prototype in glibc 2.26+ on Linux systems with that
version of glibc.

Fixes #241.
---
 configure.ac | 2 ++
 1 file changed, 2 insertions(+)

--- a/configure.ac
+++ b/configure.ac
@@ -25,8 +25,10 @@
 # autoconf requirements and initialization

 AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])
+AC_PREREQ([2.60])
 AC_CONFIG_SRCDIR([src/scan.l])
 AC_CONFIG_AUX_DIR([build-aux])
+AC_USE_SYSTEM_EXTENSIONS
 LT_INIT
 AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects])
 AC_CONFIG_HEADER([src/config.h])


code:
/kernel.bin
/initrd
/initrd.img
/bootfs
/bootfs.img
/whole.img


code:
all: kernel.bin initrd.img whole.img

kernel.bin:
	./kernel.sh

initrd.img:
	./initrd.sh

whole.img:
	./whole.sh

clean:
	rm -fr initrd/
	rm -f initrd.img kernel.bin whole.img


code:
This is a special configuration meant for probing and debugging
early (initrd) boot. There are no properly bootable images here.
Qemu loads kernel/initrd and drops the user into cmd.

An empty whole.img is created only to have something backing the
block device, and to let the kernel read the partition table.


code:
#!/sbin/msh

onexit /sbin/reboot

/sbin/kmount -vc /dev
reopen /dev/console

/sbin/kmount -vc /sys
/sbin/kmount -vc /proc

setenv PATH /sbin:/bin

/sbin/cmd

exec /sbin/reboot -p


code:
#!/bin/sh

set -e

rm -fr initrd
mkdir -p initrd/sbin

cp -at initrd/ initrd-dropin/*
cp -at initrd/sbin/ ../minibase/out/sbin/*

mv -t initrd/sbin/ initrd/sbin/system/reboot
rm -fr initrd/sbin/system
rm -fr initrd/sbin/service
rm -f initrd/sbin/wifi
rm -f initrd/sbin/*ctl

kver=4.12.10
kmod=lib/modules/$kver
broot=../buildroot/output/target

msrc=$broot/lib/modules/$kver/kernel/drivers
mdst=initrd/lib/modules/$kver/kernel/drivers

mkdir -p $mdst

cp -at $mdst $msrc/block
cp -at $mdst $msrc/ata
cp -at $mdst $msrc/usb

depmod -b initrd $kver
rm initrd/lib/modules/$kver/*.bin

(cd initrd && find . | cpio -oH newc) | gzip -c > initrd.img


code:
#!/bin/sh

cp ../brrootfs/bzImage kernel.bin


code:
# All sizes are in 512-blocks

MiB=2048   # 1MiB = 2048*512

bootskip=32
bootsize=$((4*MiB-bootskip))
rootskip=$((bootskip+bootsize))
rootsize=$((4*MiB))
totalsize=$((rootskip+rootsize))

# vim: ft=sh


code:
#!/bin/sh

set -e

source ./whole.map

dd of=whole.img if=/dev/zero bs=512 count=$totalsize status=none

sfdisk -q --no-reread whole.img <<END
label: dos
label-id: 0x11223344

1: start=$bootskip, size=$bootsize, type=ef, bootable
2: start=$rootskip, size=$rootsize, type=83
END


code:
#!/bin/sh

exec qemu-system-x86_64 -enable-kvm  -drive format=raw,file=whole.img \
	-kernel kernel.bin -initrd initrd.img


code:
/initrd
/initrd.img
/bootfs
/bootfs.img
/rootfs
/rootfs.img
/whole.img


code:
all: whole.img

initrd.img:
	./initrd.sh

bootfs.img: initrd.img whole.map
	./bootfs.sh

rootfs.img: whole.map
	./rootfs.sh

whole.img: rootfs.img bootfs.img whole.map
	./whole.sh

clean:
	rm -fr rootfs/ bootfs/ initrd/
	rm -f rootfs.img bootfs.img initrd.img whole.img


code:
This is the base system. Rootfs is assembled here as a plaintext Ext4 image.
Runtime system configuration (what to run on which VTs, services etc) comes
from rootfs-dropin.

Initrd is packed with block drivers, and uses findblk to locate the root
device. Nothing fancy, and this is also what most non-encrypted installation
using minibase would probably use.

Bootloader (syslinux) is used to load kernel+initrd with either BIOS and UEFI.
For UEFI only, it would probably be better to append initrd to EFI-stubbed
kernel and let the firmware boot that directly, but there's Qemu which only
really does BIOS well, and one of my test devices is BIOS-only as well.
Syslinux loads kernel and initrd the same way in both cases.


code:
DEFAULT minibase
TIMEOUT 0
LABEL minibase
  LINUX /linux/kernel
  INITRD /linux/initrd


code:
#!/bin/sh

set -e

source ./whole.map

rm -fr bootfs
mkdir -p bootfs/linux

cp initrd.img bootfs/linux/initrd
cp ../brrootfs/bzImage bootfs/linux/kernel
cp bootfs-dropin/syslinux.cfg bootfs/

img=bootfs.img

dd if=/dev/zero of=$img bs=512 count=$bootsize status=none

syslinux=/usr/lib/syslinux

mkfs.fat $img
mmd -i $img ::/EFI
mmd -i $img ::/EFI/BOOT
mcopy -i $img bootfs/* ::
mcopy -i $img $syslinux/efi64/syslinux.efi ::/EFI/BOOT/BOOTX64.EFI
mcopy -i $img $syslinux/efi64/ldlinux.e64  ::/EFI/BOOT/ldlinux.e64
mcopy -i $img $syslinux/efi32/syslinux.efi ::/EFI/BOOT/BOOTAI32.EFI
mcopy -i $img $syslinux/efi32/ldlinux.e32  ::/EFI/BOOT/ldlinux.e32

syslinux -i $img


code:
mbr 11223344
part 1 boot
part 2 root


code:
#!/sbin/msh

onexit /sbin/reboot

/sbin/kmount -vc /dev
reopen /dev/console

/sbin/kmount -vc /sys
/sbin/kmount -vc /proc

/sbin/runwith /sbin/findblk /sbin/udevmod -s

/sbin/kmount /root /dev/mapper/root ext4

exec /sbin/switchroot /root /sbin/system/start


code:
#!/bin/sh

set -e

rm -fr initrd

sdst=initrd/sbin
ssrc=../minibase/out/sbin

mkdir -p $sdst
cp -at $sdst $ssrc/system/findblk
cp -at $sdst $ssrc/system/switchroot
cp -at $sdst $ssrc/system/reboot
cp -at $sdst $ssrc/service/udevmod
cp -at $sdst $ssrc/modprobe
cp -at $sdst $ssrc/runwith
cp -at $sdst $ssrc/kmount
cp -at $sdst $ssrc/msh

cp -at initrd/ initrd-dropin/*

kver=4.12.10
kmod=lib/modules/$kver
broot=../brrootfs

msrc=$broot/lib/modules/$kver/kernel/drivers
mdst=initrd/lib/modules/$kver/kernel/drivers

mkdir -p $mdst

cp -at $mdst $msrc/block
cp -at $mdst $msrc/ata
cp -at $mdst $msrc/usb

cp -at initrd/lib/modules/$kver $broot/lib/modules/$kver/modules.{builtin,order}
depmod -b initrd $kver
rm initrd/lib/modules/$kver/*.bin

(cd initrd && find . | cpio -oH newc) | gzip -c > initrd.img


code:
#!/sbin/msh

/usr/bin/xrdb -retain /etc/X11/xdefaults

exec /usr/bin/fluxbox


code:
#!/sbin/msh

exec /usr/bin/Xorg $DISPLAY


code:
URxvt*background:	#101010
URxvt*foreground:	white
URxvt*font:		-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso8859-1
URxvt*title:		X Unicode Terminal
URxvt*scrollBar:	False


code:
Section "Module"
	Load "fb"
	Load "fbdevhw"
	Load "shadowfb"
	Load "shadow"
	Load "vgahw"
	Load "int10"
	Load "vbe"
EndSection

Section "InputClass"
        Identifier "evdev keyboard catchall"
	MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
	Identifier "evdev pointer catchall"
	MatchIsPointer "on"
	MatchDevicePath "/dev/input/event*"
	Driver "evdev"
EndSection

Section "InputClass"
	Identifier "synaptics catchall"
	MatchIsTouchpad "on"
	MatchDevicePath "/dev/input/event*"
	Driver "synaptics"
EndSection


code:
root:x:0:
user:x:1:
control:x:10:


code:
C-Esc: vtctl 0
C-F1: vtctl 1
C-F2: vtctl 2
C-F3: vtctl 3
C-F4: vtctl 4
C-F5: vtctl 5

hold C-A-Del: svctl reboot
C-Power: svctl poweroff


code:
suhub: *
vtmux: control
super: control
ifmon: control
wsupp: control


code:
#!/sbin/msh

invoke /bin/ping


code:
#!/sbin/msh

exec /sbin/service/badsrv


code:
#!/sbin/msh

mkdir /var/run/dropbear 0700
exec /usr/sbin/dropbear -FR


code:
#!/sbin/msh

# ifmon expects wsupp in PATH
setenv PATH "/sbin/service:/sbin"

exec /sbin/service/ifmon


code:
#!/sbin/msh

exec /sbin/service/keymon


code:
#!/sbin/msh

exec /sbin/service/mountd


code:
#!/sbin/msh

exec /sbin/service/rootsh ttyS0


code:
#!/sbin/msh

exec /sbin/service/sockmod


code:
#!/sbin/msh

exec /sbin/service/suhub


code:
#!/sbin/msh

mkdir /var/log

exec /sbin/service/sysklogd


code:
#!/sbin/msh

exec /sbin/service/udevmod


code:
#!/sbin/msh

exec /sbin/service/vtmux 3


code:
#!/sbin/msh

close 3

cd /

setenv PATH "/sbin"

exec /sbin/system/ctrlvt


code:
#!/sbin/msh

close 3

cd /

setenv PATH "/usr/bin:/bin:/usr/sbin:/sbin"

exec /sbin/cmd


code:
#!/sbin/msh

setenv USER user
setenv HOME /home/user
setenv SHELL /sbin/cmd

umask 0000
setenv XDG_RUNTIME_DIR /tmp/$USER
mkdir $XDG_RUNTIME_DIR 0700 $USER:$USER
mkdir /tmp/.X11-unix 01777
umask 0022

cd $HOME

groups control
setgid $USER
setuid $USER

setenv WESTON_TTY_FD 0
setenv WESTON_LAUNCHER_SOCK 3

waitfor /dev/dri/card0

exec /sbin/system/xorgvt


code:
#!/sbin/msh

setenv USER user
setenv HOME /home/user
setenv SHELL /sbin/cmd

cd $HOME

groups control
setgid $USER
setuid $USER

setenv XDG_RUNTIME_DIR /tmp/$USER

mkdir $XDG_RUNTIME_DIR 0700 $USER:$USER

setenv WESTON_TTY_FD 0
setenv WESTON_LAUNCHER_SOCK 3

waitfor /dev/dri/card0

exec /usr/bin/weston


code:
#!/sbin/msh

setenv USER user
setenv HOME /home/user
setenv SHELL /sbin/cmd

cd $HOME

setgid $USER
setuid $USER

setenv XDG_RUNTIME_DIR /tmp/$USER

mkdir $XDG_RUNTIME_DIR 0700 $USER:$USER

setenv WESTON_TTY_FD 0
setenv WESTON_LAUNCHER_SOCK 3

waitfor /dev/dri/card0

exec /sbin/system/stubvt


code:
#!/sbin/msh

write "mem" /sys/power/state


code:
#!/sbin/msh

onexit /sbin/system/reboot

setenv PATH /bin:/sbin:/usr/bin

/sbin/kmount -vc /dev/pts
/sbin/kmount -vc /run
/sbin/kmount -vc /mnt
/sbin/kmount -vc /tmp
# remount root read-write
/sbin/kmount -e /

umask 0002

mkdir /run/ctrl

prctl no-new-privs

exec /sbin/service/super /sbin/system/reboot


code:
#!/bin/sh

set -e

source ./whole.map

mkdir -p rootfs/bin
mkdir -p rootfs/dev
mkdir -p rootfs/mnt
mkdir -p rootfs/proc
mkdir -p rootfs/sys
mkdir -p rootfs/tmp
mkdir -p rootfs/run
mkdir -p rootfs/usr
mkdir -p rootfs/var

mkdir -p rootfs/home/user
mkdir -p rootfs/home/root

rm -f rootfs/var/run; ln -sf /run rootfs/var/run

#broot=../brrootfs

#if [ -d ../buildroot/output/target ]; then
#	(cd $broot && ./stage.sh)
#fi

cp -at rootfs/ ../brrootfs/{bin,etc,lib,usr}
cp -at rootfs/ ../minibase/out/sbin
cp -at rootfs/ rootfs-dropin/*

rm -f rootfs.img

# mkfs.ext2 needs size in KiB, that's half the number of 512-blocks
fakeroot sh <<END
chown -h -R 0:0 rootfs
chown -R 1:1 rootfs/home/user
mkfs.ext4 -m 0 -q -d rootfs rootfs.img $((rootsize/2))
END


code:
# All sizes are in 512-blocks

MiB=2048   # 1MiB = 2048*512

bootskip=32
bootsize=$((5*MiB-bootskip))
rootskip=$((bootskip+bootsize))
rootsize=$((59*MiB))
totalsize=$((rootskip+rootsize))

# vim: ft=sh


code:
#!/bin/sh

set -e

source ./whole.map

syslinux=/usr/lib/syslinux

dd of=whole.img if=/dev/zero bs=512 count=$totalsize status=none
dd of=whole.img if=$syslinux/bios/mbr.bin conv=notrunc status=none

sfdisk -q whole.img <<END
label: dos
label-id: 0x11223344

1: start=$bootskip, size=$bootsize, type=ef, bootable
2: start=$rootskip, size=$rootsize, type=83
END

dd of=whole.img if=bootfs.img bs=512 seek=$bootskip conv=notrunc status=none
dd of=whole.img if=rootfs.img bs=512 seek=$rootskip conv=notrunc status=none


code:
#!/bin/sh

exec qemu-system-x86_64 -enable-kvm -drive format=raw,file=whole.img \
	-chardev vc,id=ttyS0 \
	-chardev stdio,id=ttyS1 \
	-serial chardev:ttyS0 \
	-serial chardev:ttyS1


code:
/dekeys.nkw
/initrd
/initrd.img
/bootfs
/bootfs.img
/rootfs
/rootfs.img
/whole.img


code:
all: whole.img

initrd.img:
	./initrd.sh

bootfs.img: initrd.img whole.map
	./bootfs.sh

rootfs.img:
	./rootfs.sh

whole.img: rootfs.img bootfs.img whole.map
	./whole.sh

clean:
	rm -fr bootfs/ initrd/
	rm -f rootfs.img bootfs.img initrd.img whole.img

distclean: clean
	rm -f dekeys.nkw


code:
Enabling disk encryption requires initrd changes (passblk instead of findblk)
and actually encrypting the rootfs image. The contents of rootfs remains the
same as in sys-1-plain, no changes there, but it gets encrypted.

Bootloader configuration is the same as well, but now with a different initrd.


code:
mbr 11223344
part 1 boot -
part 2 root 1


code:
#!/sbin/msh

onexit /sbin/reboot

/sbin/kmount -vc /dev
reopen /dev/console

/sbin/kmount -vc /sys
/sbin/kmount -vc /proc

/sbin/modprobe crypto_engine
/sbin/modprobe crypto_user
/sbin/modprobe cryptd
/sbin/modprobe cbc
/sbin/modprobe ecb
/sbin/modprobe xts
/sbin/modprobe dm-crypt

/sbin/runwith /sbin/passblk /sbin/udevmod -s

/sbin/kmount /root /dev/mapper/root ext4

exec /sbin/switchroot /root /sbin/system/start


code:
#!/bin/sh

set -e
mkdir -p initrd

sdst=initrd/sbin
ssrc=../minibase/out/sbin

mkdir -p $sdst
cp -at $sdst $ssrc/system/passblk
cp -at $sdst $ssrc/system/switchroot
cp -at $sdst $ssrc/system/reboot
cp -at $sdst $ssrc/service/udevmod
cp -at $sdst $ssrc/modprobe
cp -at $sdst $ssrc/runwith
cp -at $sdst $ssrc/kmount
cp -at $sdst $ssrc/msh

cp -at initrd/ initrd-dropin/*

kver=4.12.10
kmod=lib/modules/$kver
broot=../brrootfs

msrc=$broot/lib/modules/$kver/kernel/drivers
mdst=initrd/lib/modules/$kver/kernel/drivers

mkdir -p $mdst/char

cp -at initrd/$kmod/kernel $broot/$kmod/kernel/crypto

cp -at $mdst/ $msrc/md
cp -at $mdst/ $msrc/dax
cp -at $mdst/ $msrc/crypto
cp -at $mdst/ $msrc/block
cp -at $mdst/ $msrc/ata
cp -at $mdst/ $msrc/usb
cp -at $mdst/char/ $msrc/char/hw_random

cp -at initrd/lib/modules/$kver $broot/lib/modules/$kver/modules.{builtin,order}
depmod -b initrd $kver
rm initrd/lib/modules/$kver/*.bin

mkdir -p initrd/etc
cp dekeys.nkw initrd/etc/dekeys

(cd initrd && find . | cpio -oH newc) | gzip -c > initrd.img


code:
#!/bin/sh

set -e

plain=../sys-1-plain

if [ ! -f $plain/rootfs.img ]; then
	echo "Assembling plain rootfs"
	(cd $plain && ./rootfs.sh)
fi

if [ ! -f dekeys.nkw ]; then
	../minibase/out/sbin/dektool create dekeys.nkw
fi

echo "Encrypting root filesystem"
../minibase/out/sbin/deitool $plain/rootfs.img rootfs.img dekeys.nkw


code:
#!/bin/sh

exec qemu-system-x86_64 -enable-kvm -drive format=raw,file=whole.img


code:
title: Bunsen Labs Minimal
author: Paulo Silva
based on work from: Ulisse Perusin, Lapo Calamandrei, Jakub Steiner, Andreas Nilssen - iconset from UbuntuStudio 8.04
licence: Creative Commons - NonCommercial-ShareAlike - http://creativecommons.org/licenses/by-sa/2.0/
colour used: #B2B2B2

repo_name: nitrofurano/minimaliconthemes


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.1">
<path id="1" style="opacity:1;fill:#aaaaaa;stroke:#000000;stroke-width:1;stroke-miterlimit:4"
  d="m 24,8.5 -14.5,20 29,0 L 24,8.5 Z"/>
<path id="2" style="opacity:1;fill:#aaaaaa;stroke:#000000;stroke-width:1;stroke-miterlimit:4"
  d="m 8.5,32.5 0,5 31,0 0,-5 L 8.5,32.5 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#7F7F7F;stroke:none"
cx="24" cy="24" r="22.5"/>
<path id="1-3" style="fill:#555555;stroke:none"
d="M 10,28 H 20 V 38 H 28 V 28 H 38 V 20 H 28 V 10 H 20 V 20 H 10 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#7F7F7F;stroke:none;opacity:1"
cx="24" cy="24" r="22.5"/>
<path id="1-3" style="opacity:1;fill:#555555;stroke:none"
d="M 16.9,27.2 L 22.6,24.5 V 38 H 30.6 V 10 L 12.6,20 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#7F7F7F;stroke:none"
cx="24" cy="24" r="22.5"/>
<path id="1" style="fill:#555555;stroke:none"
d="M 10,28 H 38 V 20 H 10 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<rect id="0" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" width="2.3" height="5.2" x="31.3" y="0.6" />
<rect id="1" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="26.3" height="38.9" x="10.8" y="5.4" />
<rect id="2" style="fill:#B2B2B2;opacity:1;stroke:#000000;stroke-width:1" y="7.9" x="13.2" height="33.6" width="21.8" />
<!-- Lapo Calamandrei -->
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<rect id="0" style="opacity:0.42;fill:none;opacity:1;stroke:#ffffff;stroke-width:1" width="31" height="17.6" x="8.5" y="9.5" rx="0" ry="0" />
<rect id="1" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="33.4" height="12.5" x="7.3" y="7.9" />
<rect id="2" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="41.2" height="5.7" x="3.4" y="36" />
<rect id="3" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" y="20.4" x="2.7" height="16" width="42.9" />
<rect id="4" style="fill:#B2B2B2;opacity:1;stroke:#000000;stroke-width:1" y="1.5" x="11.3" height="19.9" width="25.1" />
<rect id="5" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" y="21" x="10.3" height="11.3" width="27" />
<rect id="6" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" y="38.6" x="7.2" height="7" width="33.4"  />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="48"
   height="48"
   version="1.1"
   id="svg4"
   sodipodi:docname="emblem-favorite.svg"
   inkscape:version="0.92.1 r15371">
  <metadata
     id="metadata10">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs8" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="714"
     inkscape:window-height="736"
     id="namedview6"
     showgrid="false"
     inkscape:zoom="4.9166667"
     inkscape:cx="23.832253"
     inkscape:cy="22.779661"
     inkscape:window-x="0"
     inkscape:window-y="26"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4" />
  <path
     style="opacity:1;fill:#cc0000;stroke:none;stroke-width:1.44428229"
     d="M 13.336093,3.2363044 C 6.9135579,3.2355019 1.7298458,8.4414153 1.7056719,14.863905 C 1.6640828,25.913247 16.935752,36.988802 24.015882,44.951238 C 31.107974,36.969613 46.24273,26.755359 46.407901,14.863905 C 46.497101,8.4419885 41.200014,3.2355008 34.777478,3.2363044 C 30.090356,3.2373292 25.862017,6.0521447 24.052554,10.375912 C 22.244282,6.0549828 18.020136,3.2407382 13.336093,3.2363044 Z"
     id="1"
     inkscape:connector-curvature="0"
     sodipodi:nodetypes="cscsccc" />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="48"
   height="48"
   version="1.1"
   id="svg4"
   sodipodi:docname="emblem-important.svg"
   inkscape:version="0.92.1 r15371">
  <metadata
     id="metadata10">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs8" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="714"
     inkscape:window-height="736"
     id="namedview6"
     showgrid="false"
     inkscape:zoom="4.9166667"
     inkscape:cx="24"
     inkscape:cy="24"
     inkscape:window-x="0"
     inkscape:window-y="26"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4" />
  <circle
     id="0"
     style="fill:#CCAA99;stroke:none;opacity:1"
     cx="24"
     cy="24"
     r="22.5" />
  <path
     id="1"
     style="opacity:1;fill:#555555;stroke:none;stroke-width:0.69760346"
     d="M 19.767797,30.610169 V 6.6915254 H 28.108474 V 30.610169 Z"
     inkscape:connector-curvature="0"
     sodipodi:nodetypes="ccccc" />
  <path
     sodipodi:nodetypes="ccccc"
     inkscape:connector-curvature="0"
     d="M 19.767797,40.98305 V 34.555932 H 28.108474 V 40.98305 Z"
     style="opacity:1;fill:#555555;stroke:none;stroke-width:0.36161676"
     id="path4487" />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="48"
   height="48"
   version="1.1"
   id="svg4"
   sodipodi:docname="emblem-urgent.svg"
   inkscape:version="0.92.1 r15371">
  <metadata
     id="metadata10">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs8" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="714"
     inkscape:window-height="736"
     id="namedview6"
     showgrid="false"
     inkscape:zoom="4.9166667"
     inkscape:cx="24"
     inkscape:cy="24"
     inkscape:window-x="0"
     inkscape:window-y="26"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4" />
  <circle
     id="0"
     style="fill:#CCAA99;stroke:none;opacity:1"
     cx="24"
     cy="24"
     r="22.5" />
  <g
     id="g4488"
     transform="translate(4.4745763,-3.2542373)">
    <path
       sodipodi:nodetypes="ccccccc"
       inkscape:connector-curvature="0"
       d="M 30.520339,36.430508 L 24.6,41.9 L 15.7,29.922034 V 13.2 H 23.633898 V 27.684745 Z"
       style="opacity:1;fill:#555555;stroke:none"
       id="1" />
  </g>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg height="48" width="48">
<path id="1" style="opacity:1;fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1"
d="M 1.5,9.5 H 46.5 V 35.5 L 37.5,43.5 H 1.5 Z"/>
<path id="2" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1"
d="M 46.40625,35.5 L 37.5,35.5 V 43.031251"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   height="48px"
   width="48px"
   version="1.1"
   id="svg5"
   sodipodi:docname="text-x-generic.svg"
   inkscape:version="0.92.1 r15371">
  <metadata
     id="metadata11">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs9">
    <linearGradient
       y2="248.6311"
       x2="153.0005"
       y1="15.4238"
       x1="99.777298"
       gradientUnits="userSpaceOnUse"
       id="aigrd1">
      <stop
         id="stop53300"
         style="stop-color:#184375"
         offset="0" />
      <stop
         id="stop53302"
         style="stop-color:#C8BDDC"
         offset="1" />
    </linearGradient>
  </defs>
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="1360"
     inkscape:window-height="736"
     id="namedview7"
     showgrid="false"
     inkscape:zoom="11.23324"
     inkscape:cx="26.806131"
     inkscape:cy="19.288264"
     inkscape:window-x="0"
     inkscape:window-y="26"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg5" />
  <path
     id="p1"
     style="opacity:1;fill:#aaaaaa;stroke:#000000;stroke-width:1"
     d="M 31.5,3.5 L 41.5,14.5 V 44.5 H 6.5 V 3.5 Z" />
  <path
     style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#555555;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.88795257px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
     d="M 11 9.0917969 L 11 18.416016 L 11 20 L 11 22 L 11 30 L 11 36 L 11 38 L 23.830078 38 L 23.830078 36 L 37.125 36 L 37.125 22 L 37.125 18.416016 L 37.125 14.474609 L 31.160156 14.474609 L 31.160156 9.0917969 L 11 9.0917969 z "
     id="rect5549" />
  <path
     id="p5"
     style="opacity:1;fill:none;stroke:#000000;stroke-width:1"
     d="M 31.5,3.5 V 14.5 H 41.5" />
</svg>
<!-- Lapo Calamandrei - Jakub Steiner -->


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg height="48px" width="48px">
<path id="p1" style="opacity:1;fill:#aaaaaa;stroke:#000000;stroke-width:1"
d="M 31.5,3.5 L 41.5,14.5 V 44.5 H 6.5 V 3.5 Z"/>
<path id="p5" style="opacity:1;fill:none;stroke:#000000;stroke-width:1"
d="M 31.5,3.5 V 14.5 H 41.5"/>
<path id="p2" style="opacity:1;fill:#555555;stroke:#000000;stroke-width:1"
d="M 24,15.2 L 14.2,24.9 L 23.9,34.7 L 33.6,25 Z"/>
</svg>
<!-- Lapo Calamandrei - Jakub Steiner -->


code:
title: Human Minimal
author: Paulo Silva
based on work from: Ulisse Perusin, Lapo Calamandrei, Jakub Steiner, Andreas Nilssen - based on iconset from UbuntuStudio 8.04
licence: Creative Commons - NonCommercial-ShareAlike - http://creativecommons.org/licenses/by-sa/2.0/
colour used: #F57900


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#F57900;stroke:none"
cx="24" cy="24" r="22.5"/>
<path id="1-3" style="fill:#555555;stroke:none"
d="M 10,28 H 20 V 38 H 28 V 28 H 38 V 20 H 28 V 10 H 20 V 20 H 10 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#F57900;stroke:none"
cx="24" cy="24" r="22.5"/>
<path id="1" style="fill:#555555;stroke:none"
d="M 10,28 H 38 V 20 H 10 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48" height="48"
   id="svg2"
   version="1.0"
   sodipodi:modified="true">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective124" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="0.14117647"
     showgrid="false"
     stroke="#555753"
     fill="#eeeeec"
     showguides="false"
     inkscape:showpageshadow="false">
  </sodipodi:namedview>

<!-- authors: Lapo Calamandrei, Jakub Steiner    -->
<!-- license: http://creativecommons.org/licenses/by-nc-sa/2.0/ -->

  <g
     inkscape:groupmode="layer"
     id="layer1"
     inkscape:label="Shadow" />
  <g
     inkscape:groupmode="layer"
     id="layer2"
     inkscape:label="Lavoro"
     style="display:inline">
    <path
       sodipodi:type="arc"
       style="opacity:0.3;color:#000000;fill:url(#radialGradient2801);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       id="path2791"
       sodipodi:cx="24"
       sodipodi:cy="41"
       sodipodi:rx="23.5"
       sodipodi:ry="7"
       d="M 47.5 41 A 23.5 7 0 1 1  0.5,41 A 23.5 7 0 1 1  47.5 41 z"
       transform="matrix(1.021277,0,0,0.785714,-0.510638,9.285744)" />
    <path
       sodipodi:nodetypes="czzc"
       id="path2418"
       d="M 35.483718,40.06603 C 26.272614,33.246246 46.280822,37.551644 44.370542,33.819063 C 42.460262,30.086482 24.465479,37.223191 24.575471,33.096078 C 24.685463,28.968965 33.612392,35.156174 30.668979,23.516315"
       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
    <path
       style="opacity:1;fill:#555555;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       d="M 16.898449,34.467959 L 16.079039,37.383537 L 31.920961,37.383522 L 31.101551,34.467959 L 16.898449,34.467959 z "
       id="path4055"
       sodipodi:nodetypes="ccccc" />
    <rect
       style="opacity:1;color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       id="rect1320"
       width="8.1946144"
       height="7.605176"
       x="19.902718"
       y="27.83441" />
    <rect
       style="opacity:1;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       id="rect1318"
       width="44.997997"
       height="30.000994"
       x="1.5012436"
       y="0.49900627"
       rx="0"
       ry="0" />
    <rect
       style="opacity:1;color:#000000;fill:#ff8833;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       id="rect2197"
       width="38.988369"
       height="20.008995"
       x="4.588387"
       y="3.3169942" />
    <path
       transform="matrix(1.051367,0,0,0.26046,-1.232791,35.13715)"
       d="M 47.5,41 A 23.5,7 0 1 1 0.5,41 A 23.5,7 0 1 1 47.5,41 z"
       sodipodi:ry="7"
       sodipodi:rx="23.5"
       sodipodi:cy="41"
       sodipodi:cx="24"
       id="path2620"
       style="opacity:0.5254902;fill:url(#radialGradient2644);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       sodipodi:type="arc" />
    <path
       sodipodi:nodetypes="ccccc"
       id="path2622"
       d="M 3.5,38.569542 L 44,38.569542 L 47.5,46.499998 L 0.5,46.499998 L 3.5,38.569542 z"
       style="fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
    <path
       sodipodi:nodetypes="ccccc"
       id="path2626"
       d="M 5.5,38.575251 L 42,38.575251 L 44,43.548157 L 4,43.548157 L 5.5,38.575251 z"
       style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none" />
    <path
       style="opacity:0.50561798;color:#000000;fill:url(#linearGradient3419);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       d="M 32.59375,38.0625 L 32.328125,37.671875 C 32.225594,37.285644 33.05134,36.882644 33.390625,37.46875 L 33.953125,38.09375 L 32.59375,38.0625 z "
       id="path3411"
       sodipodi:nodetypes="ccccc" />
  </g>
  <g
     inkscape:groupmode="layer"
     id="layer3"
     inkscape:label="finiture"
     style="display:inline" />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
   sodipodi:modified="true">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective350" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666"
     borderopacity="0.36078431"
     width="48px"
     height="48px"
     showgrid="false"
     showborder="true"
     borderlayer="true"
     showguides="false"
     inkscape:guide-bbox="true">
  </sodipodi:namedview>
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <cc:license
           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
        <dc:creator>
          <cc:Agent>
            <dc:title>Jakub Steiner, Lapo Calamandrei</dc:title>
          </cc:Agent>
        </dc:creator>
        <dc:contributor>
          <cc:Agent>
            <dc:title />
          </cc:Agent>
        </dc:contributor>
        <dc:title>Drive Harddisk</dc:title>
        <dc:subject>
          <rdf:Bag>
            <rdf:li>hdd</rdf:li>
            <rdf:li>drive</rdf:li>
            <rdf:li>hard</rdf:li>
            <rdf:li>fixed</rdf:li>
            <rdf:li>media</rdf:li>
          </rdf:Bag>
        </dc:subject>
      </cc:Work>
      <cc:License
         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
        <cc:permits
           rdf:resource="http://web.resource.org/cc/Reproduction" />
        <cc:permits
           rdf:resource="http://web.resource.org/cc/Distribution" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/Notice" />
        <cc:permits
           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/ShareAlike" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/SourceCode" />
      </cc:License>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Livello 1"
     inkscape:groupmode="layer"
     id="layer1"
     style="display:inline">
    <path
       style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.39999999999999991;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       d="M 44.43516,32.00351 C 44.43516,32.00351 44.362205,39.894727 44.362205,39.894727 L 3.4514052,39.894727 L 3.5649621,32.00351 C 3.5649621,32.00351 44.43516,32.00351 44.43516,32.00351 z"
       id="rect2010"
       sodipodi:nodetypes="ccccc" />
    <path
       style="fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;stroke-dasharray:none"
       d="M 38.298116,8.19618 L 44.495068,31.81319 C 44.495068,31.81319 3.4638928,31.81319 3.4638928,31.81319 L 9.8366976,8.155064 C 9.8366976,8.155064 38.298116,8.19618 38.298116,8.19618 z"
       id="rect1879"
       sodipodi:nodetypes="ccccc"
       inkscape:export-filename="/home/lapo/Desktop/uhm.png"
       inkscape:export-xdpi="90"
       inkscape:export-ydpi="90" />
    <rect
       style="opacity:1;fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
       id="rect5025"
       width="7.0826635"
       height="4.0820332"
       x="22.103863"
       y="34.021111"
       ry="0"
       rx="0" />
    <rect
       style="opacity:1;fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
       id="rect5027"
       width="9.1631956"
       height="4.0820332"
       x="31.274471"
       y="34.021915"
       ry="0"
       rx="0" />
  </g>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
   sodipodi:modified="true">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective3377" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     gridtolerance="10000"
     guidetolerance="10"
     objecttolerance="10"
     width="48px"
     height="48px"
     showgrid="false" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
    <path
       style="fill:#555555;overflow:visible;stroke:#000000;stroke-opacity:1;fill-opacity:1"
       d="M 2.821353,25.31999 C 2.8394857,29.52227 2.8584041,37.926729 2.8584041,37.926729 L 46.166053,37.926729 L 46.111675,25.31999"
       id="path3134"
       sodipodi:nodetypes="cccc" />
    <path
       style="fill:#aaaaaa;overflow:visible;stroke:#000000;stroke-opacity:1;fill-opacity:1"
       d="M 2.821353,25.31999 C 2.821353,25.31999 7.377482,5.4548205 7.377482,5.4548205 C 7.564837,5.4548205 41.413966,5.4548205 41.413966,5.4548205 L 46.111675,25.31999 L 2.821353,25.31999 z"
       id="path3148"
       sodipodi:nodetypes="ccccc" />
    <path
       style="fill:#aaaaaa;overflow:visible;fill-opacity:1;stroke:#000000;stroke-opacity:1"
       d="M 42.769002,32.196399 L 6.575451,32.196399 C 6.575451,32.196399 6.575451,28.758192 6.575451,28.758192 L 42.769002,28.758192 C 42.769002,28.758192 42.769002,32.196399 42.769002,32.196399 z"
       id="path3170"
       sodipodi:nodetypes="ccccc" />
    <path
       style="fill:#aaaaaa;stroke:#000000;stroke-width:1;stroke-opacity:1;overflow:visible;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
       d="M 42.54405,36.352348 L 38.141365,36.352348 C 38.141365,36.352348 38.141365,34.593638 38.141365,34.593638 L 42.54405,34.593638 C 42.54405,34.593638 42.54405,36.352348 42.54405,36.352348 z"
       id="path3181"
       sodipodi:nodetypes="ccccc" />
    <path
       id="path3040"
       d="M 8.7630762,29.236545 C 8.4984419,30.012431 8.3118884,30.826926 8.3118884,31.658205 C 8.3118874,37.605786 15.480792,42.366026 24.374174,42.366026 C 33.267555,42.366026 40.406382,37.605786 40.406382,31.658205 C 40.406382,30.830445 40.247734,30.009421 39.985273,29.236545 L 25.005837,29.236545 C 26.776723,29.465446 28.22431,30.412345 28.22431,31.658205 C 28.22431,33.068457 26.482914,34.225748 24.374174,34.225748 C 22.265433,34.225748 20.524038,33.068457 20.524038,31.658205 C 20.524039,30.412345 21.971625,29.465446 23.742511,29.236545 L 8.7630762,29.236545 z"
       style="fill:url(#linearGradient7085);fill-rule:nonzero;stroke:none;stroke-miterlimit:4" />
    <path
       sodipodi:nodetypes="cccccc"
       id="path3049"
       d="M 8.6126802,29.732548 C 8.4465911,30.35418 8.3118884,31.003516 8.3118884,31.658205 C 8.3118884,37.605786 15.480792,42.366026 24.374174,42.366026 C 33.267555,42.366026 40.406382,37.605786 40.406382,31.658205 C 40.406382,31.003516 40.271679,30.35418 40.10559,29.732548 L 8.6126802,29.732548 z"
       style="fill:#aaaaaa;fill-rule:nonzero;stroke:#000000;stroke-width:0.94798302999999995;stroke-miterlimit:4;stroke-opacity:1;fill-opacity:1" />
    <path
       sodipodi:nodetypes="ccccccccccc"
       id="path3051"
       d="M 17.021642,29.259857 C 16.277135,30.118795 15.746327,30.622353 15.746327,31.675771 C 15.746326,34.918375 19.702721,37.470362 24.438607,37.470362 C 29.287253,37.470361 33.130887,34.842966 33.130887,31.675771 C 33.130887,30.606878 32.566608,30.113724 31.822011,29.259857 L 26.646509,29.259857 C 28.261531,29.76723 29.170697,30.414725 29.170697,31.675771 C 29.170698,33.410187 27.032068,34.833498 24.438607,34.833498 C 21.845144,34.833498 19.706516,33.410187 19.706516,31.675771 C 19.706516,30.413994 20.591406,29.766834 22.207925,29.259857 L 17.021642,29.259857 z"
       style="opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4;fill:#555555;fill-opacity:1" />
  </g>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
   inkscape:output_extension="org.inkscape.output.svg.inkscape">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective48" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#151515"
     bordercolor="#666666"
     borderopacity="0.14117647"
     showgrid="false"
     stroke="#2e3436"
     fill="#2e3436"
     showguides="false"
     inkscape:guide-bbox="true"
     showborder="true"
     inkscape:showpageshadow="false">
  </sodipodi:namedview>
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title>Ubuntu Keyboard icon</dc:title>
        <dc:date>2006-03-02</dc:date>
        <dc:creator>
          <cc:Agent>
            <dc:title>Lapo Calamandrei</dc:title>
          </cc:Agent>
        </dc:creator>
        <cc:license
           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
        <dc:contributor>
          <cc:Agent>
            <dc:title>Jakub Steiner
</dc:title>
          </cc:Agent>
        </dc:contributor>
      </cc:Work>
      <cc:License
         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
        <cc:permits
           rdf:resource="http://web.resource.org/cc/Reproduction" />
        <cc:permits
           rdf:resource="http://web.resource.org/cc/Distribution" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/Notice" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/Attribution" />
        <cc:permits
           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/ShareAlike" />
      </cc:License>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:groupmode="layer"
     id="layer1"
     inkscape:label="Shadow" />
  <g
     inkscape:groupmode="layer"
     id="layer2"
     inkscape:label="Lavoro"
     style="display:inline" />
  <g
     inkscape:groupmode="layer"
     id="layer3"
     inkscape:label="finiture"
     style="display:inline">
    <path
       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       d="M 33.483718,25 C 24.272614,18.180216 44.280822,22.485614 42.370542,18.753033 C 40.460262,15.020452 22.465479,22.157161 22.575471,18.030048 C 22.685463,13.902935 31.612392,20.090144 28.668979,8.450285"
       id="path2418"
       sodipodi:nodetypes="czzc" />
    <g
       id="g2401"
       transform="translate(0,-14)">
      <path
         sodipodi:nodetypes="ccccc"
         id="rect4234"
         d="M 3.5,37.503512 L 44,37.503512 L 47.5,45.433968 L 0.5,45.433968 L 3.5,37.503512 z "
         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
      <path
         sodipodi:nodetypes="ccccc"
         id="rect4236"
         d="M 5.5,37.509221 L 42,37.509221 L 44,42.482127 L 4,42.482127 L 5.5,37.509221 z "
         style="color:#000000;fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999987999999995;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
    </g>
  </g>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
>

<!--
            <dc:title>Lapo Calamandrei</dc:title>
           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
-->

    <rect
       style="fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1.19236827000000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect3278"
       width="2.3254526"
       height="5.2453508"
       x="31.290934"
       y="0.58703005" />
    <rect
       style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:1.19236827000000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect2504"
       width="26.338982"
       height="38.904686"
       x="10.835815"
       y="5.3997045" />
    <rect
       y="7.9010429"
       x="13.248167"
       height="33.64436"
       width="21.762758"
       id="rect3276"
       style="fill:#ff8833;fill-opacity:1;stroke:#000000;stroke-width:1.19236827;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />

  <g
     inkscape:label="Livello 1"
     inkscape:groupmode="layer"
     id="layer1"
     style="display:inline">

    <g
       id="g7135"
       style="fill:#555753"
       transform="translate(0,1)" />
  </g>

</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="48"
   height="48"
   id="svg2"
   version="1.0"
   inkscape:output_extension="org.inkscape.output.svg.inkscape">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective135" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     showgrid="false"
     stroke="#eeeeec"
     fill="#d3d7cf"
     showguides="false"
     borderlayer="top"
     showborder="false">
  </sodipodi:namedview>
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title>Ubuntu Printer</dc:title>
        <dc:date>2006-03-09</dc:date>
        <dc:creator>
          <cc:Agent>
            <dc:title>Lapo Calamandrei</dc:title>
          </cc:Agent>
        </dc:creator>
        <cc:license
           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
        <dc:contributor>
          <cc:Agent>
            <dc:title />
          </cc:Agent>
        </dc:contributor>
      </cc:Work>
      <cc:License
         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
        <cc:permits
           rdf:resource="http://web.resource.org/cc/Reproduction" />
        <cc:permits
           rdf:resource="http://web.resource.org/cc/Distribution" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/Notice" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/Attribution" />
        <cc:permits
           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
        <cc:requires
           rdf:resource="http://web.resource.org/cc/ShareAlike" />
      </cc:License>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:groupmode="layer"
     id="layer1"
     inkscape:label="Shadow" />
  <g
     inkscape:groupmode="layer"
     id="layer5"
     inkscape:label="backpart">
    <rect
       style="opacity:1;fill:url(#linearGradient2356);fill-opacity:1;stroke:url(#linearGradient2372);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
       id="rect2315"
       width="33"
       height="19.5"
       x="7.5"
       y="8.5"
       rx="0.64146614"
       ry="0.64146614" />
    <rect
       style="opacity:0.41960784;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
       id="rect2321"
       width="31.045429"
       height="17.576796"
       x="8.484642"
       y="9.4494162"
       rx="0"
       ry="0" />
  </g>
  <g
     inkscape:groupmode="layer"
     id="layer2"
     inkscape:label="Lavoro"
     style="display:inline">
    <g
       id="g3304">
      <rect
         style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
         id="rect3284"
         width="33.36544"
         height="12.543369"
         x="7.2867718"
         y="7.9292245" />
      <rect
         style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
         id="rect3280"
         width="41.236046"
         height="5.7400637"
         x="3.3514681"
         y="36.059139" />
      <rect
         y="20.396954"
         x="2.7255139"
         height="16.049942"
         width="42.850273"
         id="rect3286"
         style="fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
      <rect
         y="1.4561203"
         x="11.320914"
         height="19.873634"
         width="25.115993"
         id="rect2508"
         style="fill:#ff8833;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
      <rect
         y="21.07567"
         x="10.28829"
         height="11.250478"
         width="27.000084"
         id="rect3282"
         style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
      <rect
         y="38.593559"
         x="7.1540046"
         height="7.0118022"
         width="33.449814"
         id="rect3288"
         style="fill:#aaaaaa;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
    </g>
    <g
       id="g2611"
       inkscape:label="Shadow"
       transform="translate(0,15.06603)" />
    <g
       id="g2613"
       inkscape:label="Lavoro"
       style="display:inline"
       transform="translate(0,15.06603)" />
  </g>
  <g
     inkscape:groupmode="layer"
     id="layer3"
     inkscape:label="finiture"
     style="display:inline" />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
   sodipodi:modified="true">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective3045" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     gridtolerance="10000"
     guidetolerance="10"
     objecttolerance="10"
     width="48px"
     height="48px"
     showgrid="false" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
    <path
       style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
       d="M 46.00967,6.43067 L 42.761683,6.43067 C 42.761683,6.43067 42.658008,1.229815 42.658008,1.229815 L 7.6993249,1.229815 C 7.6993249,1.229815 7.6002932,42.374355 7.6002932,42.374355 L 42.658008,42.374355 L 42.761683,21.339788 L 46.108702,21.339788 C 46.108702,21.339788 46.00967,6.43067 46.00967,6.43067 z"
       id="rect2448"
       sodipodi:nodetypes="ccccccccc" />
    <rect
       ry="0"
       rx="0"
       y="-37.24144"
       x="-0.088083059"
       height="29.517134"
       width="41.139141"
       id="rect3152"
       style="fill:#ff8833;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00756109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
       inkscape:transform-center-y="-14.537892"
       transform="matrix(0,1,-0.9850476,-0.1722823,0,0)"
       inkscape:transform-center-x="-2.5426398" />
    <g
       inkscape:export-ydpi="74.800003"
       inkscape:export-xdpi="74.800003"
       inkscape:export-filename="/home/jimmac/ximian_art/icons/nautilus/suse93/gnome-fs-directory.png"
       style="opacity:0.29183409;fill:url(#linearGradient3087);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-miterlimit:4"
       transform="matrix(0.5530399,0.5530399,-0.696717,0.7546294,-90.977286,-24.975375)"
       id="g217" />
    <g
       style="opacity:0.7036"
       transform="matrix(0.5313788,0.5313788,-0.5313788,0.5313788,-86.045922,-21.023648)"
       inkscape:label="pattern"
       id="g1516" />
    <g
       inkscape:export-ydpi="74.800003"
       inkscape:export-xdpi="74.800003"
       inkscape:export-filename="/home/jimmac/ximian_art/icons/nautilus/suse93/gnome-fs-directory.png"
       style="opacity:0.29183409;fill:url(#linearGradient3089);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-miterlimit:4"
       transform="matrix(0.5530399,0.5530399,-0.696717,0.7546294,-13.226795,23.904794)"
       id="g4727" />
    <path
       style="opacity:0.70360000000000000;fill:#555555;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3pt;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
       d="M 21.356108,15.362478 C 17.497327,14.60308 13.500528,16.803178 12.299458,20.445357 C 11.03932,24.266663 13.318772,28.326434 17.34526,29.432076 C 19.31918,29.9741 21.166379,29.630346 22.693497,28.9726 L 27.579374,34.126878 C 27.579374,34.126878 30.627123,31.508685 30.627123,31.508685 C 30.627123,31.508685 27.332081,28.162564 25.883698,26.42622 C 26.446037,25.744096 26.672177,25.336159 26.957676,24.470395 C 28.217812,20.649091 25.959212,16.626456 21.932726,15.520813 C 21.743984,15.468986 21.545885,15.399824 21.356108,15.362478 z M 20.83884,18.235783 C 20.896361,18.249382 20.963507,18.270015 21.020931,18.285783 C 23.471067,18.958574 24.811041,21.345106 24.044242,23.670388 C 23.277441,25.995671 20.716687,27.311091 18.266553,26.638302 C 15.816416,25.965513 14.476443,23.578981 15.243243,21.253699 C 15.992069,18.982916 18.442128,17.669232 20.83884,18.235783 z"
       id="path4729"
       inkscape:r_cx="true"
       inkscape:r_cy="true"
       sodipodi:nodetypes="cssccccssccssssc" />
  </g>
</svg>


code:
<?xml version="1.0" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.0">

<path id="a01"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 46,6 L 42,6 L 42,1 L 7,1 L 7,42 L 42,42 L 42,21 L 46,21 L 46,6 z"/>

<path id="a02"
style="fill:#ff8833;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 36,6 L 36,47 L 6,42 L 6,1 L 36,6 z"/>

</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
>
  <rect
     r_cy="true"
     r_cx="true"
     style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
     id="rect69"
     width="45.999985"
     height="2.7611761"
     x="2.0000174"
     y="21.738817" />
  <rect
     r_cy="true"
     r_cx="true"
     style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
     id="rect255"
     width="45.999985"
     height="0.6831097"
     x="2.0000174"
     y="23.811062" />
  <rect
     r_cy="true"
     r_cx="true"
     style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
     id="rect250"
     width="45.999985"
     height="0.70599616"
     x="2.0000174"
     y="21.499992" />
  <path
     type="arc"
     style="fill:#aaaaaa;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
     id="path5405"
     cx="66.013466"
     cy="26.231213"
     rx="2.171828"
     ry="2.171828"
     d="M 42.223182,23 C 42.223182,24.10457 41.327752,25 40.223183,25 C 39.118613,25 38.223183,24.10457 38.223183,23 C 38.223183,21.89543 39.118613,21.000001 40.223183,21.000001 C 41.327752,21.000001 42.223182,21.89543 42.223182,23 z"
     r_cx="true"
     r_cy="true" />
  <path
     d="M 38.804458,37.810967 C 38.805872,40.807667 32.663401,43.237268 25.085789,43.237268 C 17.508177,43.237268 11.365706,40.807667 11.367121,37.810967 C 11.365706,34.814267 17.508177,32.384666 25.085789,32.384666 C 32.663401,32.384666 38.805872,34.814267 38.804458,37.810967 z"
     ry="5.6568542"
     rx="14.344166"
     cy="38.706596"
     cx="23.536554"
     id="path2845"
     style="opacity:0.61714286;fill:url(#radialGradient1631);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
     type="arc" />
  <path
     nodetypes="ccccccc"
     id="rect1417"
     d="M 14.671581,7.2521344 L 18.142984,2.9999975 L 32.028594,2.9999975 L 35.499997,7.2521344 L 35.499997,40.441642 L 14.677408,40.441642 L 14.671581,7.2521344 z"
     style="fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
  <rect
     y="8.5510559"
     x="17.406624"
     height="4.1960144"
     width="15.31625"
     id="rect4040"
     style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
  <rect
     y="16.905727"
     x="17.448704"
     height="4.1959772"
     width="15.274171"
     id="rect4042"
     style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
  <rect
     y="25.971109"
     x="17.448704"
     height="11.143646"
     width="15.27419"
     id="rect4044"
     style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.0">

<rect id="rect2234"
style="fill:#ff8833;stroke:none;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
width="41.2" height="29.4" x="3.6" y="8.5"
/>

<path id="rect3726"
style="fill:#555555;stroke:none;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 4,13.1 L 44.6,13.1 C 44.5,11.8 44.5,10.4 44.5,9 L 4,9 C 3.7,10.3 4,12.4 4,13.1 z M 36.3,38 L 44.7,37.8 L 44.9,29.4 L 36.3,38 z M 11.8,38.3 L 3.3,38.2 L 3.2,29.8 L 11.8,38.34767 z"
/>

<rect id="rect3651"
style="fill:none;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
width="41.2" height="29.4" x="3.6" y="8.5"
/>

</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="48"
   height="48"
   id="svg2"
   version="1.0"
   sodipodi:modified="true">
  <defs
     id="defs4">
    <inkscape:perspective
       id="perspective93" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     gridtolerance="10000"
     guidetolerance="10"
     objecttolerance="10"
     width="48px"
     height="48px"
     showgrid="false" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
    <path
       style="opacity:1;color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.18385637000000021;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
       d="M 24.86578,3.7838231 C 15.515121,3.7838231 7.9341102,6.3802426 7.9341102,9.6054799 C 7.9341102,11.590887 9.7252289,35.789379 9.7252289,37.774786 C 9.7252289,41.000023 15.515121,43.627743 24.86578,43.627742 C 34.216439,43.627742 40.034318,41.000023 40.034316,37.774786 C 40.034316,35.934729 41.825436,11.445537 41.825435,9.6054799 C 41.825435,6.3802426 34.216439,3.7838231 24.86578,3.7838231 z "
       id="path3511"
       sodipodi:nodetypes="csssssc" />
    <path
       transform="matrix(0.956226,0,0,1.0694236,0.8692273,-3.6887581)"
       sodipodi:type="arc"
       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.17069519;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
       id="path3589"
       sodipodi:cx="25.102291"
       sodipodi:cy="10.169787"
       sodipodi:rx="18.915106"
       sodipodi:ry="5.833631"
       d="M 44.017397 10.169787 A 18.915106 5.833631 0 1 1  6.1871853,10.169787 A 18.915106 5.833631 0 1 1  44.017397 10.169787 z" />
    <path
       d="M 44.017397,10.169787 A 18.915106,5.833631 0 1 1 6.1871853,10.169787 A 18.915106,5.833631 0 1 1 44.017397,10.169787 z"
       sodipodi:ry="5.833631"
       sodipodi:rx="18.915106"
       sodipodi:cy="10.169787"
       sodipodi:cx="25.102291"
       id="path3547"
       style="opacity:1;fill:#ff8833;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.38446438000000005;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
       sodipodi:type="arc"
       transform="matrix(0.7573952,0,0,0.6992744,5.777304,2.8178321)" />
  </g>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.0">

<!-- authors: Lapo Calamandrei - http://creativecommons.org/licenses/by-sa/2.0/ -->

<rect id="rect2315"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="8.5" x="7.5" height="19.5" width="33"
/>

<rect id="rect2321"
style="fill:none;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="9.4" x="8.4" height="17.5" width="31"
/>

<rect id="rect3284"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
width="33.3" height="12.5" x="7.2" y="8"
/>

<rect id="rect3280"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
width="41.2" height="5.7" x="3.3" y="36"
/>

<rect id="rect3286"
style="fill:#aaaaaa;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="20.4" x="2.7" height="16" width="42.8"
/>

<rect id="rect2508"
style="fill:#ff8833;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="1.4" x="11.3" height="19.8" width="25.1"
/>

<rect id="rect3282"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="21" x="10.2" height="11.2" width="27"
/>

<rect id="rect3288"
style="fill:#aaaaaa;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="38.5" x="7.1" height="7" width="33.4"
/>

<path id="path2490"
style="fill:#ff8833;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 47.7,36.2 C 47.7,41.7 43.2,46.2 37.7,46.2 C 32.2,46.2 27.7,41.7 27.7,36.2 C 27.7,30.6 32.2,26.2 37.7,26.2 C 43.2,26.2 47.7,30.7 47.7,36.2 L 47.7,36.2 z"
/>

<rect id="rect3262"
style="fill:#000000;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
y="34.2" x="31.3" height="4.1" width="12.8"
/>

</svg>


code:
title: Bunsen Labs Minimal
author: Paulo Silva
based on work from: Ulisse Perusin, Lapo Calamandrei, Jakub Steiner, Andreas Nilssen - iconset from UbuntuStudio 8.04
licence: Creative Commons - NonCommercial-ShareAlike - http://creativecommons.org/licenses/by-sa/2.0/
colour used: #B2B2B2


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.1">
<path id="1" style="opacity:1;fill:#aaaaaa;stroke:#000000;stroke-width:1;stroke-miterlimit:4"
  d="m 24,8.5 -14.5,20 29,0 L 24,8.5 Z"/>
<path id="2" style="opacity:1;fill:#aaaaaa;stroke:#000000;stroke-width:1;stroke-miterlimit:4"
  d="m 8.5,32.5 0,5 31,0 0,-5 L 8.5,32.5 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<rect id="0" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" width="2.3" height="5.2" x="31.3" y="0.6" />
<rect id="1" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="26.3" height="38.9" x="10.8" y="5.4" />
<rect id="2" style="fill:#B2B2B2;opacity:1;stroke:#000000;stroke-width:1" y="7.9" x="13.2" height="33.6" width="21.8" />
<!-- Lapo Calamandrei -->
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<rect id="0" style="opacity:0.42;fill:none;opacity:1;stroke:#ffffff;stroke-width:1" width="31" height="17.6" x="8.5" y="9.5" rx="0" ry="0" />
<rect id="1" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="33.4" height="12.5" x="7.3" y="7.9" />
<rect id="2" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="41.2" height="5.7" x="3.4" y="36" />
<rect id="3" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" y="20.4" x="2.7" height="16" width="42.9" />
<rect id="4" style="fill:#B2B2B2;opacity:1;stroke:#000000;stroke-width:1" y="1.5" x="11.3" height="19.9" width="25.1" />
<rect id="5" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" y="21" x="10.3" height="11.3" width="27" />
<rect id="6" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" y="38.6" x="7.2" height="7" width="33.4"  />
</svg>


code:
<?xml version="1.0" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.0">

<path id="a01"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 46,6 L 42,6 L 42,1 L 7,1 L 7,42 L 42,42 L 42,21 L 46,21 L 46,6 z"/>

<path id="a02"
style="fill:#009bf9;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 36,6 L 36,47 L 6,42 L 6,1 L 36,6 z"/>

</svg>


code:
<?xml version="1.0" standalone="no"?>
<svg width="48" height="48" id="svg2" version="1.0">

<path id="a01"
style="fill:#555555;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 46,6 L 42,6 L 42,1 L 7,1 L 7,42 L 42,42 L 42,21 L 46,21 L 46,6 z"/>

<path id="a02"
style="fill:#77cc33;stroke:#000000;fill-rule:none;clip-rule:nonzero;stroke-miterlimit:4;fill-opacity:1;"
d="M 36,6 L 36,47 L 6,42 L 6,1 L 36,6 z"/>

</svg>


code:
title: Human Minimal
author: Paulo Silva
based on work from: Ulisse Perusin, Lapo Calamandrei, Jakub Steiner, Andreas Nilssen - based on iconset from UbuntuStudio 8.04
licence: Creative Commons - NonCommercial-ShareAlike - http://creativecommons.org/licenses/by-sa/2.0/
colour used: #F57900


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#77cc33;stroke:none"
cx="24" cy="24" r="22.5"/>
<path id="1-3" style="fill:#555555;stroke:none"
d="M 10,28 H 20 V 38 H 28 V 28 H 38 V 20 H 28 V 10 H 20 V 20 H 10 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48">
<circle id="0" style="fill:#77cc33;stroke:none"
cx="24" cy="24" r="22.5"/>
<path id="1" style="fill:#555555;stroke:none"
d="M 10,28 H 38 V 20 H 10 Z"/>
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48" height="48" >
<rect id="1" style="fill:#aaaaaa;opacity:1;stroke:#000000;stroke-width:1" width="2.3" height="5.2" x="31.3" y="0.6"/>
<rect id="2" style="fill:#555555;opacity:1;stroke:#000000;stroke-width:1" width="26.3" height="38.9" x="10.8" y="5.4"/>
<rect id="3" style="fill:#77cc33;opacity:1;stroke:#000000;stroke-width:1" height="33.6" width="21.8" x="13.2" y="7.9"/>
<!-- dc:title="Lapo Calamandrei" rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" -->
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="48"
   height="48"
   version="1.1"
   id="svg4"
   sodipodi:docname="emblem-favorite.svg"
   inkscape:version="0.92.1 r15371">
  <metadata
     id="metadata10">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs8" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="714"
     inkscape:window-height="736"
     id="namedview6"
     showgrid="false"
     inkscape:zoom="4.9166667"
     inkscape:cx="23.832253"
     inkscape:cy="22.779661"
     inkscape:window-x="0"
     inkscape:window-y="26"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4" />
  <path
     style="opacity:1;fill:#cc0000;stroke:none;stroke-width:1.44428229"
     d="M 13.336093,3.2363044 C 6.9135579,3.2355019 1.7298458,8.4414153 1.7056719,14.863905 C 1.6640828,25.913247 16.935752,36.988802 24.015882,44.951238 C 31.107974,36.969613 46.24273,26.755359 46.407901,14.863905 C 46.497101,8.4419885 41.200014,3.2355008 34.777478,3.2363044 C 30.090356,3.2373292 25.862017,6.0521447 24.052554,10.375912 C 22.244282,6.0549828 18.020136,3.2407382 13.336093,3.2363044 Z"
     id="1"
     inkscape:connector-curvature="0"
     sodipodi:nodetypes="cscsccc" />
</svg>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="48"
   height="48"
   version="1.1"
   id="svg4"
   sodipodi:docname="emblem-important.svg"
   inkscape:version="0.92.1 r15371">
  <metadata
     id="metadata10">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs8" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="714"
     inkscape:window-height="736"
     id="namedview6"
     showgrid="false"
     inkscape:zoom="4.9166667"
     inkscape:cx="24"
     inkscape:cy="24"
     inkscape:window-x="0"
     inkscape:window-y="26"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg4" />
  <circle
     id="0"
     style="fill:#CCAA99;stroke:none;opacity:1"
     cx="24"
     cy="24"
     r="22.5" />
  <path
     id="1"
     style="opacity:1;fill:#555555;stroke:none;stroke-width:0.69760346"
     d="M 19.767797,30.610169 V 6.6915254 H 28.108474 V 30.610169 Z"
     inkscape:connector-curvature="0"
     sodipodi:nodetypes="ccccc" />
  <path
     sodipodi:nodetypes="ccccc"
     inkscape:connector-curvature="0"
     d="M 19.767797,40.98305 V 34.555932 H 28.108474 V 40.98305 Z"
     style="opacity:1;fill:#555555;stroke:none;stroke-width:0.36161676"
     id="path4487" />
</svg>