diff --git a/merge/x11-base/.calculate_directory b/merge/x11-base/.calculate_directory
new file mode 100644
index 0000000..fe9987a
--- /dev/null
+++ b/merge/x11-base/.calculate_directory
@@ -0,0 +1 @@
+{% calculate append='skip' %}
diff --git a/merge/x11-base/xorg-server/.calculate_directory b/merge/x11-base/xorg-server/.calculate_directory
new file mode 100644
index 0000000..e6c2215
--- /dev/null
+++ b/merge/x11-base/xorg-server/.calculate_directory
@@ -0,0 +1 @@
+{% calculate name='etc', package='x11-base/xorg-server' %}
diff --git a/merge/x11-base/xorg-server/X11/xorg.conf.d/.calculate_directory b/merge/x11-base/xorg-server/X11/xorg.conf.d/.calculate_directory
new file mode 100644
index 0000000..dc80d18
--- /dev/null
+++ b/merge/x11-base/xorg-server/X11/xorg.conf.d/.calculate_directory
@@ -0,0 +1 @@
+{% calculate pkg() >= '1.9.0' %}
diff --git a/merge/x11-base/xorg-server/X11/xorg.conf.d/touchpad.conf b/merge/x11-base/xorg-server/X11/xorg.conf.d/touchpad.conf
new file mode 100644
index 0000000..3e69127
--- /dev/null
+++ b/merge/x11-base/xorg-server/X11/xorg.conf.d/touchpad.conf
@@ -0,0 +1,13 @@
+{% calculate comment='#' %}
+
+# touchpad
+Section "InputClass"
+ Identifier "Synaptics"
+ Driver "synaptics"
+ MatchIsTouchpad "1"
+ Option "Protocol" "event"
+ Option "TapButton1" "1"
+ Option "TapButton2" "2"
+ Option "TapButton3" "3"
+ Option "CircularScrolling" "1"
+EndSection
diff --git a/merge/x11-base/xorg-server/boot/.calculate_directory b/merge/x11-base/xorg-server/boot/.calculate_directory
new file mode 100644
index 0000000..3e91c01
--- /dev/null
+++ b/merge/x11-base/xorg-server/boot/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/etc/runlevels' %}
diff --git a/merge/x11-base/xorg-server/boot/xdm b/merge/x11-base/xorg-server/boot/xdm
new file mode 100644
index 0000000..a040f9a
--- /dev/null
+++ b/merge/x11-base/xorg-server/boot/xdm
@@ -0,0 +1 @@
+{% calculate append='link', source='/etc/init.d/xdm', pkg('x11-misc/sddm') or pkg('x11-misc/lightdm') or pkg('gnome-base/gdm') or pkg('kde-base/kdm') or pkg('x11-misc/slim') or pkg('media-tv/kodi') or install.cl.autologin and install.os.root.type != 'livecd' %}
diff --git a/merge/x11-base/xorg-server/boot/xdm.del b/merge/x11-base/xorg-server/boot/xdm.del
new file mode 100644
index 0000000..be887a3
--- /dev/null
+++ b/merge/x11-base/xorg-server/boot/xdm.del
@@ -0,0 +1 @@
+{% calculate append='remove', name='xdm', not (pkg('x11-misc/sddm') or pkg('x11-misc/lightdm') or pkg('gnome-base/gdm') or pkg('kde-base/kdm') or pkg('x11-misc/slim') or pkg('media-tv/kodi') or install.cl.autologin and install.os.root.type != 'livecd') %}
diff --git a/merge/x11-base/xorg-server/default/.calculate_directory b/merge/x11-base/xorg-server/default/.calculate_directory
new file mode 100644
index 0000000..3e91c01
--- /dev/null
+++ b/merge/x11-base/xorg-server/default/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/etc/runlevels' %}
diff --git a/merge/x11-base/xorg-server/default/xdm.del b/merge/x11-base/xorg-server/default/xdm.del
new file mode 100644
index 0000000..6b7fad5
--- /dev/null
+++ b/merge/x11-base/xorg-server/default/xdm.del
@@ -0,0 +1 @@
+{% calculate append='remove', name='xdm' %}
diff --git a/merge/x11-base/xorg-server/init.d/xdm b/merge/x11-base/xorg-server/init.d/xdm
new file mode 100644
index 0000000..b7a6137
--- /dev/null
+++ b/merge/x11-base/xorg-server/init.d/xdm
@@ -0,0 +1,6 @@
+{% calculate format='regex' %}
+ rm /etc/.noxdm
+ return 0
+ rm /etc/.noxdm
+ chvt 1
+ return 0
diff --git a/merge/x11-base/xorg-server/wallpapers/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/.calculate_directory
new file mode 100644
index 0000000..5ce555b
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/usr/share' %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-dm.remove/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/Calculate-dm.remove/.calculate_directory
new file mode 100644
index 0000000..03f5f4f
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-dm.remove/.calculate_directory
@@ -0,0 +1 @@
+{% calculate append='remove', path='/usr/share/wallpapers', name='Calculate-dm', not (custom.theme.dm.login.background and exists(custom.theme.dm.login.background)) %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-dm/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/Calculate-dm/.calculate_directory
new file mode 100644
index 0000000..cc9fe66
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-dm/.calculate_directory
@@ -0,0 +1 @@
+{% calculate custom.theme.dm.login.background and exists(custom.theme.dm.login.background) %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-dm/images b/merge/x11-base/xorg-server/wallpapers/Calculate-dm/images
new file mode 100644
index 0000000..cd66a77
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-dm/images
@@ -0,0 +1 @@
+{% calculate format='backgrounds', path='/usr/share/wallpapers/Calculate-dm/contents/images', name='', source=custom.theme.dm.login.background, convert='jpg', stretch %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-dm/metadata.desktop b/merge/x11-base/xorg-server/wallpapers/Calculate-dm/metadata.desktop
new file mode 100644
index 0000000..68cde3f
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-dm/metadata.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Calculate Display Manager
+Name[ru]=Calculate Display Manager
+
+X-KDE-PluginInfo-Name=Calculate_Linux
+X-KDE-PluginInfo-Author=Mir Calculate
+X-KDE-PluginInfo-Email=support@calculate.ru
+X-KDE-PluginInfo-License=LGPLv3
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-splash.remove/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/Calculate-splash.remove/.calculate_directory
new file mode 100644
index 0000000..ae33fc0
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-splash.remove/.calculate_directory
@@ -0,0 +1 @@
+{% calculate append='remove', path='/usr/share/wallpapers', name='Calculate-splash', not (custom.theme.dm.splash.background and exists(custom.theme.dm.splash.background)) %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-splash/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/Calculate-splash/.calculate_directory
new file mode 100644
index 0000000..fa44753
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-splash/.calculate_directory
@@ -0,0 +1 @@
+{% calculate custom.theme.dm.splash.background and exists(custom.theme.dm.splash.background) %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-splash/images b/merge/x11-base/xorg-server/wallpapers/Calculate-splash/images
new file mode 100644
index 0000000..be8d38a
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-splash/images
@@ -0,0 +1 @@
+{% calculate format='backgrounds', path='/usr/share/wallpapers/Calculate-splash/contents/images', name='', source=custom.theme.dm.splash.background, convert='jpg', stretch %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate-splash/metadata.desktop b/merge/x11-base/xorg-server/wallpapers/Calculate-splash/metadata.desktop
new file mode 100644
index 0000000..d8943ff
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate-splash/metadata.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Calculate Splash Login
+Name[ru]=Calculate Splash Login
+
+X-KDE-PluginInfo-Name=Calculate_Linux
+X-KDE-PluginInfo-Author=Mir Calculate
+X-KDE-PluginInfo-Email=support@calculate.ru
+X-KDE-PluginInfo-License=LGPLv3
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate_Linux.remove/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux.remove/.calculate_directory
new file mode 100644
index 0000000..c11c6f8
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux.remove/.calculate_directory
@@ -0,0 +1 @@
+{% calculate append='remove', path='/usr/share/wallpapers', name='Calculate_Linux', not (custom.theme.profile.background and exists(custom.theme.profile.background)) %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/.calculate_directory b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/.calculate_directory
new file mode 100644
index 0000000..24d8961
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/.calculate_directory
@@ -0,0 +1 @@
+{% calculate custom.theme.profile.background and exists(custom.theme.profile.background) %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/images b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/images
new file mode 100644
index 0000000..771ab81
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/images
@@ -0,0 +1 @@
+{% calculate format='backgrounds', path='/usr/share/wallpapers/Calculate_Linux/contents/images', name='', source=custom.theme.profile.background, convert='jpg', stretch %}
diff --git a/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/metadata.desktop b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/metadata.desktop
new file mode 100644
index 0000000..f594cf4
--- /dev/null
+++ b/merge/x11-base/xorg-server/wallpapers/Calculate_Linux/metadata.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Calculate Linux
+Name[ru]=Calculate Linux
+
+X-KDE-PluginInfo-Name=Calculate_Linux
+X-KDE-PluginInfo-Author=Mir Calculate
+X-KDE-PluginInfo-Email=support@calculate.ru
+X-KDE-PluginInfo-License=LGPLv3