NeshHari / XMonad

XMonad Starter Kit
217 stars 18 forks source link

Installation size #5

Closed nrthIxne closed 1 year ago

nrthIxne commented 1 year ago

Hi,

I wanted to try out your config in a VM before installing it on hardware. I used Arco Linux as my base (the XS version with XFCE) and wanted to run the setup.sh bash script. I gave the VM 50GB of disk space, but that wasn't enough apparently. The download for nerd-fonts-git was about 20GB alone. Is the size expected or unexpected behavior? What is the minimum size I need to install everything?

NeshHari commented 1 year ago

This is expected since the nerd-fonts-git AUR package is huge and the $HOME/.cache folder gets flooded. The issue is that not all icons are packaged with individual nerd fonts (e.g. ttf-iosevka-nerd), and many individual nerd fonts are no longer available in the AUR. However, what I can recommend whilst trying on a VM (due to storage limitations) is to modify setup.sh to download ttf-iosevka-nerd instead of nerd-fonts-git, and replace all instances of "CaskadiaCove Nerd Font" with "Iosevka Nerd Font" in the polybar config ($HOME/.config/polybar/Ewwification/config.ini). There may be some missing icons (across polybar themes) but it helps you try out the config. 50 GB should be more than sufficient with this change. However, do remember to run "autorandr --save single" (after you have logged in and see the wallpaper) before polybar can even appear, and modify the x-attributes (offset-x & width for polybar & x: for eww) to fit your display size so there are no overlaps or "missing" (i.e., out of range) modules.

nrthIxne commented 1 year ago

Thank you for the fast reply! I will just increase the VMs size, no issue. Do you use a login manager? If so how to do you tell it to launch xmonad? I edited the Xsession file in /etc/lightdm/Xsession and i tried it by xmonad.desktop to /usr/share/xsessions/. However, neither time did XMonad start correctly (that was after using the setup.sh script). Thank you so much for your work and the project in general! I hope to get it running eventually.

NeshHari commented 1 year ago

No worries :) I do not use a display manager. I simply launch it straight from the tty using "startx". So instead of Xsession, I use xinitrc (which is included). I do believe there's an xinit-xsession package that lets you directly launch xinitrc with a display manager which may be worth a shot, but there may or may not be issues with dbus-launch (spotify bar may not work) and some applications installed via flatpak may be laggy when communicating with dunst (from personal experience).

nrthIxne commented 1 year ago

Thank you so much! :) Good to know, maybe I should start with a clean install of Arch instead of Arco but setting up all the services is always such a time kill. One other question, during the setup.sh or even the manual install you run: cd ~/.config/xmonad rm -r xmonad xmonad-contrib

What is the reason for doing so? Is it just to get rid of any old version of XMonad?

NeshHari commented 1 year ago

I'm glad to be of assistance!

A fresh install is always recommended since the stability of setup.sh is questionable in all honesty (limited testing). I always recommend a manual install otherwise where you "stow" or copy over only what's necessary. However, running services via xinitrc is fairly straightforward. You can simply add on to the current xinitrc or even start them using xmonad itself ~/.config/xmonad/lib/Custom/MyStartupApps.hs.

To address your question... when you clone my repo, xmonad and xmonad-contrib are actually empty directories which I kind of "gitignored" since I don't want to host the official WM source code on my repo but still want to have commit messages like "latest pull" etc mainly for the purpose of "timestamping". So I'm removing the empty directories and cloning the official xmonad and xmonad-contrib git repos using setup.sh, to be automatically installed using stack. I would highly recommend uninstalling the pacman packages with pacman -Rns xmonad xmonad-contrib before running the script and let stack do its thing. One of the main reasons for choosing stack is that the Arch packages were not updated for over a year when moving from version 0.15 to 0.17, and getting LSP to work was so much more tedious (something to do with dynamic and static linking).

nrthIxne commented 1 year ago

Yes you are right, I guess I'll test the script with Arco Linux and see what happens. One thing in the setup script you uninstall xmonad (if it exists) before xmonad-contrib, which might cause an "error" since xmonad-contrib has xmonad as a dependency and pacman might abort the remove command.

That makes sense, thank you for your explanation!

NeshHari commented 1 year ago

Good spot! Thanks I'll update the script :)

