Get the top HN stories in your inbox every day.
Airblader
codethief
Thanks to both of you for maintaining i3(-gaps) all these years! I don't remember exactly when I started using i3 but it's been at least 9 or 10 years, if not more. I didn't make the jump to i3-gaps until a couple years later but, boy, am I glad I did!
For me, i3 is one of those few pieces of software that is pretty much optimal – it is rock solid and stable, I wouldn't know how to improve it any further and I also couldn't imagine living without it. By now, my i3 keybindings are hard-wired into my brain and I despise having to work with any other window manager or desktop environment! Besides, for the few rare cases where you do forget to lock your screen, a tiling wm with custom key bindings is a great way to prevent your colleagues from messing with your machine, in particular: announcing free cake using your Slack account. :-)
Story time:
When I was still doing research in cosmology back in 2014/2015, one day there was this new guy in our research group and, as it so happens, we ended up sharing an office. A couple weeks in, we were both at our desks and he looked over my shoulder and said:
"Ahh, I see you're using i3!"
"Yup, been using it for quite a while and I absolutely love it!"
"Do you know who the maintainer is?", he replied, with a big smile on his face.
Turns out, Michael was his brother! So that's how I learned to remember the name "Stapelberg". :-)
[@secure: Please say Hi to him for me!]
A few years after that episode, one night I told a good friend of mine about i3 & i3-gaps and we both had a look at their Github repositories. My friend had recently started working at this IT consulting firm, and he went: "Wait a second, Airblader / Ingo Bürk? That's my colleague!"
Not long after that discovery, I started working for a startup in Munich and it just so happened that the startup had also hired that same consulting firm for their dev team. Aaaand Ingo was their consultant! I'm honored to say I learned a ton from Ingo during that time and I still look back fondly to pair-programming with him (i.e. mostly him telling me what to do or patiently explaining things to me). If I've ever seen one of those infamous unicorn rockstar 10x developers, it's definitely him!
Four years later, I ended up at that consulting firm, too, in no small part thanks to Ingo convincing me to join them.
All this is to say: The world is small. And: You guys have changed my life! Thank you! :)
secure
It truly is a small world! I’ll say hi to him, thanks for sharing :D
quotemstr
> For me, i3 is one of those few pieces of software that is pretty much optimal – it is rock solid and stable, I wouldn't know how to improve it any further and I also couldn't imagine living without it
I like i3 in principle, but the lack of vertical dock support is a dealbreaker for me. Things like swaybar taking up vertical space across the entirety of my wide desktop is just a shame.
bee_rider
There’s a GitHub issue for this vertical bars. It sounds complicated.
noisy_boy
Upvoted - dont know why people would downvote a simple opinion (which includes a fact) stated without any apparent malice.
arjvik
You can always use an alternative dock. I prefer using i3-gaps with Polybar simply for aesthetic and customization reasons.
Airblader
The pleasure has been all mine. :-)
secure
Thanks for providing the background here, and thanks for maintaining i3-gaps over all the years! :)
I’m also happy we could complete this merge now!
the-grump
Thank you both for creating and maintaining the snazziest and most reliable window manager in this galaxy.
__MatrixMan__
Ah i3. With the sole exception of vi, no other software is so fully embedded in my muscle memory. Thank you, I think.
chimeracoder
> Ah i3. With the sole exception of vi, no other software is so fully embedded in my muscle memory.
Ironic, given that the default i3 configuration uses jkl; instead of hjkl for direction.
__MatrixMan__
Oh that's a good point. I forgot about that. I aligned them immediately and then forgot that my values aren't the defaults.
tiffanyh
> Recently, however, the maintainers of i3 got together (a chance to meet arose randomly). During that meeting we decided that it'd be better to just merge the fork and improve it later.
Off topic:
Sounds like an in-person meeting, as opposed to only being remote, facilitated a roadmap change that hadn’t happened without it.
Airblader
I think the in-person meeting made this a bit easier, but we had been talking about it prior to that, so I think it would've happened either way.
rhaway84773
Thanks to you and all the other i3 maintainers. i3 is a life changing experience for me. It completely changed the way I looked at computers themselves (having been raised on a steady diet of Windows and OSX, i3 was the first time I became aware of the fact that there could be other desktop UI paradigms, which changed how I look at nearly everything else as well).
On a more practical level, I’ve never been more efficient as I have been i3.
So a deep thank you to all the folks responsible for building such great software and making it accessible to so many so easily.
westurner
What do you think about getting alt-tab support in there? Here to say this: https://github.com/westurner/dotfiles/blob/develop/scripts/i...
__MatrixMan__
You want to use i3 to collapse focus management into a single temporal dimension?
I'll die defending your right to do so, but dear god your taste is atrocious. It's like you finally got out of prison and decided to decorate your bedroom window with iron bars.
gorgoiler
In every window manager that supports it, alt tab does two things.
Alt tab with a long hold on alt lets you select another window, albeit from a linear list as you describe, by cycling through with tab and shift-tab.
Quickly typing alt-tab now cycles between the window you came from and the window you just selected. That’s the super useful value of the feature.
Is there an i3 command to (a) leap to another window from a selection and (b) leap back and forth between the window you came from and the window you just chose?
savingsPossible
Do you happen to know an alt tab that just uses the currently visible desktops ? ( I have two monitors, and want to alt-tab between windows without finding the old ones hidden)
---
Also, I feel bad using this thread for feature requests/questions. Lovely work guys, and I am very grateful!
nikhilgk
Do you mean currently visible desktops or windows? https://github.com/sagb/alttab is the utility of my choice to get what I wanted.
gigatexal
Much much much thanks to you all for working and contributing to i3. It is the primary reason I use Linux. I love it. I couldn’t do my work without it. Thank you!
iforgotpassword
Cool to hear some background stories to i3 from you and the other replies here. I didn't think about it in some time since i3 just works, but yeah thanks for maintaining this great project. Also surprised Michael is still maintaining/using it after becoming a Go evangelist. ;;-)
secure
i3-gaps is included in i3 v4.22, which is available in many Linux distributions already.
You can find the release notes at https://i3wm.org/downloads/RELEASE-NOTES-4.22.txt
Documentation for the gaps feature is at https://i3wm.org/docs/userguide.html#gaps
jeromenerf
Maybe 15 years ago or so, I wrote the original “useless gaps” patch for dwm, because it felt packed, especially between different window styles (terminal, web browser, file manager for instance). The concept was new to tiling managers but quite common anywhere in photography, typography or web design.
At the time, I spent a minute or two on the patch (the code is simple, and the patch is a hack), ten minutes on documentation Ascii art and zero minute on choosing a name for it. “Useless” made it sound like a casus forki, and “gap” could probably been just “margin” as in css.
“Mal nommer un objet, c’est ajouter aux malheurs du monde” — Albert Camus ~”misnaming an object is adding to the world misery”
Happy merging anyway!
Airblader
Just now saw this comment. That's really neat, pleasure to "meet" you. :-) That naming certainly gave me some headache over the years because it always stuck, and seems to be the cause of all the heated discussions. Anyway, I also wouldn't have it any other way now!
danuker
I just realized I've been using this magnificent piece of software for 7 years.
Stealing some tray icons (volume, clipboard, KTeaTime, network), I built the setup I'll probably use for another 7!
Thanks to everyone involved! Tiling WMs rule!
jadbox
I just wish that i3 came with a gnome-like settings app for casual desktop users!
KMnO4
Definitely check out Regolith Linux. It’s a DE built on top of i3 and solves all the complaints I had. It’s been my daily driver for about a year now.
Settings panel? Check. Keyboard media keys? Check. Automatic display when plugging in monitors? Check.
rawoke083600
>Definitely check out Regolith Linux.
I was a BIG fan of Regolith, super sensible defaults and smooth onboarding experience. But with the V2 it seems the config is now split in 100's of files (ok not 100 but more than one). I loved the fact that with original i3(Regolith) I had to back up 1 file for my i3. I now moved to Manjaro-i3. Been happy so far.
codethief
The key (on Ubuntu at least) is to simply go with the standard Ubuntu installation and then switch to a custom .xinitrc-based X session that starts i3. That way, you can still fire up the usual Gnome dialogs (e.g. for printers) when you need to. (Obviously, some settings related to configuring your desktop – e.g. key bindings – will no longer work.)
UtahDave
Or use Regolith Linux. They've done a fantastic job integrating i3 with Ubuntu, including settings, etc
savingsPossible
Fully agree!
I have mint, using the xfce-based version. I can open xfce-panel whenever I dont know what to call on the cli (and then promply close it :P)
michaelmrose
You can actually use a desktop with i3 as the window manager and use the existing settings menu if you prefer. Not every desktop supports this but for example kde does.
britneybitch
I recently installed arch and when you select i3 it makes you choose between i3-wm and i3-gaps. This led me down a bit of a rabbit hole, but in the end I was happy to find I didn't have to choose between forks after all!
sohrob
What a great project. For those who are wanting something similar for macOS, the Amethyst project is pretty great https://github.com/ianyh/Amethyst (meant to be more like Xmonad actually but still a tiling wm).
zdragnar
Has the performance improved over the past few years? Last I tried it (2017 or so?) It was so much slower than i3 that I couldn't stand it and went with hand-rolling something with hammerspoon.
[Edit for context] I used Linux at home but was forced into a MacBook at work.
_neil
Can’t say for certain, but I think the speed has improved over the past several years. Definitely more stable (for me anyways). I haven’t used i3 so I can’t compare the two.
philsnow
Out of curiosity, is your hammerspoon substitute fit for showing off ? I'm a tiling window manager refugee and I love hammerspoon but every time I try to dive into making something like my old xmonad setup, I run into macos-specific issues about the concept of apps and windows and workspaces and such and them not mapping to my prejudiced mental model of how things should be.
zdragnar
I didn't do a whole lot of tiling with it, mostly just added keyboard shortcuts to open or bring to the front specific applications as (at the time) I was on a Mac without an external monitor. I found I could switch between windows quickly enough that I never needed multiple visible on the screen at the same time.
https://www.hammerspoon.org/docs/hs.application.html#launchO... was the primary method, though sometimes (such as teams) I had to get more creative.
That said, I believe https://github.com/szymonkaliski/hhtwm is quite popular, might be worth a shot if you want tiling.
lvncelot
And for us bspwm/sxhkd folk, theres yabai[1] and shkd[2]
tlhunter
If i3 is still in an upstreaming mood I'd love to donate my web based theme/config generator: https://thomashunter.name/i3-configurator/
ArcMex
Both i3 and i3-gaps introduced me to TWMs and I remain grateful for the role they played in my productivity.
Thanks, team. Congratulations on the merge. Take care.
virtualwhys
I guess it's been 12 years on i3, time flies :)
Thanks to the maintainers -- a stripped down Linux distro + i3 is an incredibly powerful combination.
metta2uall
Yep, I'm also grateful to have discovered i3, only several years ago for me. Thanks to its low memory usage it's helped me save a decent amount of money as I'm able to easily develop on a Linux VM running on an 8GB M1 and don't need to upgrade to 16GB.
tomxor
I went back and forth on gaps.
I like the idea of maximising screen space utility (original reason for gaps feature rejection), but disliked the visual "feel" of i3wm window borders. Eventually I realised this was due to the visual asymmetry in the tile borders, which are drawn independently even though they share geometric edges - this causes inner edges to be twice the width of outer edges which looks kind of clunky. If you look at most people's gaps setup, most people either equalize the space between the outer and inner edges, or have gaps so large that it doesn't feel like it's part of the tiles any more.
I also noticed that you don't get this feeling in tmux, where outer edges just don't exist... And that you can achieve the same in i3 by hiding outer edges and using 1 pixel borders, you end up with minimal 2 pixel "dividers" rather than borders:
new_window pixel 1
new_float pixel 1
hide_edge_borders both
Will be nice to have gaps available to play with in binary packages though.input_sh
About time!
Does anyone know why i3 was so opposed to gaps to warrant a fork to begin with?
ohazi
Both the author of i3 and the author of i3-gaps (who is also a maintainer of i3) originally opposed merging the i3-gaps code because the code was a bit hacky and had certain edge cases where it would break things (e.g. you couldn't enable both gaps and titlebars simultaneously). This was done deliberately so that the two codebases could be easily kept in sync. They weren't necessarily opposed to introducing a gaps-like feature if an implementation was deemed acceptable.
Unfortunately this state persisted for years, and it turns out gaps is a popular feature, so they both eventually decided to bite the bullet, merge it, and then work on cleaning things up rather than waiting indefinitely for a unicorn implementation that was likely never going to appear.
secure
That’s right. We waited for a volunteer to help with the merge (as we both didn’t have enough time to spend on working on gaps), but nobody ever showed up.
Eventually, because life circumstances permitted it, I was able to spend a few weeks, first getting gaps merged as-is (as discussed and communicated) and then even cleaned up, addressing all known limitations.
MaxMatti
So there's no further cleanup needed? Or are you still looking, just in a different repo?
Blikkentrekker
Cynically speaking I'm somewhat scared of the way i3 is programmed that adding gaps would have to be hacky.
My instincts tell me that if that be the case, the code probably isn't very clean and itself full of hacks.
europeanguy
Why is gaps something that matters is what I would ask first. Seems to me increased complexity for no benefit.
angio
With a good background contrast, it's easier to have windows stand out from each other. The default config with 0 gap and thin borders make it very hard to see which window is focused.
mikelward
I use a compositor (compton/picon) to dim all windows except the active one.
https://github.com/mikelward/conf/blob/main/config/compton.c...
dfc
I use plain i3, with a border color for the focused window and a good contrasting indicator color. I always know what window is focused and where the next window will open.
I have always assumed i3-gaps was just an aesthetic thing. How does the gap let you know what window is focused?
mgaunard
Make the borders thicker?
What's the difference between borders and gaps?
jez
What about the gaps makes it more obvious which window is focused? I would have guessed that the gaps are the same for focused and non-focused windows.
ohazi
The benefit is that it looks cool and a lot of people seem to like it.
e.g. see: https://www.reddit.com/r/unixporn/
This is not an invalid use-case. Not everybody wants to be 100% focused on productivity to the exclusion of absolutely everything else.
If you want to have something as simple as a background image, the only way you're going to be able to see it when using a tiling window manager is with gaps or transparency. Small gaps is arguably less intrusive than transparency.
rhaway84773
People want the thing they’re staring at all day to look pleasing to the eye.
Oh the horror!
It’s kind of weird to me that folks think that aesthetics don’t matter for something that’s so central to one’s life.
The legitimate complaint about/problem with aesthetics is when it becomes the priority and/or hampers functionality. The macOS calendar when it took its extremely skeuomorphic turn was the prime example of this (it was such a poster boy for aesthetics over functionality that Apple responded by getting rid of skeuomorphism altogether).
But aesthetic improvements don’t need to be like that at sll.
Airblader
/r/unixporn is where i3-gaps was born, as a matter of fact.
There's a small footnote to this, but I think it's true enough to say it like that.
formerly_proven
There's actually a hardcore sister reddit of r/unixporn, https://www.reddit.com/r/unixSOCKS
rvz
[flagged]
Airblader
Back when I used i3-gaps myself (yes, that time is behind me, sorry), I liked the visual clarity gaps provide. And from years of interacting with the community I know many people feel the same way. It just makes things feel less cluttered.
jchw
Out of sheer curiosity, what kind of setup do you use today? I did briefly try i3-gaps myself but ultimately never daily drove it. (nowadays I run Sway, but with no gaps.)
wkat4242
Exactly. There's a reason whitespace is a thing in graphical design.
spoiler
I like having a small gap. It pleases me to use a Desktop environment that looks like it at least belongs in this decade.
Edit: I realise some people are okay with the brutalist design due to it being the most efficient use of screen space possible, but my brain needs a "pleasing" environment, otherwise it affects my... Mood? I'm not quite sure what it is, but to not muddle the point, having a nice environment makes me more productive
tekla
I have no idea what this means. What WM adds completely useless gaps between windows?
Both Windows and MacOs do not such thing. How do gaps make a WM look like it belongs to this decade?
_dain_
why do books and websites have margins between the text and the edge of the page? because a judicious amount of blank space between elements just looks nice and makes it easier to read. typographers and graphic designers think very hard about this stuff, it isn't useless.
the same thing goes for desktop windows. a bit of space between them makes the interface less cramped. if you're staring at it for 12 hours a day it's nice not to have things so cramped and pushed up against one another.
I'm kind of amazed at the sheer vehemence of the anti-gaps people. they always have to say "it's useless, I don't know why anyone would want it --" [proceeds to ignore all explanation for why it isn't useless and why people do want it] "-- therefore it shouldn't exist and the people who want it are decadent". I've never seen bizarre attitude to any other (optional!) UI feature.
it reminds me of those 20th century modernists who denounced serifs on letters, or ornament on buildings. or idk puritans and icon-smashers or something. miserable tube-brained people.
williamscales
well, dwm includes them[0] as a patch so i’m guessing even the most hardcore of folks occasionally want them.
these days with high resolution monitors it can be nice to have a background and some gaps / transparency.
linsomniac
At work I have a 43" "cheap" monitor that is more of a TV than a monitor. Meaning, at the very edges the backlight isn't behind the pixels at a desk viewing distance. i3+gaps allowed me to put a gap around the left, right, and bottom few pixels, so my text right at the edge wasn't unreadable.
cosban
I wonder why you phrased your thoughts this way. The benefits are the additional options which were implemented in the fork. If there were no benefits then 1. no one would use this, which clearly isn't the case and 2. this merge wouldn't have occurred
mtlmtlmtlmtl
EDIT: Comments from the maintainers have painted a completely different picture while I wrote this so none of this applies here but I'm leaving it up as a general view on maintainership.
Very strange, makes me want to avoid i3 altogether. It's not like it requires a lot of code to support configurable, optional gaps.
Probably the rationale is something asinine like "I don't like gaps, gaps are dumb" or "buhu I don't like the completely negligible overhead"
I actively avoid projects whose maintainers are MDFLs rather than BDFLs.
Airblader
I see your point (in general terms). But I think people tend to overlook the hidden costs of optional features in terms of maintenance and complexity (in code, documentation, and for users).
In i3 we have always tried to weigh benefit against cost. We also really care about compatibility. It's easy to add a feature, difficult to maintain it, and impossible to remove it.
secure
Yup! We even have an FAQ entry on the reasons for not merging features without careful consideration: https://faq.i3wm.org/question/778/why-is-patch-not-merged-an...
Also, saying “it’s not that many lines of code” comparing the before and after state is too simplistic: it doesn’t include the cost of changing the existing code into the desired state, which can be a significant effort, even if the number of lines doesn’t differ much before and after. See https://github.com/i3/i3/pulls?q=is%3Apr+author%3Astapelberg... to get an impression of how much work it was to merge gaps.
mtlmtlmtlmtl
I'm impressed with your complete lack of snark in response to my asininely snarky comment, edit or no. I went from thinking you're a bad maintainer to thinking you're one of the more level headed ones I've interacted with. I feel like there's some kind of lesson here about Bayes' Law.
I never used i3 much beyond trialing it for embed stuff(went with dwm). I'm too much of a Lisp nerd not to use StumpWM. I like the fact that your stumpwmrc is essentially just a live patch for your WM. You can redefine arbitrary functions, classes, variables, define commands with arbitrary code in them. And you can patch the WM while running via Emacs.
How is i3 support for more obscure unices like OpenBSD, Illumos etc? StumpWM is kind of a pain to get working after they dropped support for all compilers except sbcl...
And I agree completely general in about the tradeoffs of adding features.
It's tough to do, though my philosophy in this specific case is also that customization is a core feature of any good tiling WM and should be priorited almost above all, except performance and minimalism.
sophacles
> In i3 we have always tried to weigh benefit against cost. We also really care about compatibility.
Thank goodness for this. I would say you've succeeded at those goals - sometimes I go deep into tinkering and other times I am focused on something else. i3 is on the short list of software that I can tweak to my liking and then ignore for years without concern that my environment will mysteriously break from an update. I really, really appreciate that, kudos.
the-grump
The beauty of free software is that nobody will coerce you to use it, and nobody cares if you use it.
I'm incredibly thankful to the maintainers for doing the thankless job of keeping i3 stable and for doing it so well.
Oxidation
The discussion[1] over "maximise" leaned towards "that's dumb, only dumb people want that" for a very long time, and it's still the one thing in i3 I find jarring.
To maximise a window temporarily but keep your status bar or avoid your program going into "full screen mode" and hiding UI from you, you have to move it to some empty desktop and just deal with the fact that when you put it back on the original desktop it might not end up where it came from.
Airblader
I think that's an unfair and fundamentally false representation of the discussion on that issue. But I won't further comment on it here.
rawoke083600
I actively avoid programmers that use "MDFLs" and "BDFLs" in their sentences...
bee_rider
I think it is generally best to not assume people have asinine motivations.
stoppingin
I've been a long time i3wm user, and I couldn't be happier with my workflow. What network managers are people using together with i3? I've been using wicd for a while, however with Debian deprecating Python2 this won't be viable for long. I haven't found another lightweight GUI network manager which works well with i3. This might not be the perfect place to ask, however I don't use Reddit.
Galanwe
Network manager, with nmtui and nm-applet.
memorable
Same here. NM worked flawlessly on my Sway setup, which is not i3, but Sway is very similar to i3 anyways.
savingsPossible
nm-applet also, works fine
lgunsch
I use iwd and systemd-networkd. I don't use may applet or gui control. With my setup I just and up ignoring network configuration the majority of the time.
Edit: I've found iwd such a huge improvement over past wireless networking solutions. It's a big improvement.
fold3
Maybe iwctl would work for you?
8b16380d
Network-manager is the easiest transition
Get the top HN stories in your inbox every day.
Hi. I'm the maintainer of i3-gaps and also a maintainer for i3.
The story of this merge is not only several years long, but a true success story in OSS in my eyes.
I took on i3-gaps by taking an existing patch and rebasing it to the latest i3 HEAD. From there it became popular and I took on the maintainership, eventually contributing to i3 itself and finally becoming a maintainer there as well.
Whilst originally gaps were considered an "anti feature" for i3, years ago we already decided that we'd accept adding gaps into i3. Clearly the fork was popular, and as someone else pointed out here as well, the Wayland "port" of i3, sway, added gaps from the beginning on with great success.
However, the original gaps patch was focused on being small and easy to maintain. It caused a few issues and had some drawbacks. We made it a condition that porting gaps into i3 would have to resolve these issues. Alas, this could've meant a lot of work that no one took on for the years to follow.
Recently, however, the maintainers of i3 got together (a chance to meet arose randomly). During that meeting we decided that it'd be better to just merge the fork and improve it later. And as it happened, Michael, the author and main maintainer of i3, did all that work during the port as well.
What resulted is the end of almost a decade of i3-gaps, and a much better implementation thereof. I'm incredibly happy to see this happen after all this time, and a big shoutout to Michael here for all that work.
Edit: Hadn't realized Michael was commenting here already. I guess leaving the background and story from my side of things doesn't hurt regardless.