i3-compatible Wayland compositor
Go to file
robotanarchy c3e9ee5e43 replace non-standard qsort_r with qsort
I've tried to make as few changes, as possible.

Usually the reason for using qsort_r is, that you can pass an extra userdata pointer to the
compare function. However, in sway list_sort wrapped qsort_r and always called a wrapper
function for comparing, the wrapper function then had the real compare function as argument.
The only thing, that the wrapper function does, is dereferencing the 'left' and 'right' function
arguments before passing them to the real compare function.

I have renamed list_sort to list_qsort to avoid confusion (so nobody tries to use list_qsort like
list_sort) and removed the wrapper functionality. Now the dereferencing must be done in the
compare function, that gets passed.

Some compare functions were used in both list_sort and list_seq_find. To make the difference
clear, I've added a '_qsort' suffix to the compare functions, that are intended to be used with
the new list_qsort. (In other words: list_qsort is not compatible anymore with list_seq_find).

- Changed and renamed function (it isn't used anywhere but in commands.c, and only for sorting):
	compare_set -> compare_set_qsort
- New wrapper functions:
	sway_binding_cmp_qsort (for sway_binding_cmp)
	sway_mouse_binding_cmp_qsort (for sway_mouse_binding_cmp)
2015-12-22 00:38:18 +01:00
.ci make install wlc as part of the build 2015-09-04 21:08:44 +02:00
CMake make gdk-pixbuf dependency really optional 2015-12-20 17:37:52 +01:00
common replace non-standard qsort_r with qsort 2015-12-22 00:38:18 +01:00
include replace non-standard qsort_r with qsort 2015-12-22 00:38:18 +01:00
protocols remove archive from git, add *.a to gitignore 2015-12-03 15:52:21 +02:00
sway replace non-standard qsort_r with qsort 2015-12-22 00:38:18 +01:00
swaybar swaybar: Add font support 2015-12-20 18:32:54 +01:00
swaybg make gdk-pixbuf dependency really optional 2015-12-20 17:37:52 +01:00
swaygrab swaygrab: add default output filename. 2015-12-17 18:37:09 +01:00
swaylock make gdk-pixbuf dependency really optional 2015-12-20 17:37:52 +01:00
swaymsg Merge pull request #292 from christophgysin/man 2015-12-05 18:16:45 -05:00
wayland make gdk-pixbuf dependency really optional 2015-12-20 17:37:52 +01:00
.gitignore remove archive from git, add *.a to gitignore 2015-12-03 15:52:21 +02:00
.travis.yml swaybg: load more image formats with gdk-pixbuf2 2015-12-07 23:31:44 +01:00
CMakeLists.txt fix backtrace detection in CMake 2015-12-22 00:32:41 +01:00
config Add floating_modifier extension to example config 2015-12-11 18:04:27 +01:00
CONTRIBUTING.md Style fixes in swaybg 2015-11-27 16:16:54 -05:00
HACKING.md HACKING.md: Add code overview section. 2015-11-15 22:55:02 +01:00
LICENSE MIT license 2015-08-04 21:31:07 -04:00
README.md Update README screenshot 2015-12-20 09:30:13 -05:00
sway.desktop Add Wayland and Xorg session files 2015-08-20 23:12:34 +02:00

sway Donate with fosspay

"SirCmpwn's Wayland window manager" is a work in progress i3-compatible window manager for Wayland. Read the FAQ. Join the IRC channel (#sway on irc.freenode.net).

Rationale

I use i3 on xorg. Wayland is coming, and i3way still has zero lines of source code after two years.

Status

See "i3 feature support"

Installation

From Packages

sway is not supported by many distributions yet. Here's a list of packages available for you to install:

For other distros, see this wiki page.

Compiling from Source

Install dependencies:

  • cmake
  • wlc
  • wayland
  • xwayland
  • asciidoc
  • pcre
  • json-c
  • pango *
  • cairo *
  • gdk-pixbuf2 *
  • pam **

*Only required for swaybar, swaybg, and swaylock

**Only required for swaylock

Run these commands:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

On systems without logind, you need to suid the sway binary:

sudo chmod a+s /usr/local/bin/sway

Configuration

If you already use i3, then copy your i3 config to ~/.config/sway/config and it'll work out of the box. Otherwise, copy the sample configuration file to ~/.config/sway/config. It is located at /etc/sway/config, unless the DFALLBACK_CONFIG_DIR flag has been set. Run man 5 sway for information on the configuration.

Running

Instead of running startx, run sway. You can run sway from within X as well, which is useful for testing.