diff options
| author | Abhinav <abhinav.prsai@gmail.com> | 2025-06-24 16:56:23 +0100 |
|---|---|---|
| committer | Abhinav <abhinav.prsai@gmail.com> | 2025-06-24 16:56:23 +0100 |
| commit | 8418960055da3337e767afb49f59c7eec229dc3c (patch) | |
| tree | 6555adbe7dd562018d358b2b3df69f590bcb413b /src | |
| parent | de5be2ff9d3e8d0c0f3c725a9fb9ea7046c12862 (diff) | |
add window centering
the user can now center any floating window with default bind
centre_window
Diffstat (limited to 'src')
| -rw-r--r-- | src/defs.h | 3 | ||||
| -rw-r--r-- | src/parser.c | 3 | ||||
| -rw-r--r-- | src/sxwm.c | 17 |
3 files changed, 20 insertions, 3 deletions
@@ -119,6 +119,7 @@ typedef struct { Bool enabled; } Scratchpad; +extern void centre_window(); extern void close_focused(void); extern void dec_gaps(void); extern void focus_next(void); @@ -139,4 +140,4 @@ extern void resize_stack_add(void); extern void resize_stack_sub(void); extern void toggle_floating(void); extern void toggle_floating_global(void); -extern void toggle_fullscreen(void);
\ No newline at end of file +extern void toggle_fullscreen(void); diff --git a/src/parser.c b/src/parser.c index eb0b1a8..79cf29b 100644 --- a/src/parser.c +++ b/src/parser.c @@ -37,6 +37,7 @@ static const struct { {"toggle_floating", toggle_floating}, {"global_floating", toggle_floating_global}, {"fullscreen", toggle_fullscreen}, + {"centre_window", centre_window}, {NULL, NULL}}; static void remap_and_dedupe_binds(Config *cfg) @@ -691,4 +692,4 @@ const char **build_argv(const char *cmd) free(tmp); return argv; #endif -}
\ No newline at end of file +} @@ -38,6 +38,7 @@ #include "parser.h" Client *add_client(Window w, int ws); +/* void centre_window(); */ void change_workspace(int ws); int clean_mask(int mask); /* void close_focused(void); */ @@ -253,6 +254,20 @@ Client *add_client(Window w, int ws) return c; } +void centre_window() +{ + if (!focused || !focused->mapped || !focused->floating) { + return; + } + + int x = mons[focused->mon].x + (mons[focused->mon].w - focused->w) / 2; + int y = mons[focused->mon].y + (mons[focused->mon].h - focused->h) / 2; + + focused->x = x; + focused->y = y; + XMoveWindow(dpy, focused->win, x, y); +} + void change_workspace(int ws) { if (ws >= NUM_WORKSPACES || ws == current_ws) { @@ -2657,4 +2672,4 @@ int main(int ac, char **av) printf("sxwm: starting...\n"); run(); return 0; -}
\ No newline at end of file +} |
