State of Sway - April 2016

Published 2016-04-20 on Drew DeVault's blog

Since the previous State of Sway, we have accomplished quite a bit. We are now shipping versioned releases of sway, which include support for window borders, input device configuration, more new features, and many bug fixes and stability improvements. I’m also happy to say that Sway 0.5 has landed in the Arch Linux community repository and I’m starting to hear rumors of it landing in other Linux distros as well. Here’s a quick rundown of what’s happened in the past four months:

  • Window borders work now
  • Input devices are configurable
  • swaybar is much more mature, including support for i3status and i3blocks
  • swaylock has reached a similar level of maturity
  • New include config command to include sub-configs
  • We have a default wallpaper and a logo now
  • musl libc support has been added
  • More features of the i3 IPC protocol have been implemented
  • 18 more i3 commands have been implemented
  • Many improvements to documentation
  • Hundreds of bug fixes and small improvements

I’m a particularly big fan of the new include command, which allows me to add this to my config file:

include ~/.config/sway/config.d/`hostname`/*

The net of this is that it includes a set of configs specific to each machine I run Sway on, which each have a unique output device & input device configuration and several other details, but I can include them all under version control to keep my dotfiles synced between computers.

Today, sway looks like this:

We’re now making our way towards Sway 1.0. I have put together a roadmap of the things we have done and the things that remain to do for Sway 1.0, which is available on the improved website here. We are still now moving forward on many of these features, including the most asked for feature: the stacked & tabbed window layouts, which is under development from Mikkel Oscar Lyderik. He’s given me this screenshot to tease you with:

All of this is only possible thanks to the hard work of dozens of contributors. Here’s the breakdown of lines of code per author for the top ten authors (with the difference from the previous State of Sway in parenthesis):

4307 (+3180)Mikkel Oscar Lyderik
3059 (-457)Drew DeVault
2285 (+115)taiyu
1826 (+40)S. Christoffer Eliesen
682 (-38)Luminarys
544 (+544)Cole Mickens
515 (-19)minus
385 (+185)Christoph Gysin
345 (+266)Kevin Hamacher
166 (+45)crondog

Once again, I’m no longer the author of the most lines of code. Sway now has a grand total of 15,422 lines of C and 2,787 lines of headers. Here’s the total number of commits per author for each of the top 10 committers:

688 Drew DeVault
212 Mikkel Oscar Lyderik
191 taiyu
109 S. Christoffer Eliesen
97 Luminarys
58 Christoph Gysin
34 minus
18 crondog
13 Yacine Hmito
12 progandy

As the maintainer of sway, a lot of what I do is reviewing and merging contributions from others. So these statistics change a bit if we use number of commits per author, excluding merge commits:

343 Drew DeVault
201 Mikkel Oscar Lyderik
175 taiyu
109 S. Christoffer Eliesen
96 Luminarys
58 Christoph Gysin
34 minus
18 crondog
13 Yacine Hmito
12 progandy

These stats only cover the top ten in each, but there are more - check out the full list. Hopefully next time I write a blog post like this, we’ll be well into the lifetime of Sway 1.0!