regolith-linux / regolith-desktop

Meta package for the Regolith Desktop Environment
1.5k stars 31 forks source link

Add support to Arch Linux (and derivatives) through AUR package #169

Closed Bonfi97 closed 3 years ago

Bonfi97 commented 4 years ago

Right now this desktop environment supports only Ubuntu-based distros, that's really limiting. A native support to other distributions would be really appreciated. In this direction, Arch would probably be the right distribution to start with, since Arch has probably the largest user base that would use a tiling windows manager.

kgilmer commented 4 years ago

Hi @Bonfi97 , thanks for your feedback :smile: . I agree it would be great to have Regolith available in Arch as well as other distributions. I rely heavily on the Arch wiki for Linux internals. I do not know anything about packaging AURs at this point. If anyone is interested in helping with this effort I'd be happy to provide support.

Bonfi97 commented 4 years ago

Here you can find the Arch wiki page about how make a package for Arch, and here you can find the good practices about the variables to define in a PKGBUILD

gardotd426 commented 4 years ago

You don't even have to provide a PKGBUILD, just don't have the compilation from source be specific to debian-based distros. The only difference between compiling from source in Arch and Debian would be the use of makepkg vs dpkg

kgilmer commented 4 years ago

Thanks for the tips @gardotd426 ! :smile: The main blocker for support of Regolith on Arch (or any other distro other than Ubuntu) is lack of time. When users report issues I spend the time to try and troubleshoot and root-cause. For every distro I add, more time is required to learn the ins and outs of how that distro works, what expectations are, as well as testing any new features or fixes on each distro. Right now, Regolith supports 3 versions of Ubuntu. So, we must test each change against these 3 versions. Thankfully, most packages are uniform and cross-version regressions are rare. But adding more distros will require more time for testing. At this point, I divide my time between troubleshooting user issues and general bug fixes and development. I fear that by supporting more distros, the ratio of time for support will overwhelm me and others and forward progress will become unacceptably slow. Regarding the mechanics of packaging, I'm sure you are right in that it's probably pretty easy.

So, in order to get Regolith onto Arch, I would kindly ask for a volunteer with sufficient technical competency to take primary responsibility for testing and user support. If someone steps forward I am happy to help with packaging, initial testing, troubleshooting, etc..

ghost commented 4 years ago

Here is an article that might be helpful to anyone who would like to maintain the relevant Arch AUR packages:

https://disconnected.systems/blog/archlinux-meta-packages/

Another source is BlackArch Linux that is based on Arch and makes heavy use of Arch AUR for installation.

duckdalbe commented 4 years ago

@kgilmer Thank your for building and maintaining this! It looks great! 👍

I feel this is a little of a chicken and egg problem: I'd really like to try regolith because I think I'd like and use it. And if I do I could imagine to help maintaining a little, or give support. But as long as I can't use it, that won't happen.

Did anyone start to work on "porting" it, yet? Maybe as an unofficial fork that strongly declares that users shall not ask for support "upstream" for the time being? I'd join that effort and would try to help building it up!

Strykar commented 4 years ago

I feel this is a little of a chicken and egg problem

It's more complex than that and by the looks of it a non-trivial task to port to Arch.

As suggested here, install and setup i3-gaps to use Regolith's config. See https://zork.net/~st/jottings/gnome-i3.html

gardotd426 commented 4 years ago

That wouldn't be the same, as regolith has tweaked versions of packages that you don't get by just editing configs.

But actually it's wouldn't be hard at all, if we had a little help.

All we need is easy access to download .deb packages for all the components used.

.deb packages are literally just ar archives, and within them is just a tarball that when extracted, contains all the files for the package. Just like a pkg.tar.xz or pkg.tar.zst tarball used for Arch Linux packages.

Actually, numerous (honestly, probably the majority) of packages built from the AUR are literally just using .deb packages. Spotify, blender, Google Chrome, honestly the majority of AUR packages just use .debs.

So, if given a list of the necessary .deb packages and where to download them from, it wouldn't be that difficult to make a PKGBUILD, if not for everything, then for each component individually. And the packages that aren't tweaked at all, they can just be added to the DEPENDS array in the PKGBUILD. For packages like Compton, arc-icon-theme, etc.

gardotd426 commented 4 years ago

I mean I guess I could just download the packages from the launchpad.net page, but I'm not sure which packages are necessary just for the desktop environment, or what. Worse comes to worst I could just install an *buntu distro in a VM or on an extra partition and check what gets installed with regolith-desktop or whatever the DE package is called, but it would be a lot easier if @kgilmer could help me out.

gardotd426 commented 4 years ago