nrthIxne commented 1 year ago

Just a quick update, I got the script to work on Arco LinuxS. Except for polybar, for some reason it will not align properly with the rest of the windows on screen. After setup i ran the autorandr --save single command and adjusted the output device ${env:MONITOR:HDMI-0} in config.ini. I feel like a part of the bar is missing.

Thanks again for the support.

NeshHari commented 1 year ago

Hi, could you please attach a screenshot of the bar (full top portion of your screen)? There should only be 3 polybar modules (workspaces, aur updates, and bluetooth). The rest are EWW widgets.

nrthIxne commented 1 year ago

Sure thing. Here is a screen shot from my VM. After booting it today Polybar now launches automatically (it didn't do it on previous reboots). The left bar is missing the dot for the fifth workspace for example. Polybar_problem

NeshHari commented 1 year ago

Polybar launch is tied to autorandr (in my config), which is done deliberately. This is to facilitate instances where you want different/additional bars when a different display configuration is detected (i.e., hotplugging). For example, with a second monitor connected and a new autorandr profile saved (autorandr --save dual), you may only want workspaces to be shown on that second monitor. So by tying polybar launch ~/.config/polybar/launch.sh to a specific autorandr profile you saved, polybar will automatically launch whenever that "exact" screen resolution/display configuration (i.e., xrandr -q) is detected. This is tricky when using a VM since the display size may not always be the same, especially in windowed mode where display scaling is used. In cases when polybar does not automatically launch, useautorandr --detected to see if your saved profile is actually detectable. You can also manually start the profile using autorandr single, or whatever the profile name is.

As for the screenshot, this is normal as everyone as different screen dimensions (13, 16, 24, 27, etc.). The width of [bar/workspaces] in ~/.config/polybar/Ewwification/config.ini needs to be adjusted so it fits (increase in this case). Next, none of the eww widgets are spawning. First thing to do is ensure eww-git is installed rather than eww, and then run xmonad --restart. If it is already installed, run killall -9 eww; rm ~/.cache/eww*, and manually execute ~/.config/eww/scripts/startup.sh to check for any errors.

nrthIxne commented 1 year ago

Sorry for the late response. I have one final question. Polybar now launches reliably, I need to fix the bars, but that's fine. However, it looks like I am missing icons etc. when using the setup.sh script on a bare bones Arch install. Which icons do you use? Second, I noticed that the npm package needs to be installed in order to avoid errors when using NeoVim, as it is a dependency for something.

NeshHari commented 1 year ago

I've done a complete redesign with notification panel support, built in search engine (independent of xmonad), multi-select AUR updates etc. I'm gonna push it probably in a day or two (branch right now). It should fix a lot of the issues since there are only two polybar modules (workspaces & systray) now and the only the nerd font required is ttf-jetbrains-mono-nerd (nerd-fonts-git is gone :grinning: ). I've used percentages and multiples rather than pixels as much as possible (hope it will be compatible with more screen dimensions). Everything else is fully eww and/or rofi-based, so perhaps hold off fixing the bars for now as there are too many changes to simply git pull and manually merge.

As for npm, I can't give a definite answer but its probably something to do with one of the LSP servers (installed via Mason plugin), since some of them are automatically installed via the ensure_installed option in ~/.config/nvim/after/plugin/lsp.lua. I do apologize if there are any missing dependencies as producing a tutorial surrounding XMonad was the initial goal, rather than a complete desktop. Nevertheless, thank you so much for informing me and I'll continue refining this starter kti :)

nrthIxne commented 1 year ago

Thank you for your detailed responses! I will wait a day or two to see what the changes are. Once I get everything up and running properly on VM I'll transfer it to real metal. Thanks again for all the work.

No need to apologize at all, I just wanted to let you know in case you want to extend the scope to the full desktop. I really like the NeoVim config too.

NeshHari commented 1 year ago

No problem and thank you for bringing stuff like this to my attention! It helps make the installer much more reliable :) Anyways, I just pushed to the main branch. I've yet to test it on smaller screens though it theoretically should work. The added functionality is worth the switch in my opinion. The previous main branch is now available as "oldmain".

NeshHari commented 1 year ago

Closing this issue since its pertinent to the old branch and the installation size issue has been addressed. Feel free to open another if need be :)