Closed gardotd426 closed 2 years ago
Obviously we'll have to come up with a replacement to implement /etc/regolith/styles/rofi
since it's also irrelevant now. Maybe just ship a rofi config.rasi file with the same values? You can put it in the same place and just change the rofi commands in the i3 config to rofi -config-file /etc/regolith/styles/rofi.rasi -show drun -theme $rofiTheme
(obviously replacing $rofiTheme but this is just for illustration). Either that or those config options like font, show-icons, icon theme, etc. will have to be moved from /etc/regolith/styles/<themename>/theme
to the actual /etc/regolith/styles/<themename>/rofi.rasi
file
Hi @gardotd426 , first thanks for the detailed bug report. I see that you found the source of the configuration problem you were dealing with, nice! I see that the Rofi project finally made good on their promise to remove Xresources from it. It was never really complete anyway. I hope the new setup is better for users. Regarding Regolith, I plan to replace rofi with an in-house alternative I've calling "ilia". It is written in Vala and is about, maybe half way to an alpha release. This program will replace all functionality that rofi was providing in Regolith, as well as take the job of keybindings viewer as well. It's already available for pre-alpha testing in the Regolith 2.0 repos.
Due to having such little time, I'm focused entirely in the new 2.0 release and will not be working on any 1.x refactoring at this time. I may provide a look that uses rofi over ilia, but will do that using the new Regolith 2.0 styles refactor. In any case, if you're interested in making fixes in Regolith to support rofi 1.7 I would love to have you join as a contributor!
Oh that's awesome, yeah as soon as you have 2.0 ready I'll be moving the AUR package over to that (this is Arch Linux we're talking about lol). I'll probably start checking it out to work out any bugs ahead of time to have a smooth transition. Could you point me to where to find it? I looked on Launchpad and didn't see any 2.0 alpha stuff. The pages on https://github.com/regolith-linux/package-repo give 404 errors. Since package-repo was set up like 10 minutes ago maybe you don't have the site up yet? Idk but yeah every single one give 404 errors.
In any case, if you're interested in making fixes in Regolith to support rofi 1.7 I would love to have you join as a contributor!
Yeah for sure, when I get some time I'll see what I might can work up that would be acceptable for the 1.X releases.
I'm super pumped to check out ilia (less pumped about moving over the PKGBUILD to 2.0 when it comes out).
hmm, regolith-linux.github.io is still 404-ing. Any idea what's going on?
yeah as soon as you have 2.0 ready I'll be moving the AUR package over to that
Sounds good. FWIW I expect to have an alpha-quality pre-release available for users to try out before the end of the year.
Could you point me to where to find it?
Actually the ghpages is the repo itself, so there is no HTML. You will find the details necessary to install from the repo on the readme. Note that currently both Ubuntu and Debian are supported. This is using the new build automation in 2.0 and so I'm able to go from a change to a package to a repository update to a generated ISO without any manual work. Perhaps the arch package work could be integrated into a github job in package-repo
such that it could be more easily tested against development changes..?
Yeah for sure, when I get some time I'll see what I might can work up that would be acceptable for the 1.X releases.
Sounds good, I've sent you an invite to join the org. :taco:
I'm super pumped to check out ilia (less pumped about moving over the PKGBUILD to 2.0 when it comes out).
You should be able to build and run ilia directly without any packages for now, but a debian package is available in the 2.0 package repo for both debian and ubuntu.
less pumped about moving over the PKGBUILD to 2.0 when it comes out
A design goal of 2.x is that it should be simpler and more easy to port than 1.x. If there is something that is a regression in this regard we would want to fix it. Also, as 2.0 is still in development, if there are changes that can be made to make the Arch port/version simpler or better now would be a good time to talk about those changes.
Actually the ghpages is the repo itself, so there is no HTML. You will find the details necessary to install from the repo on the readme.
Well that's what I mean. The README gives instructions for each supported distro, and none of the urls in those instructions resolve, they all have 404 errors.
Like, this is from the README:
echo deb [arch=amd64] https://regolith-linux.github.io/package-repo/ubuntu/focal/amd64 focal main | sudo tee /etc/apt/sources.list.d/regolith.list
But https://regolith-linux.github.io/package-repo/ubuntu/focal/amd64 404s. And so do every other link for the other supported distros.
You get what I'm saying? I should have been more clear with what I was talking about.
Like, I need to be able to have a url to grab the .deb packages from. These don't seem to exist, they all 404 out.
I can go into Ubuntu and use apt
to download the debs, but it doesn't tell me the url it's coming from. I can't do an Arch port without having a link to download the .debs with wget.
Like on Arch I can't use apt download
to get the .debs. In my PKGBUILD for 1.6, just so you have a better idea of what I need, I list the source array with all the sources, here's an example:
http://ppa.launchpad.net/regolith-linux/release/ubuntu/pool/main/r/regolith-styles/regolith-look-ayu_2.9.7-1_amd64.deb
So, when the PKGBUILD is being run, it uses wget to get that file. So just wget http://ppa.launchpad.net/regolith-linux/release/ubuntu/pool/main/r/regolith-styles/regolith-look-ayu_2.9.7-1_amd64.deb
.
So having regolith-linux.github.io/package-repo doesn't help me because I can't surf to the correct directory that hosts the debs. https://regolith-linux.github.io/package-repo/ubuntu/impish/amd64/main/impish/pool/main
Shit I'm sorry, I figured it out. I downloaded packages.db
, and sure enough it gives the locations of each file. So now I can create an alpha 2.0 PKGBUILD for testing. Fantastic.
Glad you got it figured out. FWIW here's how the packages get built: in this github action git repos are pulled from a package model, verified against a manifest and actions are invoked via custom actions to generate the target packages and do any publishing. Whatever work you've got could be pulled up and executed via a custom action, and then the builds would happen directly as packages are changing. No polling or messing with debian package metadata.
Oh man that github action looks awesome. I'll have to look into actions and see what could be done with the AUR package. Automated updates to it would definitely be awesome.
Unfortunately I'm kind of stuck on rofication. My fix works for everything except rofication, because rofication accepts no arguments. I tried monkeying with the source code to force a theme:
rofication/_gui.py
:
ROFI_COMMAND = ('rofi',
'-dmenu',
'-theme /etc/regolith/styles/dracula/rofi.rasi',
'-p', 'Notifications',
'-markup',
'-kb-accept-entry', 'Control+j,Control+m,KP_Enter',
'-kb-remove-char-forward', 'Control+d',
'-kb-delete-entry', '',
'-kb-custom-1', 'Delete',
'-kb-custom-2', 'Return',
'-kb-custom-3', 'Alt+r',
'-kb-custom-4', 'Shift+Delete',
'-markup-rows',
'-sep', '\\0',
'-format', 'i',
'-eh', '2',
'-lines', '10')
and then building, but it doesn't work. Do you have any ideas of how I could move rofication away from xsettings or even add an argument to it so I could do something like rofication-gui -theme /path/to/theme
? I know you're not doing any wholesale refactoring but if you have any ideas or pointers that'd be great.
Also, you said ilia is replacing rofi for the applauncher, but what about for notifications/window-switcher/theme selector? I've got ilia compiled and running, I'm thinking of going ahead and moving the AUR package over to ilia if I can replace rofi completely.
I think you may need to seperate the items due to the space:
'-theme /etc/regolith/styles/dracula/rofi.rasi', -> '-theme', '/etc/regolith/styles/dracula/rofi.rasi',
Also, you said ilia is replacing rofi for the applauncher, but what about for notifications/window-switcher/theme selector?
Yes, it's going to do all of that too. :sweat_smile: There is some preliminary work on the notification manager but I need to make some server side changes. I appreciate your enthusiasm but just keep in mind it's early days for the app, and I bet there are a lot of bugs that I haven't found yet. :smile:
I think you may need to seperate the items due to the space:
Unfortunately it still will only display the default all-white theme for rofication
I think you may need to seperate the items due to the space:
Unfortunately it still will only display the default all-white theme for rofication
Run rofi with debugging to figure out what's going on:
G_MESSAGES_DEBUG=all 'rofi' '-dmenu' '-theme' '/etc/regolith/styles/dracula/rofi.rasi' '-p' 'Notifications' '-markup' '-kb-accept-entry' 'Control+j,Control+m,KP_Enter' '-kb-remove-char-forward' 'Control+d' '-kb-delete-entry' '' '-kb-custom-1' 'Delete' '-kb-custom-2' 'Return' '-kb-custom-3' 'Alt+r' '-kb-custom-4' 'Shift+Delete' '-markup-rows' '-sep' '\\0' '-format' 'i' '-eh' '2' '-lines' '10'
@cfsmp3 running rofi from the command line wouldn't do anything, because rofication is a compiled python program that uses rofi but does a bunch of other stuff, rofi itself standalone is already fixed. But anyway I fixed it, go ahead and update and you'll see (if you're running regolith-de on Arch that is).
Since rofi can no longer call from xresources, and rofication is written in python and takes no arguments, I just hacked my way through the source code for rofication (knowing zero python), and I stumbled across an idea -
In rofication/_gui.py
, there is the following:
ROFI_COMMAND = ('rofi',
'-dmenu',
'-p', 'Notifications',
'-markup',
'-kb-accept-entry', 'Control+j,Control+m,KP_Enter',
'-kb-remove-char-forward', 'Control+d',
'-kb-delete-entry', '',
'-kb-custom-1', 'Delete',
'-kb-custom-2', 'Return',
'-kb-custom-3', 'Alt+r',
'-kb-custom-4', 'Shift+Delete',
'-markup-rows',
'-sep', '\\0',
'-format', 'i',
'-eh', '2',
'-lines', '10')
Well, I could add the line that says 'theme', '/etc/regolith/styles/midnight/rofi.rasi',
and it would actually work, but the rofication theme would always be stuck on midnight. So I thought "how about I set a file that's a symlink to whichever theme is active?" That took patching regolith-look
, but it wasn't hard. All I did was in the set_look
function, I added a bit that looks for ~/.config/regolith
, if it doesn't exist it creates it, then looks for ~/.config/regolith/rofication.rasi`. It then deletes it, and creates a symlink there to the set look:
if [ ! -d "$HOME/.config/regolith" ]; then
mkdir -p $HOME/.config/regolith
fi
if [ -f "$HOME/.config/regolith/rofication.rasi" ]; then
rm "$HOME/.config/regolith/rofication.rasi"
ln -s /etc/regolith/styles/$LOOK/rofi.rasi $HOME/.config/regolith/rofication.rasi
else
ln -s /etc/regolith/styles/$LOOK/rofi.rasi $HOME/.config/regolith/rofication.rasi
fi
exit 0
This way ~/.config/regolith/rofication.rasi will always be the appropriate theme for the current look.
Then the only matter was to have rofication actually look there. So I had to edit rofication/_gui.py
and rofication/_metadata.py
:
Relevant sections from:
_metadata.py:
from appdirs import *
import os
appname = "regolith/rofication.rasi"
ROFICATION_THEME = user_config_dir(appname)
ROFICATION_NAME = 'rofication'
ROFICATION_URL = 'https://github.com/regolith-linux/regolith-rofication'
ROFICATION_VERSION = '1.2.2'
ROFICATION_THEME = user_config_dir(appname)
_gui.py:
from ._metadata import ROFICATION_THEME
from gi.repository import GLib
from ._client import RoficationClient
from ._notification import Urgency, Notification
HTML_TAGS_PATTERN = re.compile(r'<[^>]*?>')
ROFI_COMMAND = ('rofi',
'-dmenu',
'-theme', ROFICATION_THEME,
'-p', 'Notifications',
'-markup',
'-kb-accept-entry', 'Control+j,Control+m,KP_Enter',
'-kb-remove-char-forward', 'Control+d',
'-kb-delete-entry', '',
'-kb-custom-1', 'Delete',
'-kb-custom-2', 'Return',
'-kb-custom-3', 'Alt+r',
'-kb-custom-4', 'Shift+Delete',
'-markup-rows',
'-sep', '\\0',
'-format', 'i',
'-eh', '2',
'-lines', '10')
Now obviously since I know zero python and had to use google to figure out how to call user config directory paths and whatnot, it's not the greatest code, but I had to add literally like 5 lines total and I think that's pretty good for my first ever python patch.
I could have set it to something like /etc/regolith/styles/rofi.rasi
but that would require running regolith-look as root, and that's obviously not desired.
Ken, let me know what you think, obviously I'm sure there's a better way to do this but I know you're not refactoring any 1.X stuff, and this solves all rofi issues.
@cfsmp3 running rofi from the command line wouldn't do anything,
I'd give it a try anway so see what the output looks like with your command line :-) You might be surprised.
because rofication is a compiled python program that uses rofi but does a bunch of other stuff, rofi
It's not compiled, it's just a python script that can be edited directly, no need to compile.
itself standalone is already fixed. But anyway I fixed it, go ahead and update and you'll see (if you're running regolith-de on Arch that is).
I'm not, but happy to help you troubleshoot.
if [ ! -d "$HOME/.config/regolith" ]; then mkdir -p $HOME/.config/regolith fi
No need to check if it exists if you're using -p, but not really important in the big scheme :-)
ln -s /etc/regolith/styles/$LOOK/rofi.rasi $HOME/.config/regolith/rofication.rasi
I'm not super happy about this - because it means using system-wide settings for specific users, which may or may not be the right thing to happen (also if the system wide file disappears then you have a globally broken setup).
I'm not super happy about this - because it means using system-wide settings for specific users, which may or may not be the right thing to happen
No it wouldn't? If you have two users, user1 and user2, and each of them use Regolith, and you have the following scenario:
regolith-look set dracula
regolith-look set cahuella
Then user1 will see the dracula theme when they run rofication. user2 will see the cahuella theme. That's exactly why I did it that way, so multiple users would be able to have different looks.
(also if the system wide file disappears then you have a globally broken setup).
If the system-wide file disappears, then the user has uninstalled regolith-styles, which means they've almost certainly uninstalled regolith-desktop-config (which contains regolith-look and rofication), and probably regolith completely. If the system theme file is gone, then their whole theme will be broken (rofication and all), and that's an upstream thing. That's way out of the scope of rofication. I'm not sure what you're getting at here. These files are included in the same packages, users would have to go deleting system files. I haven't changed a single thing about upstream's file paths. Every file location is in the exact same place as it is on Regolith (all styles files are in /etc/regolith/styles/themename, just like upstream. This is a direct port, not a single path is changed.
If the system files belonging to the style set by regolith-look are removed, then everything will be broken. That happens on Regolith Linux too. Go install Regolith Linux and run regolith-look set dracula && regolith-look refresh
, and then delete /etc/regolith/styles/dracula
. Log out and back in and everything will be a mess. This is an upstream responsibility, and as we already know, 2.0 is moving away from rofi, this implementation is just to last until 2.0 comes out at which point the AUR package will be moved over.
Maybe you could explain a little more what your concern is. If you don't use Regolith DE on Arch, do you use Regolith the distro?
No it wouldn't? If you have two users, user1 and user2, and each of them use Regolith, and you have the following scenario:
- user1 runs
regolith-look set dracula
- user2 runs
regolith-look set cahuella
Then user1 will see the dracula theme when they run rofication. user2 will see the cahuella theme. That's exactly why I did it that way, so multiple users would be able to have different looks.
If user1 edits his looks (assuming he can - and if he can't, that's a problem) it will affect user2 since ultimately they're sharing a file.
If the system-wide file disappears, then the user has uninstalled regolith-styles, which means they've almost certainly
I think this is a strong assumption. Users make mistakes and delete files they shouldn't :-)
Maybe you could explain a little more what your concern is. If you don't use Regolith DE on Arch, do you use Regolith the distro?
I use Regolith on top of Ubuntu (not directlty Regolith's installer, which for me didn't work at all).
If user1 edits his looks (assuming he can - and if he can't, that's a problem) it will affect user2 since ultimately they're sharing a file.
You're saying if they edit the styles files directly? That's something to report upstream, because it's the exact same on your system right now. Your looks are in /etc/regolith/styles/{lascaille,caheulla,dracula,pop-os,ubuntu,gruvbox,etc.}. I didn't move them. I suggest you report this to Ken, as this has nothing to do with the AUR package, I'm literally just using what Regolith uses.
Here's some info from the Regolith documentation:
https://regolith-linux.org/docs/customize/look/
Setting looks via the command line is also supported. A utility command called regolith-look can be used to enable it. To enable the ubuntu look installed in the previous step, try the following:
$ regolith-look set ubuntu
$ regolith-look refresh
The command will mention that it created a file in your user directory. This file is an Xresources file, and it’s stored in a specific path such that i3-gnome-flashback will look for it upon session start. Let’s have a look at the file:
$ cat ~/.Xresources-regolith
#include "/etc/regolith/styles/ubuntu/root"
In essence, our Xresources file is simply pointing to another Xresources file. Lets look there:
$ cat /etc/regolith/styles/ubuntu/root
! -- Styles - Colors
#include "/etc/regolith/styles/ubuntu/color"
! -- Styles - Fonts
#include "/etc/regolith/styles/ubuntu/typeface"
! -- Styles - Theme
#include "/etc/regolith/styles/ubuntu/theme"
! -- Applications
! These files map values defined above into specific app settings.
#include "/etc/regolith/styles/st-term"
#include "/etc/regolith/styles/i3-wm"
#include "/etc/regolith/styles/i3xrocks"
#include "/etc/regolith/styles/rofi"
#include "/etc/regolith/styles/gnome"
So yeah, if you have concerns about the styles files, then that's an upstream concern, as it's done the exact same way on Regolith and Ubuntu.
Also, no package manager on any distribution installs files to a user's $HOME directory, that's against every rule there is. The user is able to configure everything through ~/.Xresources-regolith and ~/.config/regolith/.Xresources.d/. If they want to edit style files, then they do what they do with every other config file provided by every other package in existence. They copy it to their config directory, and then point to that with ~/.Xresources-regolith.
For example, the regular (non-regolith) i3wm package - it doesn't install the default config to ~/.config/i3/config, it installs it to /etc/i3/config. If the user wants to modify it, then they are encouraged to copy it to ~/.config/i3/config, and then edit it there. Same with regolith, the user is encouraged to copy /etc/regolith/i3/config to ~/.config/regolith/i3/config, and make any user edits there. All style files are kept in /etc/regolith/styles, and that's how it is on Regolith and Ubuntu as well.
Rofi is a great program, but Regolith will migrate away from Rofi due to a few issues, including this. The replacement is in development.
Yeah, this was posted before you and I had the conversation about ilia a few weeks ago. I gotcha. I forgot this was open, I'll close it now.
Describe the bug Rofi has released update 1.7.0, and with that, there is no more ~/.Xresources-based configuration for rofi:
This obviously breaks regolith-look. Luckily it doesn't cause it to fail to launch, but you cannot set the rofi theme using regolith-look, it just stays with the default.
Because this is Arch we're talking about, I've decided to make an easy patch to fix the issue until you (or we) can figure out how this will be handled upstream when Ubuntu 22.04 comes out.
What I've done is patch /etc/regolith/i3/config:
changing lines that use
-theme $rofiTheme
to-theme $(xrescat rofi.theme)
was the best idea I had for fixing the issue, and it has been confirmed to work by all users of the AUR package (apparently there was a ton of demand for this, there's a lot of people using it!) But let me know if you think it could be handled better, this is first and foremost an as-close-to-upstream-as-possible-while-being-compatible-with-the-way-arch-does-things port, not a fork, so I will defer to your judgment.The Midnight rofi theme is also broken by the change. As it doesn't set
background-color:
in the color configuration section, the background of every app entry is white, and the text is black (when the background should be grey and the text white):This is because
text-color:
andbackground-color
are now seemingly set in the global color settings as well, because adding:to the top
colors
field fixes it and it appears as it should:The Dracula and other themes still work as always with 1.7.0, and this is because they set these values in the global color variables:
That's an easy enough fix though (I've already patched it for the AUR build).
To Reproduce Steps to reproduce the behavior:
regolith-look
to set the themeExpected behavior Rofi is themed with the correct theme.
Screenshots See above for Midnight-related screenshots.
Here's what you get with regolith-look set to any theme on rofi 1.7.0
Installation Details
Additional context Obviously, this isn't an immediate issue for Regolith, since even Ubuntu 21.10 is shipping like 1.5.4 or something of Rofi, but surely it will be on 1.7.0 by 22.04, and more importantly I know you were trying to make Regolith less tied to Ubuntu and have it be more distro-agnostic.
I haven't had time to really dive into the new Rofi docs (they've done a complete overhaul to the config system) but maybe we can figure out a new way to get it to work with regolith-look. But for now my solution works.