Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/profiles
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 /profiles
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.
Diffstat (limited to 'profiles')
-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')