# Fedora i3 Spin First Impressions
## Intro
I successfully created the i3 spin iso and bootable usb using the
following (my first time ever using a kickstart).
```shell
sudo su -
dnf install git livecd-tools
git clone
https://pagure.io/i3-sig/Fedora-i3-Spin.git # commit 9fb6abd3
cd Fedora-i3-Spin
livecd-creator --verbose --config=fedora-live-i3.ks --fslabel=I3
--cache=/var/cache/live
wipefs --all /dev/sdX
dd if=I3.iso of=/dev/sdX bs=64k status=progress && sync
```
It was a really good experience, so I wanted to provide some feedback.
## Install Process
Everything worked as advertised, and the usb successfully booted on my
2015 macbook pro retina without any issues.
It was not obvious once booted into the live image how to install to
hard drive. First I tried $mod+d to look for the installer in dmenu, but
could not find it (I tried running `anaconda` from dmenu but nothing
happened).
Next I opened a shell with $mod+enter to try and search for the
installer and saw the message in the terminal with the hint how to start
the installer. After starting the installer the rest of the installation
process was smooth as butter.
But if I didn't know to open a terminal with $mod+Enter I would have
assumed the spin was broken and moved on without further consideration
(or at least that is my assumption of what an inexperienced i3 user
would do).
I rebooted the laptop and was greeted with the lightdm login screen as
expected and logged in without issue.
## First Impressions
Since i3 is just a window manager, and not a desktop environment, it was
a bit disorienting at first to not have any of the utilities which are
typically included in a desktop environment.
### Terminal
In the past I have been installing the xfce spin, and then using `dnf`
to install i3. So my natural reaction was to use dnf to install
`xfce4-terminal`. `urxvt` is included in the i3 spin, but after spending
lots of time in the past trying to get urxvt usable (I was never able to
get powerline fonts to work in `urxvt` and [in my opinion] it requires
lots of config to make it 'presentable'), and trying alternatives such
as allacrity (didn't work well for me with ssh to remote servers), I
have found [that for me] `xfce4-terminal` has become my goto because it
seems to work without issue in all of my use cases. The i3 docs include
an ordered list of terminals that `i3-sensible-terminal` will try, and
`xfce4-terminal` has a higher priority than `uxrvt`, so if it is
installed it will be used.
### Screen Configuration
I am using a macbook with retina display and two external monitors.
Everything worked perfect with the external monitors, but is very small
on the retina display, so I have been using `arandr` to configure it in
my i3 config.
I don't know how they do it, but the xfce spin seems to accommodate this
automatically and scale the retina display to 2x without any user action
(but other spins, and even the default gnome spin don't [in my
experience]). It would be nice if we could get this worked out with
lightdm so ultimately even the login screen would be scaled right for
people using ultra high def displays.
I guess this could be a collaborative effort with all the spins if it is
addressed at the display manager level instead of the window manager
level. Also, the xfce spin has worked out how to do the scaling without
having a gap between the retina display and the one next to it. I
haven't worked out how to do this yet because every time I try to
display the retina display correctly it includes a big gap in the
monitor layout (seems the monitor still takes up the full space, and
only the "view" is scaled).
By default i3 does not include compositing, but that causes problems
with some screen sharing applications (such as MS Teams - which I have
to use for work). Installing `compton` compositor, and then including an
exec line in the i3 config to start it fixes this issue.
### Session Locking
The default i3 config includes a line to use `xss-lock` to run `i3lock`
when the session is locked, but `xss-lock` is not included in the spin.
### `dmenu`
By default, `dmenu` shows all applications (instead of just desktop
applications) which is a bit disorienting, especially since the first 38
menu items start with `abrt-xxxx`. The default i3 config already
includes a commented out config for `rofi`, which I personally prefer
since it is easier for me to read the items in vertical layout instead
of horizontal layout. So I installed rofi, commented out the dmenu line
in the i3 config, uncommented the rofi line, and added 'drun' to the
beginning of the '-modi' list (to make it show desktop items by default).
### Default i3 Config
I really like Fedora's 'upstream first' principle because it makes the
upstream documentation more relevant. Having said that, i3 works so much
better when the config is tweaked to match user preferences.
Also, since it is a keyboard focused workflow the i3 upstream has done a
good job making the generated default config work well regardless of the
users keyboard layout (I use 'us -variant dvp' for example). This makes
it a bit more complicated to include a customized config.
My initial thoughts are to include a generator script in an ancillary
package that can modify the default config and merge in some ricing
(based on keycodes due to keyboard layout issues) - mostly just to show
people the possibilities and give examples for them to extend.
## Final Recommendations
I generally support keeping the spin lean, but think that it needs a bit
more of the daily utilities. Perhaps a good starting point is everything
included in the xfce spin except the things that aren't applicable (such
as xfce settings). If so, we should also prominently credit the xfce and
xfce spin teams in the i3 spin documentation.
In summary, what about:
* include in base spin:
* `xfce4-terminal` (so it is the default instead of `uxrvt`)
* a new package 'i3-firstboot' that includes a simple systemd unit to
open a html page describing next steps for new users the first time a
new installation is booted
* `xss-lock` (already included in default i3 config but not included
in the spin)
* `arandr` (for configuring monitors)
* create a new i3-spin-utilities package (if the intention is to keep
the base spin very lean - which is probably more consistent with what an
experienced i3 user is used to) including:
* thunar (file explorer)
* other relevant packages from the xfce spin
* rofi (instead of dmenu - just my personal preference)
* compton (compositor required by some apps such as screen sharing in
MS Teams)
* riced i3 config generator script (as a reference so people can see
what a more customized setup could be)
### After Thought
I love i3wm, but it was a couple years between my first exposure to it
and embracing it. Over the years there have been a couple times where I
installed a bunch of window managers on various distributions and tried
them all. But every time I tried i3 I thought it was not installed
properly because I couldn't even find the application menu (because I
didn't understand what i3 was all about). So I moved on without giving
it a second thought.
Once I finally realized what i3 was all about I fell in love with it.
I suggest the i3-SIG put some effort into documenting not only the spin,
but how users can get the most from the spin including introduction
documentation:
* on the spin page
* on first boot
* in an intro video on some video sharing platforms (not just youtube)