
I3wm and Ubuntu 20.04 server without any useless packages - efazati
https://github.com/efazati/i3buntu
======
Zhyl
So I have no idea what the poster means by 'without any useless packages' but
I can talk a little to why packaging i3 is good.

Firstly, I like i3. Of all the tiling Window managers I've tried it seems to
be the best mix of minimal, easy to understand, easy to configure and brings
all the benefits of tiling WMs in terms of workflow and aesthetics.

What i3 doesn't do out of the box is look very good or have many common tweaks
and quality of life improvements. This is something where the i3 community
spin of Manjaro [0] shines because it bakes all of this in and gives you a
gorgeous, modern-looking WM as default.

Regolith [1] was the first attempt I saw at providing this out of the box, but
I'd definitely be interested in ways and means of containerising configs and
i3 setups so that they are more easily accessible and can be tried out more
easily.

[0] [https://manjaro.org/download/#i3](https://manjaro.org/download/#i3)
(Direct link is broken. Click 'Editions -> Community -> I3')

[1] [https://regolith-linux.org/](https://regolith-linux.org/)

~~~
GGfpc
Maybe I'm missing something but there's no option for i3 in that Manjaro URL.

I currently use Regolith but I'm looking for something lighter but still
doesn't force me to configure every single thing like battery or wifi.

~~~
Zhyl
Make sure that your browser is directing you to the URL which includes the
'#'. If it doesn't, you can find it under 'community' flavours.

edit: nope, you're right it isn't working!

------
jonfw
I spent a couple of years running an extremely minimal arch I3 install. It was
fantastic doing things within my normal workflow, but when you have to
introduce new tools, new network requirements, etc. it takes a fairly
significant amount of effort. For instance- connecting to my university's wifi
took hours and required hacking up a python script that wasn't compatible with
my system.

I think a lot of the fight against 'bloat' is largely ideological and not
really rooted in practicality, but it definitely makes for a good learning
experience

~~~
zdragnar
I recently switched to KDE, Which lets you use i3 as the window manager. You
still get KDE's bar and applets like the network manager and such. Not nearly
as minimal as the arch setup I had before, and takes a depressing amount of
time to log in and out in comparison, but so far is otherwise worth it for me.

------
jakearmitage
> without any useless packages

redis, cmake, caffeine, unrar, vlc, postgres, docker, axel, fish, fzf...

really?

------
vitorbaptistaa
I just reinstalled my machine from Ubuntu 16.04 to 20.04. I'm using i3wm for a
few years, and things never worked out of the box. The sound applet, VPN, and
other small things that quickly add up.

I'm now using Regolith [1] and loving it. It offers a clean and neat i3wm
installation, but still uses Ubuntu's system admin tools. It was really simple
to install: just install Ubuntu, add its PPA and run apt-get.

I highly recommend it for anyone that likes i3wm but doesn't want to be
fiddling with configuration files to connect to a new WiFI or pair bluetooth
headphones.

[1] [https://regolith-linux.org/](https://regolith-linux.org/)

~~~
e12e
Mhm. Looks nice. Is there an equivalent for sway/Wayland?

My external monitors behave nicer w/dock un-dock under gnome/Wayland. I'm
planning to give sway a test when I get around to upgrading to 20.04..

------
chirau
What are "useless packages" and why were they made?

~~~
cxr
Here's a subset of active processes on my system, where I know that these have
never fulfilled their purpose, given the way that I use my computer:

\- /usr/lib/evolution/evolution-source-registry

\- /usr/lib/evolution/evolution-alarm-notify

\- /usr/lib/evolution/evolution-calendar-factory

\- /usr/lib/evolution/evolution-calendar-factory-subprocess

\- /usr/lib/evolution/evolution-addressbook-factory

\- /usr/lib/evolution/evolution-calendar-factory-subprocess

\- /usr/lib/evolution/evolution-addressbook-factory-subprocess

\- /usr/lib/evolution/evolution-calendar-factory-subprocess

\- /usr/lib/evolution/evolution-calendar-factory-subprocess

Side note: I blogged about this last year, outlining a policy that distro
package maintainers could adopt:

[https://www.colbyrussell.com/2019/05/15/may-
integration.html...](https://www.colbyrussell.com/2019/05/15/may-
integration.html#self-culling-services)

The idea is that any background service should be sufficiently self-aware,
i.e., able to understand that (a) it is a service was installed by default
(without explicit action on the part of the user; it was just included in the
default install) so that it may at some point be of use, and (b) in the last
(say) 4 months since the system was first installed, the service has never
been exercised for its original purpose. Given those conditions, the system
should retire the service for the foreseeable future, so that it no longer
runs in the background.

~~~
cycloptic
Using a heuristic like that is mostly unnecessary when your daemon supports
socket/dbus activation. In that case it's only brought up on-demand when
another program tries to send a message to it.

The programs you listed are part of evolution-data-server and are used as the
backing store for your calendar, clock and address book, which the GNOME panel
integrates with. You can kill them but gnome-shell will start them right back
up again when you open the calendar and it does a query to see if you have any
events.

If you're in a non-GNOME session (like i3) and systemd is still starting those
daemons, you can turn them off with some stop and disable commands:

    
    
        systemctl --user stop evolution-addressbook-factory 
        systemctl --user disable evolution-addressbook-factory
        systemctl --user stop evolution-calendar-factory
        systemctl --user disable evolution-calendar-factory
        systemctl --user stop evolution-source-registry
        systemctl --user disable evolution-source-registry
    

Or you can try your luck with removing the evolution-data-server package.

~~~
cxr
> try your luck with removing [...]

Sure, I could. But refer to my comments in that post:

> _I 'll uninstall these sorts of things, unless there's any resistance at all
> [...] in which case I tend to immediately write it off as not worth the
> effort_

My comment was not a StackOverflow-style cry for help. It was only meant to
provide some data points in response to the person who asked, 'What are
"useless packages"' and an alternative to the other person who dismissed the
reference to "useless packages" on the basis that they "were made and included
because lots people want them".

EDIT: Thanks for the detailed response, anyway. Since you've written it here,
it might be indexed and become useful to someone who _is_ trying to get to the
bottom of things—and who maybe otherwise wouldn't have ever found out how to
deal with this—and now they can.

~~~
cycloptic
My comment was to give a practical alternative to the solution you were
floating which is not really going to work in this scenario. I have done the
work in removing the "resistance" for you.

Trying to guess which services are inactive and kill them off won't fly when
the point of the service is to sit idle for a really long time (potentially on
the timescale of months/years, i.e. just as long as you suggested if not
longer) and occasionally send notifications when the user has a calendar event
coming up.

~~~
cxr
> I have done the work in removing the "resistance" for you.

Sorry, you misunderstand. The "resistance" was on the day that the system was
installed and while casually scanning a list of installed packages and
selecting ones to be removed, and then having the package manager complain
about unsatisfied dependencies.

Your message is a path to achieving the original goal. But it's not a magic
eraser that made the original resistance disappear. Your message here
suggesting how one might get down to the bottom of things now is neither
unwelcome nor welcome. It's simply moot.

> the point of the service is to sit idle for a really long time (potentially
> on the timescale of months/years

I'd wager that the difference in size between these two groups:

\- those who go months or years without ever having used the thing, and then
suddenly change their patterns and start getting use out of it; versus

\- those who go months or years without using it, and never end up doing so

... is probably an order of magnitude (or maybe a couple) in favor of the
latter group. Even ignoring that, there's an implementation strategy up for
adoption that facilitates the former use case but doesn't involve persistent
services sitting by idly, waiting for the first instance to come along. It
doesn't have to be a trade-off; that's not an intrinsic consequence of the
problem here.

~~~
cycloptic
This is an asynchronous forum. If you find my information moot or unwelcome,
you can just ignore it.

It would be impossible for a daemon to categorize its users into those two
groups and decide when to stop itself from running because it cannot see
months into the future. The other implementation strategy already exists and I
talked about it, it's to use socket/dbus activation to start the service on-
demand. But that doesn't work in all cases such as with idle notifications, so
I would argue that it is a trade-off.

~~~
cxr
> It would be impossible for a daemon to categorize its users into those two
> groups and decide when to stop itself from running because it cannot see
> months into the future.

The scheme I outlined doesn't ask anyone to look into the future. It asks that
the service look into the past.

> I would argue that it is a trade-off.

Argue if you want—it seems you're predisposed to it. I said it's not an
_inherent_ trade-off. The developers/package maintainers are certainly making
a trade-off. That's not the same thing as that trade-off being unavoidable.

------
aneutron
In my (albeit limited) experience, those "useless" packages tend to be not so
useless in order to have a somewhat functional installation.

Example: By default, Ubuntu+GNOME installs various utilities that you WILL
need unless you want to do everything by hand. nm-applet, bluetooth applet,
volume applet, etc.

Of course you have to add this to the i3 configuration manually, but that's
the beauty of running i3. Yes you may have useless packages hanging around.
But they will not be running UNLESS and ONLY IF you wish for that to be the
case.

But when you need those "useless" packages, and you will most certainly need
them to connect to your Wi-Fi network, you will be happy to have them already
on GNOME and not have to install everything package by package and perhaps
even compile an alternative software because it's the only one you found
referenced on a reddit thread.

Basically, what I'm trying to say is, it's fun to do this once as an exercise
to know how your computer works (learn what a compositor is, learn how
pulseaudio works, etc.). But beyond that, it starts to get pretty tedious and
not fun.

~~~
efazati
You can include them based on your need instead of adding them because someone
else likes to use them

------
numlock86
> without any useless packages

This is as opinionated as it can get. No specific mention of any of those
packages either. So what am I looking at?

~~~
efazati
You are right, I should update readme for more detail. but mainly there is no
dm ( display manager ) also I didn't add most of the gnome related packages

I will write a good comparison

------
e12e
It's nice to see people sharing - but this seems like a terrible way to
install the needed packages, with a separate install per package, rather than
a list of packages..

[https://github.com/efazati/i3buntu/blob/master/run.sh](https://github.com/efazati/i3buntu/blob/master/run.sh)

Something like:

[https://wiki.debian.org/AptCLI?highlight=%28%5CbCategoryPack...](https://wiki.debian.org/AptCLI?highlight=%28%5CbCategoryPackageManagement%5Cb%29#Restore_installed_software)

apt-clone: [https://github.com/mvo5/apt-clone](https://github.com/mvo5/apt-
clone)

Or indeed like it's done here, but supplying a list of packets to apt, rather
than a list of apt command lines to run one after another...

But the best way would probably just be a fork of regolith, and create a meta
package.

------
ramses0
Why Ubuntu and not Debian for a project like this?

~~~
markstos
Having used both recently, I found when some vendors target just one distro to
package for, they target Ubuntu because it's more popular, not Debian.

I thought "No problem, the .deb format works on both!". But in practice the
Ubuntu and Debian release cycles are not aligned and so their dependency trees
are not always aligned, so some vendors .deb package for Ubuntu may not work
on Debian.

You can choose Debian and hope you don't run into this, or you can choose
Ubuntu and benefit from current and future support from a more popular desktop
distribution.

------
markstos
You probably want Regolith Linux instead, or an Ansible-based solution which
will work better for updates.

This project is an opinionated one-time install script. After initial install,
good luck!

------
bjonnh
It is still installing Bluetooth support, ansible, terraform and all kind of
things. Maybe you could group these so they can be disabled individually. I
guess the notion of "useless" package really differs from users to user and
doesn't really allow for a "standardized minimalistic experience".

~~~
efazati
You are right about those packages. I removed them, I will try to make better
packaging system for diffrent usage

------
clircle
How is this different from installing ubuntu and then installing i3 ?

~~~
markstos
This is Ubuntu _server_ plus i3 and some opinionated other package choices.
This ends up being fewer overall packages than Ubuntu _Desktop_ plus i3.

~~~
clircle
I’m still confused about why this exists when you can install Ubuntu server
and i3...

------
hd4
Is there much point in enabling compositing if we're installing i3 with this
method? Would it even make a difference?

~~~
bjonnh
I3 supports compositing, I used it to have semi transparent floating windows
(heresy for a tiling wm isn't it) and it also greatly improved some stuff such
as smooth scrolling that was all teary.

------
efazati
In this project, you can install i3 from the Ubuntu server without installing
anything that you don't need.

~~~
k2enemy
To be honest, this looks a lot more like a script to set up your preferred
environment, not a minimal i3 install. It includes a lot of packages like
Firefox, docker, fish, etc that have nothing to do with i3.

~~~
efazati
You are right. maybe it is better to remove all apps from the repo and put
them in another place to let users choose based on their need

