Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Hvornum <anton.feeds+github@gmail.com>2020-09-30 12:31:47 +0000
committerAnton Hvornum <anton.feeds+github@gmail.com>2020-09-30 12:31:47 +0000
commit534679e88f0b9db9d2550de73197f521494a3274 (patch)
tree90cc368ce9d7f576f5475f9a2a4e96b83de9d63e
parent7f7cb6b89b38f32beb411e112001e3230aa972ed (diff)
Added gnome as a profile (and application for application specific steps). Also tweaked xorg to not be so intrusive when used for anything other than awesome WM. Tweaked awesome WM to accomodate this change.
-rw-r--r--profiles/applications/awesome.py12
-rw-r--r--profiles/applications/gnome.py4
-rw-r--r--profiles/awesome.py34
-rw-r--r--profiles/gnome.py35
-rw-r--r--profiles/xorg.py8
5 files changed, 80 insertions, 13 deletions
diff --git a/profiles/applications/awesome.py b/profiles/applications/awesome.py
index d81f6283..72945275 100644
--- a/profiles/applications/awesome.py
+++ b/profiles/applications/awesome.py
@@ -1,6 +1,6 @@
import archinstall
-installation.add_additional_packages("awesome xorg-server xorg-xrandr xorg-xinit xterm feh slock xscreensaver terminus-font-otb gnu-free-fonts ttf-liberation xsel")
+installation.add_additional_packages("awesome xorg-xrandr xterm feh slock terminus-font-otb gnu-free-fonts ttf-liberation xsel")
with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'r') as xinitrc:
xinitrc_data = xinitrc.read()
@@ -11,7 +11,6 @@ for line in xinitrc_data.split('\n'):
if 'xterm' in line: xinitrc_data = xinitrc_data.replace(line, f"# {line}")
xinitrc_data += '\n'
-xinitrc_data += 'xscreensaver -no-splash &\n'
xinitrc_data += 'exec awesome\n'
with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'w') as xinitrc:
@@ -21,13 +20,6 @@ with open(f'{installation.mountpoint}/etc/xdg/awesome/rc.lua', 'r') as awesome_r
awesome = awesome_rc_lua.read()
awesome = awesome.replace('xterm', 'xterm -ls -xrm \\"XTerm*selectToClipboard: true\\"')
-#awesome = awesome.replace('{ "open terminal", terminal, ','{ "Chromium", "chromium" },\n "open terminal", terminal, ')
-#awesome = awesome.replace('{ "open terminal", terminal, ', '{ "File handler", "nemo" },\n "open terminal", terminal, ')
-awesome = awesome.replace('\nglobalkeys = gears.table.join(', 'globalkeys = gears.table.join(\n awful.key({ modkey, }, \"l\", function() awful.spawn(\"xscreensaver-command -lock &\") end,\n')
-# "awk -i inplace -v RS='' '{gsub(/awful.key\\({ modkey,.*?}, \"Tab\",.*?\"client\"}\\),/, \"awful.key({ modkey, }, \"Tab\",\n function ()\n awful.client.focus.byidx(-1)\n if client.focus then\n client.focus:raise()\n end\n end),\n awful.key({ modkey, \"Shift\" }, \"Tab\",\n function ()\n awful.client.focus.byidx(1)\n if client.focus then\n client.focus.raise()\n end\n end),\"); print}' {installation.mountpoint}/etc/xdg/awesome/rc.lua" : {"no-chroot" : true},
with open(f'{installation.mountpoint}/etc/xdg/awesome/rc.lua', 'w') as awesome_rc_lua:
- awesome_rc_lua.write(awesome)
-
-installation.arch_chroot('gsettings set org.nemo.desktop show-desktop-icons false')
-installation.arch_chroot('xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search') \ No newline at end of file
+ awesome_rc_lua.write(awesome) \ No newline at end of file
diff --git a/profiles/applications/gnome.py b/profiles/applications/gnome.py
new file mode 100644
index 00000000..1f2a20a1
--- /dev/null
+++ b/profiles/applications/gnome.py
@@ -0,0 +1,4 @@
+import archinstall
+
+installation.add_additional_packages("gnome gnome-extra gdm") # We'll create a gnome-minimal later, but for now, we'll avoid issues by giving more than we need.
+# Note: gdm should be part of the gnome group, but adding it here for clarity \ No newline at end of file
diff --git a/profiles/awesome.py b/profiles/awesome.py
index 9b831394..7e8c759d 100644
--- a/profiles/awesome.py
+++ b/profiles/awesome.py
@@ -10,6 +10,7 @@ def _prep_function(*args, **kwargs):
for more input before any other installer steps start.
"""
+ # Awesome WM requires that xorg is installed
profile = archinstall.Profile(None, 'xorg')
with profile.load_instructions(namespace='xorg.py') as imported:
if hasattr(imported, '_prep_function'):
@@ -24,6 +25,11 @@ if __name__ == 'awesome':
# Install dependency profiles
installation.install_profile('xorg')
+ # Install the application awesome from the template under /applications/
+ awesome = archinstall.Application(installation, 'awesome')
+ awesome.install()
+
+ # Then setup and configure the desktop environment: awesome
arguments = {
'keyboard_layout' : 'sv-latin1',
"editor" : "nano",
@@ -45,5 +51,29 @@ if __name__ == 'awesome':
vconsole.write('KEYMAP={keyboard_layout}\n'.format(**arguments))
vconsole.write('FONT=lat9w-16\n')
- awesome = archinstall.Application(installation, 'awesome')
- awesome.install() \ No newline at end of file
+
+ with open(f'{installation.mountpoint}/etc/xdg/awesome/rc.lua', 'r') as awesome_rc_lua:
+ awesome_lua = awesome_rc_lua.read()
+
+ # Insert slock as a shortcut on Modkey+l (window+l)
+ awesome_lua = awesome_lua.replace('\nglobalkeys = gears.table.join(', 'globalkeys = gears.table.join(\n awful.key({ modkey, }, \"l\", function() awful.spawn(\"slock &\") end,\n')
+
+ # Insert some useful applications:
+ #awesome = awesome.replace('{ "open terminal", terminal, ','{ "Chromium", "chromium" },\n "open terminal", terminal, ')
+ #awesome = awesome.replace('{ "open terminal", terminal, ', '{ "File handler", "nemo" },\n "open terminal", terminal, ')
+
+ # Insert "normal" alt-tab via Modkey+Tab that most new users are used to
+ # "awk -i inplace -v RS='' '{gsub(/awful.key\\({ modkey,.*?}, \"Tab\",.*?\"client\"}\\),/, \"awful.key({ modkey, }, \"Tab\",\n function ()\n awful.client.focus.byidx(-1)\n if client.focus then\n client.focus:raise()\n end\n end),\n awful.key({ modkey, \"Shift\" }, \"Tab\",\n function ()\n awful.client.focus.byidx(1)\n if client.focus then\n client.focus.raise()\n end\n end),\"); print}' {installation.mountpoint}/etc/xdg/awesome/rc.lua" : {"no-chroot" : true},
+
+
+# Add changes here to the awesome's rc.lua
+# Alternatively, create a custom config under installation.mountpoint/usr/share/awesome/themes
+
+
+
+ with open(f'{installation.mountpoint}/etc/xdg/awesome/rc.lua', 'w') as awesome_rc_lua:
+ awesome_rc_lua.write(awesome_lua)
+
+ # Remove some interfering nemo settings
+ installation.arch_chroot('gsettings set org.nemo.desktop show-desktop-icons false')
+ installation.arch_chroot('xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search') \ No newline at end of file
diff --git a/profiles/gnome.py b/profiles/gnome.py
new file mode 100644
index 00000000..0481eded
--- /dev/null
+++ b/profiles/gnome.py
@@ -0,0 +1,35 @@
+# A desktop environemtn using "Awesome" window manager.
+
+import archinstall
+
+def _prep_function(*args, **kwargs):
+ """
+ Magic function called by the importing installer
+ before continuing any further. It also avoids executing any
+ other code in this stage. So it's a safe way to ask the user
+ for more input before any other installer steps start.
+ """
+
+ # Gnome optionally supports xorg, we'll install it since it also
+ # includes graphic driver setups (this might change in the future)
+ profile = archinstall.Profile(None, 'xorg')
+ with profile.load_instructions(namespace='xorg.py') as imported:
+ if hasattr(imported, '_prep_function'):
+ return imported._prep_function()
+ else:
+ print('Deprecated (??): xorg profile has no _prep_function() anymore')
+
+# Ensures that this code only gets executed if executed
+# through importlib.util.spec_from_file_location("awesome", "/somewhere/awesome.py")
+# or through conventional import awesome
+if __name__ == 'awesome':
+ # Install dependency profiles
+ installation.install_profile('xorg')
+
+ # Install the application gnome from the template under /applications/
+ gnome = archinstall.Application(installation, 'gnome')
+ gnome.install()
+
+ installation.enable_service('gdm') # Gnome Display Manager
+ # We could also start it via xinitrc since we do have Xorg,
+ # but for gnome that's deprecated and wayland is preferred. \ No newline at end of file
diff --git a/profiles/xorg.py b/profiles/xorg.py
index 38492c5c..1cba7a81 100644
--- a/profiles/xorg.py
+++ b/profiles/xorg.py
@@ -93,13 +93,19 @@ def _prep_function(*args, **kwargs):
__builtins__['_gfx_driver_packages'] = select_driver(AVAILABLE_DRIVERS)
+ # TODO: Add language section and/or merge it with the locale selected
+ # earlier in for instance guided.py installer.
+
return True
# Ensures that this code only gets executed if executed
# through importlib.util.spec_from_file_location("xorg", "/somewhere/xorg.py")
# or through conventional import xorg
if __name__ == 'xorg':
- installation.add_additional_packages("xorg-server xorg-xinit")
+ try:
+ installation.add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}")
+ except:
+ installation.add_additional_packages(f"xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install
# with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'a') as X11:
# X11.write('setxkbmap se\n')