Yeah, I'm downloading the .deb packages from launchpad, I'm gonna see first if I can build myself an RegolArch or whatever you want to call it, and if all is successful I'll go ahead and package the necessary packages (so far looks like i3xrocks, rofication, regolith-i3-gaps-config, regolith-i3xrocks-config, and a few more packages are going to be needed from the PPA, and most everything else can be installed as dependencies from the official repos or the AUR. I'll probably use picom instead of compton, as picom allows blur and compton is pretty deprecated, but yeah, @kgilmer if maybe you could help me out and let me know which packages from the PPA have been customized at all (even if it's just custom configs), that'd be awesome.

Strykar commented 4 years ago

I'm gonna see first if I can build myself an RegolArch or whatever you want to call it

Quoting @naclander from https://github.com/regolith-linux/regolith-desktop/issues/248

So anyway, I think an Arch packager should start by first creating AUR packages for all dependant forked packages ( i3xrocks and friends ), and then a package that would contain the regolith desktop files and configs.

gardotd426 commented 4 years ago

@Strykar that's irrelevant. That quote is in the context of JUST the AUR building process. Not whether you should test it out first. I'm gonna do it this way.

kgilmer commented 4 years ago

Hello Arch guys! I will do my best to help you. If something is unclear or lacking in detail please let me know and I'll do my best to make it better.

Overview

Regarding Regolith and Debian packaging, there are few places where a "feature" of Regolith is based on a feature of the packaging system. I mention these because they may require some consideration when porting. I know nothing of AUR packaging. They are:

Conventions

Packages

The following packages are required for the DE to function:

regolith-compositor-[none]
regolith-desktop (meta package, ships a single file which is the major version)
regolith-ftue (ships some shell scripts to run some things upon first session login)
regolith-gnome-flashback (A fork of i3-gnome-flashback that initializes the i3-gnome session.  this is the "heart" of the regolith DE if there is such a thing)
regolith-i3-gaps-config
regolith-i3xrocks-config
regolith-look-lascaille (Default Xresource style definitions for Regolith 1.4)
regolith-rofi-config
regolith-rofication (A rewrite of rofication for notifications)
regolith-styles (General style definitions, from which regolith-look-lascaille integrates with)

Given that I know nothing of Arch AUR, if I was to take on this task, the first thing I would do would be to get https://github.com/deuill/i3-gnome-flashback working (already Arch supported looks like) and then incrementally add Rofi, Styles, i3xrocks, etc..

kgilmer commented 4 years ago

Another note is that I was learning Debian packaging as I was building Regolith. So, there are some decisions I made about how things should be packaged that are probably unusual. In this case, there is no magic cleverness of my own, just blundering forth :smile:

gardotd426 commented 4 years ago

Awesome. Yeah, there are a good number of instances where the regular Arch packages can be used. Like I said, the good thing about .deb packages is that they can be installed on Arch systems quite easily, and most AUR packages that aren't compiling from source actually use .debs. It's just a matter of extracting with ar, then extracting the data.tar.xz tarball and then the AUR build system knows to take the output files and package them in a .pkg.tar.xz package that pacman is able to install.

With the compositor issue, I'm just gonna take a look at the files from the regolith-compositor-* packages and see if it's anything that needs modifying, and if so, I'll go from there.

Like I said, I plan to try and install everything myself before I bother pushing anything to the AUR, just to make sure it goes as smoothly as possible. If it comes down to it I/we could just make a couple different meta packages for each of the possible setups, like regolith-desktop-compton/regolith-desktop-no-compositor or regolith-desktop-gaps and regolith-desktop-gaps-rounded so people can just install whichever they want

gardotd426 commented 4 years ago

@kgilmer so I'm in the process of building a meta-package for everything needed for what would basically amount to "Regolith Desktop Environment." But I'm noticing that there's only a gnome-flashback package in your .debs on launchpad, is there a regolith custom version of gnome? Or just gnome-flashback? What gets installed from gnome OOTB? Is anything required from gnome to get the full functionality? I'm seeing a complete lack of gnome packages in the repo outside of gnome-flashback and GDM but there's no way to check dependencies on launchpad.

gardotd426 commented 4 years ago

Wait I'm rereading what you said earlier, you use classic gnome for your hybrid then, I assume. If I'm wrong, please correct me.

gardotd426 commented 4 years ago

And I am not going to use the AUR i3-gnome-flashback version, because as you said, you've forked it and I don't want anything missing, so I plan to use regolith's i3-gnome-flashback.

kgilmer commented 4 years ago

Hi @gardotd426 , yep gnome-flashback is kind of a classic gnome but uses 3.x APIs to main compatibility with gnome software that does not require gnome-shell to operate. It pulls in various other gnome dependencies, as you can see here: https://packages.ubuntu.com/bionic/gnome-flashback This is a stock package, so if Arch already hosts this package which I expect it does, you should be fine to just add it as a dependency to your metapackage.

Regarding i3-gnome-flashback, yes, use regolith-gnome-flashback instead. And, just this morning I completed dev on migrating to using gsettings overrides and removed a bit of ugly hackery. So, you've dodged that bullet. :) A new package comes out of that effort though: regolith-default-settings which ships a dconf/gsettings override file for default Regolith DE settings.

Overall I'm going through all of our packages to clean up stale branches and fix all the linter warnings I disregarded in the past. You can see the status of that effort here: https://github.com/regolith-linux/regolith-desktop/issues/434

gardotd426 commented 4 years ago

Good lord, so.... many.... packages.....

I know I don't need most of them in order to get a "functional" system, but it's bad practice to provide an AUR package (especially for a full desktop environment) and not provide everything required to get the INTENDED experience, so it's like 50-something packages (when you count all the i3xrocks widgets and new regolith-styles packages).

I'm about, maybe halfway done to getting a prototype PKGBUILD finished, I used the amdgpu-pro-installer meta package PKGBUILD as a template, because it's a fantastic template for this very thing, with really useful scripts built-in to it already, plus it also was downloading and installing .deb packages, it's basically the perfect template for something like this.

So far I've finished the i3 subpackages, the i3xrocks ones, and a couple of the standalone ones that didn't fit nicely into any other package (e.g. xrescat0, but I'd already tested the template using just the first couple, and it does work. I mean, I don't know about working on the system it gets installed on yet, I need the full set of packages to test that, but the package does successfully build as intended, and everything should work as long as I remember the correct dependencies for everything that uses already-existing Arch/AUR packages.

That reminds me, what's the license for all your stuff? There's not one posted on this repo (which doesn't host any of the regolith stuff anyway, really), and I couldn't find one on launchpad (and am too tired to go digging around in the .debs right now).

kgilmer commented 4 years ago

There is no global license, each package has it's own. Generally things are GPL-2+ or MIT, if there isn't prior work from which the license was carried. But yeah, as you hint at the licenense data is defined in the debian/copyright files of each package.

Regarding a minimal set of packages, you could get away with just regolith-i3xrocks-config and i3xrocks-time (in regolith-i3xrocks-config) and regolith-styles and regolith-look-cahuella from regolith-styles. Those are the two big source packages that provide several binary packages.

Sounds like things are progressing!

gardotd426 commented 4 years ago

@kgilmer, okay so I've finished, and successfully installed everything in my test environment (through arch-chroot), but I haven't yet rebooted and booted into it to test it's functionality, because I'm finishing the loose ends, which brings me to my question. regolith-session vs regolith-session-init.

/usr/share/xsessions/regolith.desktop has an "Exec=" of "regolith-session" (/usr/bin/regolith-session).

But...

/usr/share/applications/regolith.desktop has an "Exec=" of "regolith-session-init".

The problem/question is that "regolith-session-INIT" seems to be the script with all the regolith functionality, whereas "regolith-session" just runs gnome-flashback with a couple flags.

Is this where your fork of gnome-flashback comes into play? Because otherwise I'm having trouble understanding when "regolith-session-init" would be called, and it seems necessary for it to be called to actually get the functioning desktop. Is there something in your fork of gnome-flashback that calls "regolith-session-init"? Because otherwise, I don't understand where it would get called from the display manager since nothing in /usr/share/xsessions leads to it.

On Fri, Jun 5, 2020 at 10:23 AM Ken Gilmer notifications@github.com wrote:

There is no global license, each package has it's own. Generally things are GPL-2+ or MIT, if there isn't prior work from which the license was carried. But yeah, as you hint at the licenense data is defined in the debian/copyright files of each package.

Regarding a minimal set of packages, you could get away with just regolith-i3xrocks-config and i3xrocks-time (in regolith-i3xrocks-config) and regolith-styles and regolith-look-cahuella from regolith-styles. Those are the two big source packages that provide several binary packages.

Sounds like things are progressing!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/regolith-linux/regolith-desktop/issues/169#issuecomment-639527814, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM5Y33ZTZSG32AZUC3Y7CTTRVD5VBANCNFSM4JJVN7OQ .

gardotd426 commented 4 years ago

Okay so yeah, big big problems.

When I log in choosing the "Regolith" option in GDM, it launches, but I get a GNOME-looking dialog all across my main center monitor saying there's an error and I have to log out.

I did some digging, and I've noticed that all three regolith-gnome-flashback packages I could find on launchpad have different files within them. Some of them refer to /usr/bin/i3-gnome-flashback, some don't, and I know that's on purpose, but obviously that means that one of them (apparently the one I went with, the newest one, 2.6.2 or something) incompatible (which I guess might be why it's in experimental).

To keep me from losing my mind and having to delve into just an unreal amount of .debs and their files within in order to try and suss out what I need, could you maybe just tell me the package versions I need for just a FUNCTIONAL system, and I can go from there? I suppose I should have just done that from the beginning, but I was unaware that there had been major revisions to the way the xsessions .desktop and init files worked and interacted with one another.

Even if you just want to give me a general repository (out of stable, release, unstable, and experimenal) to use, that would be fine, because like I said I already have a functioning PKGBUILD all I'd have to do is change the package versions which wouldn't take long.

It's just that the way the repos are named is a bit weird. Basically, for compatibility reasons, I just need to know which one Regolith 20.04 (or Ubuntu 20.04 for adding regolith to a vanilla Ubuntu install) uses. Would that be Stable, Unstable, or Release?

gardotd426 commented 4 years ago

Well I answered that last question, looks like it's Release (Focal).

gardotd426 commented 4 years ago

YOOOOOOOOOOOOO

regolith

That, my friends, is Regolith DE running on Arch Linux.

I finally figured out the issue, you were using gnome-session-bin, the minimal gnome-session, which isn't available on Arch, and regolith-gnome-flashback is incompatible with the regular gnome-session package. So I just added gnome-session-bin and gnome-session-common to the PKGBUILD and voila!

There's only one problem I've found so far. Everything works, except rofi stuff.

If I manually type rofi -show run in the terminal it pops up, with the regolith theme and everything.

But, none of the other rofi stuff, including rofication, will work, and I get an error when trying to launch from the terminal:

rofication-status:

rofication-status
Traceback (most recent call last):
  File "/usr/bin/rofication-status", line 6, in <module>
    from rofication import RoficationGui, RoficationClient, resources, Resource
ModuleNotFoundError: No module named 'rofication'

rofication-dameon:

Traceback (most recent call last):
  File "/usr/bin/rofication-daemon", line 3, in <module>
    from rofication import RoficationServer, NotificationQueue, RoficationDbusService
ModuleNotFoundError: No module named 'rofication'
gardotd426 commented 4 years ago

After finally getting remontoire to work and being able to see the keybindings, yeah I'm able to get every other rofi modi to run, window list, run, file search, etc. Just not rofication, and I get the errors above. And I have both regolith-rofi-config and regoltih-rofication installed, as well as rofi itself (obviously).

Still, it's wild how well everything else is working. I booted up a regolith iso (which I'd only ever done once before for like 5 minutes) before fixing everything on Arch to try and help troubleshoot, and yeah it's exactly the same over here, except the rofication stuff

gardotd426 commented 4 years ago

Nevermind, I figured it out.

There was some goofiness with the fact that on Ubuntu rofication uses /usr/lib/python3/dist-packages, when on Arch it's supposed to be /usr/lib/python3.8/site-packages. copied the files and it was no issue, but then I just installed the rofication package from the AUR and removed the .deb one, and it works as well.

So. I guess over the next day or so I'll clean this PKGBUILD up, separate it into a few meta packages, get the right licenses, and then get sha256sums for like, 50 packages (lol) and then go ahead and maybe submit it here for you to review if you want, and go ahead and make it live on the AUR.

The thing is, I actually think this should be pretty easy to maintain, since it'll mainly consist of just editing package numbers for the .deb files or whatever. But yep, here we are!

regolith2

kgilmer commented 4 years ago

Wow, fantastic news @gardotd426 !

maybe submit it here for you to review if you want

Sounds good!

Is there a git repo or something I can find your work in?

gardotd426 commented 4 years ago

This is actually the first anything-remotely-approching "project." I've got a github repo I put custom prebuilt TKG Wine and Proton builds up at when people ask for a special build to run a game, so like on request, but that's about it (aside from my dots which are a mess).

However, I do plan to put this PKGBUILD and stuff up when I actually have it ready. Cause like, before I went through the trouble of adding all the dependencies, licenses, conflicts, and provides for all the packages, I wanted to make sure it would even RUN on an Arch system first. Well, I knew it could run, Linux is Linux, but with full DE's and stuff that require a lot of libs, sometimes Ubuntu and Arch can have issues since Ubuntu uses /lib/x86_64-linux-gnu and Arch doesn't, and little stuff like the rofication issue I mentioned earlier, I didn't know if it would be beyond my grasp to fix it if it got too hairy. But now that I know it's fully functional I'm gonna go ahead and get the PKGBUILDs ready for official use, at which point I'll put them up either here or at Gitlab. Sent from Mailspring (https://getmailspring.com/), the best free email app for work On Jun 6 2020, at 10:48 pm, Ken Gilmer notifications@github.com wrote:

Wow, fantastic news @gardotd426 (https://github.com/gardotd426) !

maybe submit it here for you to review if you want Sounds good!

Is there a git repo or something I can find your work in? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub (https://github.com/regolith-linux/regolith-desktop/issues/169#issuecomment-640148281), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AM5Y3366V7LPUKM46FS2YNTRVL5W3ANCNFSM4JJVN7OQ).

moonwitch commented 4 years ago

I've got arch, and use i3. (little plus, I have an Hidpi setup). If you need a tester, I could try.

justinmoon commented 4 years ago

(me too)

Strykar commented 4 years ago

But now that I know it's fully functional I'm gonna go ahead and get the PKGBUILDs ready for official use, at which point I'll put them up either here or at Gitlab.

Nice work. Please host/share a repo, we could help with the little bits like getting the licenses and checksums for the dependencies. First thing I'd want to test is installing it in a new Arch virtual machine.

gardotd426 commented 4 years ago

@moonwitch, @justinmoon, @Strykar

Where were you guys when I needed you!

Obviously I'm kidding, but for real I'll definitely take you all up on that.

@Strykar yeah, there were a few dependencies I wasn't really banking on (like vala and a couple other things), and yeah getting checksums for like 50-something packages is gonna be a bear.

I'll try and post something later today if I can, but before I put anything on the internet I want it to be at LEAST fully functional, i.e. not going to break anyone's system if they come across it and want to try it out, because like I said after I ran the PKGBUILD I did have to tweak one or two things to get it to work, plus it doesn't have any actual LINKS to the packages, I'd predownloaded all of them and just used the local packages in the PKGBUILDS, but obviously that's not hard at all, it's just really time-intensive.

But yes, I'll try and get a fully functional PKGBUILD up today or tomorrow. I'll go ahead and start the repo with a README and add a license for the PKGBUILD (GPL2, probably). It'll of course have 50-something 'SKIP''s in the checksum area, but yeah we'll get that taken care of later.

The system I tested it on and got it working with was relatively fresh, I took a timeshift snapshot from my current daily driver but it was from like the day after I installed it, but it did have GNOME already and some other things, I want to try it on an ACTUALLY fresh system here in a bit so I can better gauge the dependencies. But yeah, that gnome-session-bin issue was really the biggest hurdle because I had no damn clue what was going on, but now that I figured that out the rest is just busy work, as I said the DE is fully functional from what I could tell (I spent a few hours in it, and I tried to test whatever "Regolith-ness" I could, everything worked).

gardotd426 commented 4 years ago

I've created a README here, so that's the repo to watch. Of course I'll also post here when ready, but yeah if anyone has any notes on the README please do tell.

gardotd426 commented 4 years ago

Some progress:

I installed Arch in a VM, and installed no other desktop environment, just lightdm, booted into a tty, grabbed the PKGBUILD and .debs from my host through ssh, and then tried to install and see how it went. It reminded me of a couple of issues that I'd forgotten about:

This issue is easily solved on the fly by just ln -s /usr/lib/lipcre.so.1 /usr/lib/libpcre.so.3, but that's a problem for a PKGBUILD. See, pcre can be pulled in as a dependency, sure, but you can't symbolic link (or do anything that requires root privileges) from within a PKGBUILD. If libpcre.so.1 had been part of anything WE were doing, in the PKGBUILD, then I could symbolically link them DURING the build, and then during installation they would both get installed (the real file and the link). Because just like a .deb, a .pkg.tar package is just an archive that gets extracted into the root directory, so everything goes where it's supposed to. This could have caused a big headache, I was on the verge of just using asp to checkout the PKGBUILD for the repo build of pcre, and then putting the contents of THAT PKGBUILD inside ours, at the end, and doing the ln in that, but that's a nightmare.

So, I decided to try just using Arch's i3-gaps packages, which replaces four of the Regolith i3 packages. It seemed that the actual i3 files were not modified or forked in any way, unlike some other packages (like i3-gnome-flashback), and luckily for us, all i3-related configuration, as well as the forked i3blocks, all have separate .debs. So I tested it with just pulling in i3-gaps and i3-status as dependencies, and voila, that worked.

Rofication actually has an AUR package already, but it's incompatible with Regolith, because IT ships /usr/bin/rofication-gui.py and notification-daemon.py while the Regolith package drops the .py. So this would break Rofication within Regolith DE on Arch, and PKGBUILDs as a rule cannot require manual intervention. That's why this and the pcre stuff is such a pain in the ass, because everything has to work just from the user typing yay -S regolith-de or whatever.

Just a note, if anyone ends up trying this in a VM, compton isn't going to work (there are already open issues about this on the picom Github). It'll fail, and if change the config to try and get it to work, it'll probably just freeze the VM (unless you're like, using passthrough or something ridiculous like that). But everything else works, and compton does work on bare metal.

What I really need help with once I get everything ready is for y'all to try and help me figure out a logical set of sub-packages to split these up into, because we're not going to maintain 40 different PKGBUILDS, but I also don't want to just have one huge meta-package that builds 4 separate packages in one PKGBUILD made up of 40-something .debs. You'll see when I post it.

gardotd426 commented 4 years ago

Here it is, with actual URLs instead of local .deb sources:

https://github.com/gardotd426/regolith-de

I don't think I've gotten all the dependencies yet, but this is pretty close. I've spent the last 6 or so hours trying to clean it up, test in a VM, move things around, implement workarounds for the issues I mentioned earlier, etc. It's in no way ready (especially the lack of checksums), but it's at least in a workable state, if anyone wants to help me get checksums that'd be great (any other help is appreciated as well but I definitely need some help getting the checksums and it's super easy). If any of y'all do that, you submit a pull request to just add the checksum for whatever package, but remember it has to be IN ORDER as they're listed in the source() array. So if the package you have a checksum for (use sha256sum) is the 36th package in the source array, it has to replace the 36th 'SKIP'. If you don't wanna do it that way, feel free to just post the .deb name and the sha256 here, or (probably better for @kgilmer's sanity) you can just email me at the email address in the PKGBUILD.

gardotd426 commented 4 years ago

Damn I almost forgot. By the time anyone reads this I'll likely have it fixed, but just fyi especially @kgilmer

Aside from the edit I have to make to the i3 config file for it to work (without manual intervention), I also have to edit your /usr/bin/i3-gnome-flashback-session file, specifically:

# gnome-session broke compatability between 19.04 (3.32.0) and 19.10 (3.34.1) versions of Ubuntu (gnome-session-bin).
GNOME_SESSION_BIN_VERSION=$(dpkg -s gnome-session-bin | grep '^Version:' | cut -d' ' -f 2 | cut -d'-' -f 1)
COMPACT_VERSION="${GNOME_SESSION_BIN_VERSION//.}"

if [ $COMPACT_VERSION -gt 3320 ]; then
    exec gnome-session --builtin --session=i3-gnome-flashback --disable-acceleration-check "$@"
else 
    exec gnome-session --session=i3-gnome-flashback --disable-acceleration-check "$@"
fi

for obvious reasons, namely the fact that 1) there is no 3.32 (or 3.34) gnome on Arch since it's a rolling release, but mainly because it calls dpkg which CAN be installed on Arch but ONLY to build .deb packages, not to actually run, so that script will only work on an Ubuntu (or Debian, I suppose) based system.

I originally had edited it and replaced it with a pacman equivalent, but then I thought about it, and like I said - all gnome packages on Arch are 3.36, but also, the gnome-session-bin is actually coming from regolith anyway.

So yeah, that I forgot to incorporate that into the PKGBUILD, I'll go ahead and do that now. But maybe on the later versions you could get rid of that just since it's not necessary on 20.04 anyway.

kgilmer commented 4 years ago

Hi @gardotd426 , thanks for all of the updates! A few notes:

So, I decided to try just using Arch's i3-gaps packages, which replaces four of the Regolith i3 packages.

Yes, the i3-gaps package that is used in Regolith is vanilla, except for one variation: the stock i3 and i3-gaps package ship a desktop session file (xsession) that include a i3 login. I extracted this session file to a separate binary package, so that when Regolith is installed, there is only one desktop session to choose from.

Fonts: Regolith uses various fonts depending on which Look is installed, but is a subset of: fonts-materialdesignicons-webfont, fonts-font-awesome, fonts-jetbrains-mono, and fonts-source-code-pro-ttf.

Default terminal: could also just install a symlink from /usr/bin/x-terminal-emulator to something else. Not sure if that's better or worse but a simple option. The i3 config file tends to change from release to release and is also something that users like to customize. If the Arch variant of Regolith shared the same version as the Ubuntu version, I think it would be easier for users.

But maybe on the later versions you could get rid of that just since it's not necessary on 20.04 anyway.

Yes, but until Bionic is deprecated, this will have to remain.

I was thinking there are other scripts that assume dkpkg installalled but I grepped through the packages and couldn't find anything.

gardotd426 commented 4 years ago

Yeah I grepped through everything that I could think of that would be necessary (anything in /usr/bin, /usr/share/, /etc, so on and so forth) and that was all I found. Plus when everything worked as it should after I tried it (and figured out the one instance I did need to fix) I figured it should be fine.

And yeah i3 uses urxvt as it's default terminal (vanilla i3/i3-gaps that is), but it doesn't install it by default, and instead of just picking some random terminal, I figured it better to just ship regolith-st, it makes by far the most sense. For one, and most importantly, that gives people a terminal at first login, but then also I made it its own package so it can be removed if they wanna use something else.

The font stuff helps, I'd found the source-code-pro font usage, as well as jetbrains, but that was all I could find. I'll add fontawesome as a hard dependency and the rest as soft, and in the future if I split up the packages to individual style packages (unlikely, but possible) I'll just go ahead and add the fonts as deps for individual style packages.

On Tue, Jun 9, 2020 at 11:57 PM Ken Gilmer notifications@github.com wrote:

Hi @gardotd426 https://github.com/gardotd426 , thanks for all of the updates! A few notes:

So, I decided to try just using Arch's i3-gaps packages, which replaces four of the Regolith i3 packages.

Yes, the i3-gaps package that is used in Regolith is vanilla, except for one variation: the stock i3 and i3-gaps package ship a desktop session file (xsession) that include a i3 login. I extracted this session file to a separate binary package, so that when Regolith is installed, there is only one desktop session to choose from.

Fonts: Regolith uses various fonts depending on which Look is installed, but is a subset of: fonts-materialdesignicons-webfont, fonts-font-awesome, fonts-jetbrains-mono, and fonts-source-code-pro-ttf.

Default terminal: could also just install a symlink from /usr/bin/x-terminal-emulator to something else. Not sure if that's better or worse but a simple option.

But maybe on the later versions you could get rid of that just since it's not necessary on 20.04 anyway.

Yes, but until Bionic is deprecated, this will have to remain.

I was thinking there are other scripts that assume dkpkg installalled but I grepped through the packages and couldn't find anything.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/regolith-linux/regolith-desktop/issues/169#issuecomment-641705144, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM5Y3363H2XORUTO5LKABA3RV4ABRANCNFSM4JJVN7OQ .

gardotd426 commented 4 years ago

Hey moon twins @justinmoon @moonwitch I could use those testers now. So far I'm the only one that's tested it.

Note. You need to install remontoire-git from the AUR. Since this isn't live in the AUR yet and you're using makepkg directly, you can't pull in AUR dependencies. I'll probably just add the Regolith remontoire package into the PKGBUILD so I just don't have to worry about AUR dependencies (I already have, actually, but on another branch, not master yet), but for now just install remontoire-git from the AUR along with the resulting packages from this PKGBUILD.

If you test it, go ahead and do a compatibility report on the repo for the PKGBUILD (instead of here). Just let me know whether you're trying it in a VM or bare metal, whether it was a fresh installation or an existing one (I need to know that for dependency reasons), and whether there were any issues or not.

@duckdalbe, @Bonfi97 If you're also willing to help, test this, that would be appreciated. Right now I've pretty much done everything on my own up until yesterday when @Strykar helped get checksums and did some editing. It's been exhausting, there's like 40 packages here, and since I'm testing on brand-new vanilla Arch systems (instead of something like Manjaro where most of any dependencies are already gonna be installed from jump street) it's been a lot more labor intensive than I first thought. But now all the hard work is over, it'll only be minor edits and refinement, I just need help testing because a sample size of one isn't enough for me to be comfortable making this live on the AUR.

kgilmer commented 4 years ago

I recalled another place where Regolith relies on a feature of the Debian package manager: virtual packages. Regolith defines a virtual "compositor" package, of which none, xcompmgr, compton, and picom are all concrete packages that satisfy the virtual package dependency, and they all "conflict" with each other meaning only one can be installed at one time. This is because the Regolith i3 file invokes a general purpose "compositor init script" of which they all supply.

I don't know if the Arch package manager supports these package policies but if not, users going to install different compositors will likely run into errors as each package ships files mapping to the same path. More info is here: https://regolith-linux.org/docs/customize/compositors/

gardotd426 commented 4 years ago

@kgilmer I'm a bit confused... I'm only bringing over one of the compositor packages, regolith-compositor-compton-glx, and just adding compton as a dependency.

It's not feasible to provide all four as four separate options, and since practically 100 percent of people (at least on Arch) that use a compositor with i3 use picom/compton, that was the obvious choice.

If I did decide to bring all of them and have separate PKGBUILDS for each, then I mean all I'd have to do is add that they conflict with each other.

I might be way off base, could you explain to me a bit more what you're talking about? Where does the "virtual package" get defined? And what is specific to dpkg?

The real question is whether dpkg gets CALLED by any scripts or not.

gardotd426 commented 4 years ago

Ohhhh I think I get what you're saying, I looked into virtual packages and yeah, this isn't going to be an issue.

Arch has that too. It's defined in the provides array, for example mesa provides opengl-driver. opengl-driver is the "virtual package."

But that wouldn't matter anyway, because whatever DEB packages for Regolith "depend" on virtual packages, it's not like any of that stuff is inherent to it. Unless there's another file that literally calls on dpkg or something like that. But like, obviously there's no meta-information that's getting transferred from the .deb.

Maybe I should have better explained how the Arch Build System installs .deb packages on Arch.

Again, like I said before, .deb packages are literally just ar archives, containing all the files that get installed on the system. So literally all that happens is the .deb gets extracted, the resulting files get moved to the "pkgdir", and then that "pkgdir" gets turned into a pkg.tar archive, which pacman can then install.

That's literally all that happens. We're not like, dependent on any of the features of dpkg, or apt, or anything like that. So like, even though one of the regolith packages on UBUNTU might have regolith-compositor (or whatever the virtual package is called) as a dependency, which any of those four concrete packages can provide, it's not like my PKGBUILD has anything about a regolith-compositor virtual package. It just uses regolith-compositor-compton-glx and pulls in picom as a dependency. But, as I said, if I wanted to do it the same way that Regolith does it, with virtual packages, I could, but there's no reason to bother with it.

Strykar commented 4 years ago

Hey moon twins @justinmoon @moonwitch I could use those testers now. So far I'm the only one that's tested it.

I did test it using makepkg, upon login it logged me right back out to the LightDM login screen, haven't had at it since.. Need to test in a VM to get fresh install issues out of the way first.

==> Installing regolith-de package group with pacman -U...
loading packages...
warning: regolith-i3xrocks-1.4.1-1 is up to date -- reinstalling
warning: regolith-styles-1.4.1-1 is up to date -- reinstalling
warning: regolith-st-1.4.1-1 is up to date -- reinstalling
warning: regolith-desktop-config-1.4.1-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
:: regolith-i3 and gnome-session are in conflict. Remove gnome-session? [y/N] y
warning: dependency cycle detected:
warning: gnome-flashback will be installed before its regolith-i3 dependency

Packages (12) gnome-flashback-3.36.3-1  gnome-panel-3.36.1-1  gnome-session-3.36.0-1 [removal]  libconfig-1.7.2-2  metacity-3.36.1-1  playerctl-2.1.1-1  python-i3ipc-2.2.1-1  regolith-desktop-config-1.4.1-1  regolith-i3-1.4.1-1  regolith-i3xrocks-1.4.1-1
              regolith-st-1.4.1-1  regolith-styles-1.4.1-1

Total Installed Size:  46.49 MiB
Net Upgrade Size:      16.10 MiB

:: Proceed with installation? [Y/n] y
gardotd426 commented 4 years ago

You should have filed an issue over at the repo so I could take a look.

But anyway, this is relatively easy to debug.

Install xorg-twm.

When you get to the lightdm login screen, instead of trying to log in to the Regolith session, hit CTRL+ALT+F2 to get a TTY login. Log in (as your regular user, not root), and then type startx an hit enter.

When the session starts you should have a terminal. Type i3-gnome-flashback-session. You should get an error. Tell me what the error is. We're missing a dependency somewhere.

I got the same thing when I tried it on a fresh system, I was missing python-i3ipc or something like that, but that's not the issue you're having, but it is indeed a dependency issue. Because I just installed the current PKGBUILD on another system and it worked again, I'm literally typing from it right now, see? regolith3

gardotd426 commented 4 years ago

@Strykar so it's definitely a dependency issue. Unless you installed one of the older PKGBUILDS and there was something else wrong but all three branches are functional (outside of this obvious dependency issue) at the moment.

0xDubdub commented 4 years ago

Thanks for taking the time to create a PKGBUILD. And thanks to Ken for making all of this possible in the first place!

Let me begin with a small correction: startx is owned by xorg-init, and not by xorg-twm.

Anyway, I'm experiencing the same issue as Strykar, except that I'm using GDM. But here comes the weird part: If I start the session manually with i3-gnome-flashback-session, it works like a charm. Frankly, I'm not sure how to debug this.

gardotd426 commented 4 years ago

I wasn't telling him to install xorg-twm so he had startx. He already has startx. I told him to install xorg-twm so he would have a little environment to run the i3-gnome-flashback command from, to get the terminal output. It's just easier that way.

On Wed, Jun 10, 2020 at 6:51 PM szaun notifications@github.com wrote:

Thanks for taking the time to create a PKGBUILD. And thanks to Ken for making all of this possible in the first place!

Let me begin with a small correction: startx is owned by xorg-init, and not by xorg-twm.

Anyway, I'm experiencing the same issue as Strykar, except that I'm using GDM. But here comes the weird part: If I start the session manually with i3-gnome-flashback-session, it works like a charm. Frankly, I'm not sure how to debug this.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/regolith-linux/regolith-desktop/issues/169#issuecomment-642308186, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM5Y337F4I4ZPKHX2UBCJ5LRWAFAXANCNFSM4JJVN7OQ .

gardotd426 commented 4 years ago

@szaun @Strykar yeah something is going on here, because I've just gotten it working in a third VM.

@szaun, which session did you pick from GDM? I imagine "Regolith"?

Both of you, please post the output of yay -Qqn and yay -Qqm, please. That way I can track down the missing dependency.

Also, please try pulling down the latest master of the PKGBUILD. I've added a new patch removing some more ubuntu-specific stuff.

gardotd426 commented 4 years ago

Apologies if this is a stupid suggestion, but since you're both (I assume) testing in fresh VMs with like nothing else installed, try installing base-devel. Since you're not using yay to install this package, then you very well might not have things like gcc or other required things.

But yeah, like I said I've patched i3-gnome-flashback (along with the original patch to i3-gnome-flashback-session), and there's nothing missing as far as the packages themselves go, we just need to track down the last dependencies.

This is the output of yay -Qqen in my VM that I'm typing from right now with a working regolith de environment.

alacritty
alsa-utils
autoconf
automake
base
bc
binutils
bison
dnsmasq
fakeroot
file
findutils
firefox
flex
fontforge
gawk
gcc
gettext
git
gnome-control-center
grep
groff
grub
gsfonts
gzip
kitty
kitty-terminfo
lib32-fontconfig
lib32-libx11
lib32-libxxf86vm
libtool
libx11
libxkbcommon-x11
libxxf86vm
lightdm
lightdm-gtk-greeter
linux
linux-firmware
linux-headers
m4
make
mesa-demos
nano
neofetch
net-tools
networkmanager
openssh
os-prober
pacman
patch
pkgconf
python-dbus
python-gobject
ruby
rxvt-unicode
sed
sudo
texinfo
tk
ttf-font-awesome
ttf-hack
ttf-jetbrains-mono
ttf-joypixels
ttf-liberation
wget
which
wireless_tools
xcb-util-cursor
xdg-utils
xf86-input-libinput
xf86-video-vesa
xorg-bdftopcf
xorg-docs
xorg-font-util
xorg-fonts-100dpi
xorg-fonts-75dpi
xorg-fonts-encodings
xorg-iceauth
xorg-luit
xorg-mkfontscale
xorg-server
xorg-server-common
xorg-server-devel
xorg-server-xephyr
xorg-server-xnest
xorg-server-xvfb
xorg-server-xwayland
xorg-sessreg
xorg-setxkbmap
xorg-smproxy
xorg-x11perf
xorg-xauth
xorg-xbacklight
xorg-xcmsdb
xorg-xcursorgen
xorg-xdpyinfo
xorg-xdriinfo
xorg-xev
xorg-xgamma
xorg-xhost
xorg-xinit
xorg-xinput
xorg-xkbcomp
xorg-xkbevd
xorg-xkbutils
xorg-xkill
xorg-xlsatoms
xorg-xlsclients
xorg-xmodmap
xorg-xpr
xorg-xprop
xorg-xrandr
xorg-xrdb
xorg-xrefresh
xorg-xset
xorg-xsetroot
xorg-xvinfo
xorg-xwd
xorg-xwininfo

That should be enough, if not, then this definitely should (yay -Qqn):

aalib
accountsservice
acl
adobe-source-code-pro-fonts
adwaita-icon-theme
alacritty
alsa-lib
alsa-plugins
alsa-topology-conf
alsa-ucm-conf
alsa-utils
aom
archlinux-keyring
argon2
at-spi2-atk
at-spi2-core
atk
attr
audit
autoconf
automake
avahi
base
bash
bc
binutils
bison
bluez
bluez-libs
bolt
boost-libs
brotli
btrfs-progs
bubblewrap
bzip2
ca-certificates
ca-certificates-mozilla
ca-certificates-utils
cairo
cantarell-fonts
cdparanoia
cheese
chromaprint
chrpath
cifs-utils
clang
clutter
clutter-gst
clutter-gtk
cogl
colord
colord-gtk
compiler-rt
confuse
coreutils
cracklib
cryptsetup
cups-pk-helper
curl
dav1d
db
dbus
dbus-glib
dconf
desktop-file-utils
device-mapper
diffutils
dmraid
dnsmasq
dnssec-anchors
docbook-xml
docbook-xsl
dosfstools
e2fsprogs
elfutils
enchant
evolution-data-server
exempi
exiv2
expat
faac
faad2
fakeroot
ffmpeg
fftw
file
filesystem
findutils
firefox
flac
flex
fluidsynth
fontconfig
fontforge
freeglut
freetype2
frei0r-plugins
fribidi
fuse-common
fuse3
gavl
gawk
gc
gcc
gcc-libs
gcr
gd
gdbm
gdk-pixbuf2
geoclue
geocode-glib
gettext
ghostscript
giflib
git
glew
glib-networking
glib2
glib2-docs
glibc
glu
gmp
gnome-autoar
gnome-bluetooth
gnome-color-manager
gnome-control-center
gnome-desktop
gnome-flashback
gnome-menus
gnome-online-accounts
gnome-panel
gnome-settings-daemon
gnome-themes-extra
gnome-video-effects
gnupg
gnutls
go
gobject-introspection-runtime
gpgme
gpm
gptfdisk
graphene
graphite
graphviz
grep
grilo
groff
grub
gsettings-desktop-schemas
gsfonts
gsm
gsound
gssdp
gst-plugins-bad
gst-plugins-bad-libs
gst-plugins-base
gst-plugins-base-libs
gst-plugins-good
gstreamer
gtk-doc
gtk-update-icon-cache
gtk3
gts
guile
gupnp
gupnp-dlna
gupnp-igd
gvfs
gzip
harfbuzz
harfbuzz-icu
hicolor-icon-theme
hwids
hwloc
hyphen
i3-gaps
i3status
iana-etc
icu
ijs
imagemagick
imlib2
inetutils
iproute2
iptables
iputils
iso-codes
jack
jansson
jbig2dec
js60
json-c
json-glib
kbd
keyutils
kitty
kitty-terminfo
kmod
krb5
l-smash
lame
lcms2
ldb
ldns
less
lib32-bzip2
lib32-expat
lib32-fontconfig
lib32-freetype2
lib32-gcc-libs
lib32-glib2
lib32-glibc
lib32-harfbuzz
lib32-libffi
lib32-libpng
lib32-libx11
lib32-libxau
lib32-libxcb
lib32-libxdmcp
lib32-libxext
lib32-libxxf86vm
lib32-pcre
lib32-util-linux
lib32-zlib
libaio
libarchive
libass
libassuan
libasyncns
libatasmart
libavc1394
libblockdev
libbluray
libbs2b
libbsd
libbytesize
libcaca
libcanberra
libcanberra-pulse
libcap
libcap-ng
libcddb
libcdio
libcdio-paranoia
libconfig
libcroco
libcue
libcups
libdaemon
libdatrie
libdc1394
libdca
libde265
libdrm
libdv
libdvdnav
libdvdread
libedit
libelf
libepoxy
libev
libevdev
libexif
libfdk-aac
libffi
libfontenc
libgcrypt
libgdata
libgdm
libgee
libgexiv2
libglvnd
libgme
libgnomekbd
libgpg-error
libgrss
libgsf
libgtop
libgudev
libgusb
libgweather
libgxps
libhandy
libibus
libical
libice
libid3tag
libidn
libidn2
libiec61883
libimobiledevice
libinput
libinstpatch
libiptcdata
libjpeg-turbo
libkate
libksba
libldap
liblqr
liblrdf
libmfx
libmicrohttpd
libmm-glib
libmms
libmnl
libmodplug
libmpc
libmpcdec
libnautilus-extension
libndp
libnetfilter_conntrack
libnewt
libnfnetlink
libnftnl
libnghttp2
libnice
libnl
libnm
libnma
libnotify
libnsl
liboauth
libofa
libogg
libomxil-bellagio
libosinfo
libp11-kit
libpaper
libpcap
libpciaccess
libpgm
libphonenumber
libpipeline
libplist
libpng
libproxy
libpsl
libpulse
libpwquality
libquvi
libquvi-scripts
libraqm
libraw1394
librsvg
libsamplerate
libsasl
libseccomp
libsecret
libshout
libsm
libsndfile
libsodium
libsoup
libsoxr
libspiro
libsrtp
libssh
libssh2
libstemmer
libtasn1
libteam
libthai
libtheora
libtiff
libtirpc
libtool
libuninameslist
libunistring
libunwind
libusb
libusbmuxd
libutempter
libutil-linux
libva
libvdpau
libvisual
libvorbis
libvpx
libwacom
libwebp
libwnck3
libwpe
libx11
libxau
libxaw
libxcb
libxcomposite
libxcursor
libxdamage
libxdg-basedir
libxdmcp
libxext
libxfixes
libxfont2
libxft
libxi
libxinerama
libxkbcommon
libxkbcommon-x11
libxkbfile
libxklavier
libxml2
libxmu
libxpm
libxrandr
libxrender
libxres
libxshmfence
libxslt
libxss
libxt
libxtst
libxv
libxxf86vm
libyaml
licenses
lightdm
lightdm-gtk-greeter
lilv
linux
linux-api-headers
linux-firmware
linux-headers
llvm-libs
lm_sensors
lmdb
lua52
lua52-bitop
lua52-expat
lua52-lpeg
lua52-luajson
lua52-socket
lvm2
lz4
lzo
m4
mailcap
make
man-db
mdadm
mesa
mesa-demos
meson
metacity
mjpegtools
mkinitcpio
mkinitcpio-busybox
mobile-broadband-provider-info
mpfr
mpg123
mtdev
nano
nautilus
ncurses
ndctl
neofetch
neon
net-tools
netpbm
nettle
networkmanager
ninja
nm-connection-editor
npth
nspr
nss
openal
opencore-amr
openexr
openjpeg2
openmpi
openssh
openssl
opus
orc
os-prober
osinfo-db
p11-kit
pacman
pacman-mirrorlist
pam
pambase
pango
parted
patch
pciutils
pcre
pcre2
perl
perl-error
perl-mailtools
perl-timedate
picom
pinentry
pixman
pkgconf
playerctl
polkit
poppler
poppler-glib
popt
portaudio
potrace
procps-ng
protobuf
psmisc
pulseaudio
pulseaudio-alsa
pulseaudio-bluetooth
pygobject-devel
python
python-anytree
python-appdirs
python-dbus
python-dbus-common
python-gobject
python-i3ipc
python-jsonpickle
python-lxml
python-ordered-set
python-packaging
python-pygments
python-pyparsing
python-setuptools
python-six
python-xlib
raptor
readline
rest
rofi
rtkit
rtmpdump
ruby
ruby-irb
ruby-reline
rubygems
run-parts
rxvt-unicode
rxvt-unicode-terminfo
sbc
sdl
sdl2
sed
serd
shadow
shared-color-targets
shared-mime-info
slang
smbclient
sord
sound-theme-freedesktop
soundtouch
spandsp
speex
speexdsp
sqlite
sratom
srt
startup-notification
sudo
swig
sysfsutils
systemd
systemd-libs
systemd-sysvcompat
taglib
talloc
tar
tcl
tdb
tevent
texinfo
thin-provisioning-tools
tk
totem-pl-parser
tracker
tracker-miners
ttf-droid
ttf-font-awesome
ttf-hack
ttf-jetbrains-mono
ttf-joypixels
ttf-liberation
twolame
tzdata
udisks2
upower
usbmuxd
util-linux
v4l-utils
vala
vid.stab
vmaf
volume_key
vulkan-icd-loader
wavpack
wayland
wayland-protocols
webkit2gtk
webrtc-audio-processing
wget
which
wildmidi
wireless_tools
woff2
wpa_supplicant
wpebackend-fdo
x264
x265
xbitmaps
xcb-proto
xcb-util
xcb-util-cursor
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
xcb-util-xrm
xdg-dbus-proxy
xdg-utils
xf86-input-libinput
xf86-video-vesa
xfsprogs
xkeyboard-config
xorg-bdftopcf
xorg-docs
xorg-font-util
xorg-font-utils
xorg-fonts-100dpi
xorg-fonts-75dpi
xorg-fonts-alias
xorg-fonts-encodings
xorg-iceauth
xorg-luit
xorg-mkfontscale
xorg-server
xorg-server-common
xorg-server-devel
xorg-server-xephyr
xorg-server-xnest
xorg-server-xvfb
xorg-server-xwayland
xorg-sessreg
xorg-setxkbmap
xorg-smproxy
xorg-util-macros
xorg-x11perf
xorg-xauth
xorg-xbacklight
xorg-xcmsdb
xorg-xcursorgen
xorg-xdpyinfo
xorg-xdriinfo
xorg-xev
xorg-xgamma
xorg-xhost
xorg-xinit
xorg-xinput
xorg-xkbcomp
xorg-xkbevd
xorg-xkbutils
xorg-xkill
xorg-xlsatoms
xorg-xlsclients
xorg-xmodmap
xorg-xpr
xorg-xprop
xorg-xrandr
xorg-xrdb
xorg-xrefresh
xorg-xset
xorg-xsetroot
xorg-xvinfo
xorg-xwd
xorg-xwininfo
xorg-xwud
xorgproto
xterm
xvidcore
xz
yajl
zbar
zenity
zeromq
zita-alsa-pcmi
zita-resampler
zlib
zsh

If that doesn't fix it, I suggest removing the packages (sudo pacman -R regolith-i3 regolith-i3xrocks regolith-styles regolith-desktop regolith-st) and then running sudo pacman -S gnome i3-gaps, and install all of the gnome group. That will pull in any dependencies you'd need, then you can just remove gnome-session and gnome-shell, and then reinstall the package.