Go to file
2022-11-11 21:28:32 -05:00
.builds Revert "merge sway master" 2022-08-15 00:54:07 -04:00
.github Added GitHub build and copr actions 2022-11-04 22:12:08 +01:00
assets removed unused assets 2022-10-18 01:03:28 -04:00
build-scripts Added more packaged file locations to %files 2022-11-04 22:05:39 +01:00
client cairo: Replace <cairo/cairo.h> by <cairo.h> 2021-05-10 10:28:32 +02:00
common Add safety assert in parse_movement_unit 2022-01-16 19:26:57 +01:00
completions Revert "merge sway master" 2022-08-15 00:54:07 -04:00
contrib Revert "merge sway master" 2022-08-15 00:54:07 -04:00
include feat: added support for external textures 2022-11-11 21:24:42 -05:00
protocols Add support for linux-dmabuf surface hints 2021-12-13 09:59:33 -06:00
sway style: shader style fixes 2022-11-11 21:28:32 -05:00
swaybar Revert "merge sway master" 2022-08-15 00:54:07 -04:00
swaymsg Revert "merge sway master" 2022-08-15 00:54:07 -04:00
swaynag Revert "merge sway master" 2022-08-15 00:54:07 -04:00
.editorconfig Create .editorconfig 2016-07-04 14:12:32 +02:00
.gitignore Added initial spec file 2022-11-04 21:39:11 +01:00
config.in added corner_radius documentation 2022-08-21 17:28:59 -04:00
CONTRIBUTING.md Fix IRC links in READMEs and templates 2021-05-26 08:25:13 +02:00
flake.lock added nix flake 2022-04-27 14:31:46 -04:00
flake.nix updated flake for revert to 1.7 2022-08-15 00:59:43 -04:00
LICENSE MIT license 2017-01-06 13:45:48 -05:00
meson.build Revert "merge sway master" 2022-08-15 00:54:07 -04:00
meson_options.txt build: compile with swaybar 2022-10-09 11:51:40 -04:00
README.md Per application color saturation support (#21) 2022-11-11 19:38:09 -05:00
sway.desktop Update language in sway.desktop & sway(1) 2019-03-10 15:09:52 -04:00

SwayFX: A Beautiful Sway Fork

Sway is an incredible window manager, and certainly one of the most well established wayland window managers. However, it is restricted to only include the functionality that existed in i3. This fork ditches the simple wlr_renderer, and replaces it with our fx_renderer, capable of rendering with fancy GLES2 effects. This, along with a couple of minor changes, expands sway's featureset to include the following:

  • Anti-aliased rounded corners, borders, and titlebars
  • Per application saturation control: Allows the user to set the saturation (Digital Vibrance) for specific applications. Great for some FPS games!
  • Scratchpad treated as minimize: Allows docks, or panels with a taskbar, to correctly interpret minimize / unminimize requests (thanks to LCBCrion)
  • Add a nix flake to the repo: Allows nixos users to easily contribute to and test this project

New Configuration Options

  • Corner radius: corner_radius <val>
  • Application saturation: for_window [CRITERIA HERE] saturation <set|plus|minus> <val 0.0 <-> 2.0>

Roadmap

  • fade in / out animations
  • window movement animations
  • drop shadows
  • blur

Installation

Compiling from Source

This project contains a nix flake for those who have the nix package manager installed. This flake handles installing the below dependencies when nix develop is ran inside of the project root. Otherwise, the below dependencies must be installed prior to building and running this project.

Install dependencies:

  • meson *
  • wlroots
  • wayland
  • wayland-protocols *
  • pcre
  • json-c
  • pango
  • cairo
  • gdk-pixbuf2 (optional: system tray)
  • [scdoc] (optional: man pages) *
  • git (optional: version info) *

* Compile-time dep

Run these commands:

meson build/
ninja -C build/
sudo ninja -C build/ install

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

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

SwayFX will drop root permissions shortly after startup.

Contributing

SwayFX would love to receive any new features that you're willing to build! Generally, we'd like to focus on eye-candy type improvements to keep our scope appropriate. If you'd like to build something that you think may be out of that focus, please raise an issue and we can discuss whether or not it will fit within this project.

Here's a quick outline of where most of our changes lie vs the main sway repository:

  • sway/desktop/render.c: the file that handles calling fx_renderer to render to the screen, handles damage tracking and scaling
  • sway/desktop/fx_renderer.c: the meat and potatoes of this project, structured as similarly to wlr_renderer as possible
  • sway/desktop/shaders: where all of the shaders that fx_renderer uses live