enabled smart gap feature - no gaps for single windows within workspace

This commit is contained in:
rozodru 2025-07-20 09:22:33 -04:00
parent 7e54722940
commit 54b14309d1
2 changed files with 15 additions and 2 deletions

View File

@ -953,14 +953,21 @@ keybinding_focus_tile(struct nedm_server *server, uint32_t tile_id) {
workspace_focus_tile(tile->workspace, tile); workspace_focus_tile(tile->workspace, tile);
struct nedm_view *next_view = tile->workspace->focused_tile->view; struct nedm_view *next_view = tile->workspace->focused_tile->view;
seat_set_focus(server->seat, next_view); seat_set_focus(server->seat, next_view);
char *view_title = "";
if (next_view && next_view->impl && next_view->impl->get_title) {
char *title = next_view->impl->get_title(next_view);
view_title = title ? title : "";
}
ipc_send_event( ipc_send_event(
output->server, output->server,
"{\"event_name\":\"focus_tile\",\"old_tile_id\":%d,\"new_tile_" "{\"event_name\":\"focus_tile\",\"old_tile_id\":%d,\"new_tile_"
"id\":%d,\"old_workspace\":%d,\"new_workspace\":%d,\"old_output\":\"%" "id\":%d,\"old_workspace\":%d,\"new_workspace\":%d,\"old_output\":\"%"
"s\",\"old_output_id\":%d,\"output\":\"%s\",\"output_id\":%d}", "s\",\"old_output_id\":%d,\"output\":\"%s\",\"output_id\":%d,\"view_title\":\"%s\"}",
old_tile->id, tile->workspace->focused_tile->id, workspace->num + 1, old_tile->id, tile->workspace->focused_tile->id, workspace->num + 1,
tile->workspace->num + 1, output->name, output_get_num(output), tile->workspace->num + 1, output->name, output_get_num(output),
tile->workspace->output->name, output_get_num(tile->workspace->output)); tile->workspace->output->name, output_get_num(tile->workspace->output), view_title);
} }
void void

6
view.c
View File

@ -80,6 +80,12 @@ void
view_maximize(struct nedm_view *view, struct nedm_tile *tile) { view_maximize(struct nedm_view *view, struct nedm_tile *tile) {
uint32_t gap = view->workspace->output->server->gap_size; uint32_t gap = view->workspace->output->server->gap_size;
// Smart gaps: only apply gaps if there are multiple views in the workspace
uint32_t view_count = wl_list_length(&view->workspace->views);
if (view_count <= 1) {
gap = 0;
}
// Apply gap offset to position // Apply gap offset to position
view->ox = tile->tile.x + gap; view->ox = tile->tile.x + gap;
view->oy = tile->tile.y + gap; view->oy = tile->tile.y + gap;