Go to file
Rolf Vidar Mazunki Hoksaas 271af3d474
enhancement: update version printing format (#254)
* enhancement: update version printing format

as mentioned in #253, version numbers can be confusing if you don't know
or realize you're running SwayFX instead of standard sway.

to fix this issue, I've updated the way we display versions, replacing
"sway version X" to "swayfx version X", suffixed by the sway upstream
version which swayfx is based upon.

while not immediately displaying we come from swayfx in
swaymsg/swaynag/swaybar, we do display we're based off a specific
upstream sway version.

note: this requires updating `meson.build` (currently `meson.build:181`)
each time we rebase into a new sway version.

Closes: Issue #253
Signed-off-by: Mazunki Hoksaas <rolferen@gmail.com>

* reduce linelength

---------

Signed-off-by: Mazunki Hoksaas <rolferen@gmail.com>
2024-02-14 21:29:04 -05:00
.github Fixed AUR Github Action not including sway-portals.conf (#247) 2023-12-03 18:46:09 +01:00
assets replace mascot art (#205) 2023-07-23 22:08:35 -04:00
build-scripts Fixed AUR Github Action not including sway-portals.conf (#247) 2023-12-03 18:46:09 +01: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 Fixed #258 blur regression (#261) 2024-01-05 02:47:43 -05:00
protocols rebase: Sway 1.8 (#78) 2023-01-04 17:32:43 -05:00
sway enhancement: update version printing format (#254) 2024-02-14 21:29:04 -05:00
swaybar enhancement: update version printing format (#254) 2024-02-14 21:29:04 -05:00
swaymsg enhancement: update version printing format (#254) 2024-02-14 21:29:04 -05:00
swaynag enhancement: update version printing format (#254) 2024-02-14 21:29:04 -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 default scratchpad_minimize to false and add warning 2023-06-02 18:56:43 -04:00
CONTRIBUTING.md Fix IRC links in READMEs and templates 2021-05-26 08:25:13 +02:00
flake.lock flake: remove libinput patch (#163) 2023-05-21 10:04:34 -04:00
flake.nix flake: remove libinput patch (#163) 2023-05-21 10:04:34 -04:00
INSTALL-deb.md Added guide for Debian users (#268) 2024-02-14 21:27:51 -05:00
LICENSE MIT license 2017-01-06 13:45:48 -05:00
meson.build enhancement: update version printing format (#254) 2024-02-14 21:29:04 -05:00
meson_options.txt build: compile with swaybar 2022-10-09 11:51:40 -04:00
README.md Added guide for Debian users (#268) 2024-02-14 21:27:51 -05:00
sway.desktop Rename .desktop name to SwayFX (#84) 2023-01-04 17:22:10 -05:00

swayfx logo


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:

  • Blur
  • 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

SwayFX is also available on the Fedora copr

Join our Discord

New Configuration Options

  • Window blur:
    • blur enable|disable
    • blur_xray enable|disable: this will set floating windows to blur based on the background, not the windows below. You probably want to set this to disable :)
    • blur_passes <integer value 0 - 10>
    • blur_radius <integer value 0 - 10>
    • blur_noise <float value 0 - 1> (Note: git only, percentage of noise to add)
    • blur_brightness <float value 0 - 2> (Note: git only, percentage of original brightness to adjust)
    • blur_contrast <float value 0 - 2> (Note: git only, percentage of original contrast to adjust)
    • blur_saturation <float value 0 - 2> (Note: git only, percentage of original saturation to adjust)
  • Corner radius: corner_radius <val>
  • 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
    • shadow_offset <x offset> <y offset>
    • shadow_inactive_color <hex color with alpha> ex, #0000007F
  • LayerShell effects (to blur panels / notifications etc):
    • layer_effects <layer namespace> <effects>
    • The current layer namespaces can be shown with swaymsg -r -t get_outputs | jq '.[0].layer_shell_surfaces | .[] | .namespace'
    • Example: layer_effects "waybar" blur enable; shadows enable; corner_radius 6
      • Note: If an application uses gtk, its namespace is likely to be "gtk-layer-shell"
    • SwayIPC Example: swaymsg "layer_effects 'waybar' 'blur enable; shadows enable; corner_radius 6'"
    • Available Effects:
      • blur <enable|disable>
      • blur_ignore_transparent <enable|disable>
      • shadows <enable|disable>
      • corner_radius <int>
  • 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: we recommend keeping this setting off, as there are many kinks to iron out here

Roadmap

  • fade in / out animations
  • window movement animations

Compiling From Source

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

Debian

Check INSTALL-deb.md

Manual Steps

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/fx_renderer.c: the meat and potatoes of this project, structured as similarly to wlr_renderer as possible
  • sway/desktop/fx_renderer/shaders: where all of the shaders that fx_renderer uses live

Acknowledgements

The SwayFX team would like to first and foremost thank the maintainers and contributors of the Sway window manager. We are but a humble group of Sway enthusiasts who wanted to expand upon your creation.

We would also like to thank the talented artists in our community for contibuting the visual assets that give this project charm:

Lastly, we would like to thank you, the community, for enjoying and using window manager that we have spent so much time maintaining.