Merge branch 'master' into render_blur_cleanup
23
README.md
|
@ -1,14 +1,9 @@
|
||||||
<div align = center>
|
<p align="center">
|
||||||
|
<img src="assets/swayfx_logo.svg" width="256" alt="swayfx logo">
|
||||||
|
</p>
|
||||||
|
|
||||||

|
---
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
https://discord.gg/qsSx397rkh
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||

|
|
||||||
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:
|
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**
|
+ **Blur**
|
||||||
|
@ -19,13 +14,15 @@ Sway is an incredible window manager, and certainly one of the most well establi
|
||||||
+ **Scratchpad treated as minimize**: Allows docks, or panels with a taskbar, to correctly interpret minimize / unminimize requests ([thanks to LCBCrion](https://github.com/swaywm/sway/issues/6457))
|
+ **Scratchpad treated as minimize**: Allows docks, or panels with a taskbar, to correctly interpret minimize / unminimize requests ([thanks to LCBCrion](https://github.com/swaywm/sway/issues/6457))
|
||||||
+ **nixify the repo**: Allows nixos users to easily contribute to and test this project
|
+ **nixify the repo**: Allows nixos users to easily contribute to and test this project
|
||||||
|
|
||||||
<span>
|
<p align="center">
|
||||||
<img src="https://repology.org/badge/vertical-allrepos/swayfx.svg" height="282"/>
|
<a href="https://repology.org/project/swayfx/versions"><img src="https://repology.org/badge/vertical-allrepos/swayfx.svg" height="282"/></a>
|
||||||
<img src="assets/swayfx_mascot.png" width="500"/>
|
<img src="assets/swayfx_screenshot.jpg" width="500"/>
|
||||||
</span>
|
</p>
|
||||||
|
|
||||||
[SwayFX is also available on the Fedora copr](https://copr.fedorainfracloud.org/coprs/swayfx/swayfx/)
|
[SwayFX is also available on the Fedora copr](https://copr.fedorainfracloud.org/coprs/swayfx/swayfx/)
|
||||||
|
|
||||||
|
[Join our Discord](https://discord.gg/qsSx397rkh)
|
||||||
|
|
||||||
## New Configuration Options
|
## New Configuration Options
|
||||||
|
|
||||||
+ Window blur:
|
+ Window blur:
|
||||||
|
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
BIN
assets/swayfx_mascot.jpg
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
assets/swayfx_mascot_1366x768.png
Normal file
After Width: | Height: | Size: 568 KiB |
BIN
assets/swayfx_mascot_1920x1080.png
Normal file
After Width: | Height: | Size: 936 KiB |
BIN
assets/swayfx_mascot_3840x2160.png
Normal file
After Width: | Height: | Size: 2.5 MiB |
BIN
assets/swayfx_mascot_4096x4096.png
Normal file
After Width: | Height: | Size: 3.7 MiB |
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 147 KiB |
|
@ -359,7 +359,9 @@ static void render_surface_iterator(struct sway_output *output,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_alpha) {
|
if (has_alpha) {
|
||||||
bool should_optimize_blur = view ? !container_is_floating(view->container) || config->blur_xray : false;
|
bool should_optimize_blur = view ?
|
||||||
|
!container_is_floating_or_child(view->container) || config->blur_xray
|
||||||
|
: false;
|
||||||
render_blur(should_optimize_blur, output, output_damage, &dst_box, &opaque_region,
|
render_blur(should_optimize_blur, output, output_damage, &dst_box, &opaque_region,
|
||||||
deco_data.corner_radius, deco_data.has_titlebar);
|
deco_data.corner_radius, deco_data.has_titlebar);
|
||||||
}
|
}
|
||||||
|
@ -734,7 +736,7 @@ static void render_saved_view(struct sway_view *view, struct sway_output *output
|
||||||
pixman_region32_init(&opaque_region);
|
pixman_region32_init(&opaque_region);
|
||||||
pixman_region32_union_rect(&opaque_region, &opaque_region, 0, 0, 0, 0);
|
pixman_region32_union_rect(&opaque_region, &opaque_region, 0, 0, 0, 0);
|
||||||
|
|
||||||
bool should_optimize_blur = !container_is_floating(view->container) || config->blur_xray;
|
bool should_optimize_blur = !container_is_floating_or_child(view->container) || config->blur_xray;
|
||||||
render_blur(should_optimize_blur, output, damage, &dst_box, &opaque_region,
|
render_blur(should_optimize_blur, output, damage, &dst_box, &opaque_region,
|
||||||
deco_data.corner_radius, deco_data.has_titlebar);
|
deco_data.corner_radius, deco_data.has_titlebar);
|
||||||
|
|
||||||
|
|
|
@ -58,12 +58,16 @@ void root_destroy(struct sway_root *root) {
|
||||||
/* Set minimized state from scratchpad container `show` state */
|
/* Set minimized state from scratchpad container `show` state */
|
||||||
static void root_scratchpad_set_minimize(struct sway_container *con, bool minimize) {
|
static void root_scratchpad_set_minimize(struct sway_container *con, bool minimize) {
|
||||||
if (con->view) {
|
if (con->view) {
|
||||||
struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel = con->view->foreign_toplevel;
|
#if HAVE_XWAYLAND
|
||||||
|
|
||||||
if (wlr_surface_is_xwayland_surface(con->view->surface)) {
|
if (wlr_surface_is_xwayland_surface(con->view->surface)) {
|
||||||
struct wlr_xwayland_surface *xsurface = wlr_xwayland_surface_from_wlr_surface(con->view->surface);
|
struct wlr_xwayland_surface *xsurface
|
||||||
|
= wlr_xwayland_surface_from_wlr_surface(con->view->surface);
|
||||||
wlr_xwayland_surface_set_minimized(xsurface, minimize);
|
wlr_xwayland_surface_set_minimized(xsurface, minimize);
|
||||||
} else if (foreign_toplevel) {
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel = NULL;
|
||||||
|
if ((foreign_toplevel = con->view->foreign_toplevel)) {
|
||||||
wlr_foreign_toplevel_handle_v1_set_minimized(foreign_toplevel, minimize);
|
wlr_foreign_toplevel_handle_v1_set_minimized(foreign_toplevel, minimize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|