Go to file
2023-04-15 19:55:47 -04:00
.github ver: bump to 0.2 (#87) 2023-03-10 22:51:11 -05:00
assets removed unused assets 2022-10-18 01:03:28 -04:00
build-scripts Fixed PKGBUILD trying to build with wlroots0.15 (#125) 2023-03-16 14:00:14 -04:00
client rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
common rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
completions rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
contrib rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
include structure: moved fx_renderer and related fuctions to a folder 2023-04-06 20:30:42 -04:00
protocols rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
sway style: moved border_thickness out of render_shadow 2023-04-15 19:55:47 -04:00
swaybar upstream update: merge sway 1.8.1 (#111) 2023-02-14 10:51:29 -05:00
swaymsg rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
swaynag rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
.editorconfig Create .editorconfig 2016-07-04 14:12:32 +02:00
.gitignore Updated build scripts 2022-11-14 17:58:48 -05:00
config.in Extend minimize logic to work with XWayland and XDG applications (#132) 2023-03-26 11:44:21 -04:00
CONTRIBUTING.md Fix IRC links in READMEs and templates 2021-05-26 08:25:13 +02:00
flake.lock chore: update flake to base on nixpkgs sway-1.8 (#100) 2023-01-19 17:27:13 -05:00
flake.nix fix: updated flake 2023-03-18 01:59:12 -04:00
LICENSE MIT license 2017-01-06 13:45:48 -05:00
meson.build ver: bump to 0.2 (#87) 2023-03-10 22:51:11 -05:00
meson_options.txt build: compile with swaybar 2022-10-09 11:51:40 -04:00
README.md updated docs from on|off to enable|disable 2023-04-06 20:36:18 -04:00
sway.desktop Rename .desktop name to SwayFX (#84) 2023-01-04 17:22:10 -05:00

SwayFX: A Beautiful Sway Fork

swayfx_screenshot 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
  • Shadows
  • Dim unfocused windows
  • 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)
  • nixify the repo: Allows nixos users to easily contribute to and test this project

New Configuration Options

  • Corner radius: corner_radius <val>
  • Smart corner radius: smart_corner_radius enable|disable
  • Window shadows:
    • shadows enable|disable
    • shadows_on_csd enable|disable (Note: The shadow might not fit some windows)
    • shadow_blur_radius <integer value 0 - 100>
    • shadow_color <hex color with alpha> ex, #0000007F
  • Dim unfocused windows:
    • default_dim_inactive <float value 0.0 - 1.0>
    • for_window [CRITERIA_HERE] dim_inactive <float value 0.0 - 1.0>
    • dim_inactive_colors.unfocused <hex color> ex, #000000FF
    • dim_inactive_colors.urgent <hex color> ex, #900000FF
  • Application saturation: for_window [CRITERIA HERE] saturation <set|plus|minus> <val 0.0 <-> 2.0>
  • Keep/remove separator border between titlebar and content: titlebar_separator enable|disable
  • Treat Scratchpad as minimized: scratchpad_minimize enable|disable

Roadmap

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

Installation

Packaging status

Nix

If you have Nix installed, you can build and run SwayFX easily:

nix build
./result/bin/sway

You can also bring up a development shell and follow the build instructions below, without installing all of the dependencies manually:

nix develop

Compiling from Source

Install dependencies:

  • meson *
  • wlroots
  • wayland
  • wayland-protocols *
  • pcre2
  • 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

Please join our (for the time being very small) Discord server for development chatter! https://discord.gg/R5hYhC2BFg