Compare commits

...

3 commits

Author SHA1 Message Date
DreamMaoMao
918a00d578 opt: allow switch focus between fullscreen and floating window in focusstack 2025-10-27 12:46:04 +08:00
DreamMaoMao
04e3bd6861 opt: delay 1ms before exit when mmsg send request 2025-10-27 12:29:41 +08:00
DreamMaoMao
6ab7f822c1 update readme 2025-10-27 12:22:59 +08:00
6 changed files with 18 additions and 2 deletions

View file

@ -37,6 +37,9 @@ Layer animaiton
https://github.com/user-attachments/assets/014c893f-115c-4ae9-8342-f9ae3e9a0df0
# Our discord
[mangowc](https://discord.gg/CPjbDxesh5)
# Supported layouts
- tile

View file

@ -6,6 +6,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wayland-client.h>
#include <wayland-util.h>
@ -373,6 +374,7 @@ static void dwl_ipc_output_frame(void *data,
dispatch_arg3, dispatch_arg4, dispatch_arg5);
}
wl_display_flush(display);
usleep(1000);
exit(0);
} else {
if (tflag) {

View file

@ -212,7 +212,7 @@ int focusstack(const Arg *arg) {
Client *sel = focustop(selmon);
Client *tc = NULL;
if (!sel || (sel->isfullscreen && !client_has_children(sel)))
if (!sel)
return 0;
if (arg->i == NEXT) {
tc = get_next_stack_client(sel, false);

View file

@ -343,11 +343,17 @@ Client *get_next_stack_client(Client *c, bool reverse) {
Client *next = NULL;
if (reverse) {
wl_list_for_each_reverse(next, &c->link, link) {
if (c->mon->has_visible_fullscreen_client && !next->isfloating &&
!next->isfullscreen)
continue;
if (VISIBLEON(next, c->mon) && next != c)
return next;
}
} else {
wl_list_for_each(next, &c->link, link) {
if (c->mon->has_visible_fullscreen_client && !next->isfloating &&
!next->isfullscreen)
continue;
if (VISIBLEON(next, c->mon) && next != c)
return next;
}

View file

@ -592,6 +592,7 @@ arrange(Monitor *m, bool want_animation) {
return;
m->visible_clients = 0;
m->visible_tiling_clients = 0;
m->has_visible_fullscreen_client = false;
wl_list_for_each(c, &clients, link) {
@ -603,6 +604,10 @@ arrange(Monitor *m, bool want_animation) {
if (VISIBLEON(c, m)) {
m->visible_clients++;
if (c->isfullscreen)
m->has_visible_fullscreen_client = true;
if (ISTILED(c)) {
m->visible_tiling_clients++;
}

View file

@ -443,6 +443,7 @@ struct Monitor {
int asleep;
unsigned int visible_clients;
unsigned int visible_tiling_clients;
bool has_visible_fullscreen_client;
struct wlr_scene_optimized_blur *blur;
char last_surface_ws_name[256];
struct wlr_ext_workspace_group_handle_v1 *ext_group;
@ -4531,7 +4532,6 @@ void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带
wlr_scene_node_raise_to_top(&c->scene->node); // 将视图提升到顶层
resize(c, c->mon->m, 1);
c->isfullscreen = 1;
// c->isfloating = 0;
} else {
c->bw = c->isnoborder ? 0 : borderpx;
c->isfullscreen = 0;