stuff
This commit is contained in:
@@ -49,6 +49,9 @@ static const absn_keybind keybinds[] = {
|
|||||||
{ ALT, XKB_KEY_j, cycle_focus, { .i = +1 } },
|
{ ALT, XKB_KEY_j, cycle_focus, { .i = +1 } },
|
||||||
{ ALT, XKB_KEY_k, cycle_focus, { .i = -1 } },
|
{ ALT, XKB_KEY_k, cycle_focus, { .i = -1 } },
|
||||||
|
|
||||||
|
{ ALT | SHIFT, XKB_KEY_j, swap_focus, { .i = +1 } },
|
||||||
|
{ ALT | SHIFT, XKB_KEY_k, swap_focus, { .i = -1 } },
|
||||||
|
|
||||||
{ ALT, XKB_KEY_f, toggle_fullscreen, { 0 } },
|
{ ALT, XKB_KEY_f, toggle_fullscreen, { 0 } },
|
||||||
|
|
||||||
{ ALT, XKB_KEY_h, increase_master_count, { .i = +1 } },
|
{ ALT, XKB_KEY_h, increase_master_count, { .i = +1 } },
|
||||||
|
|||||||
@@ -6,7 +6,10 @@
|
|||||||
void run(absn_server *server, const absn_arg *arg);
|
void run(absn_server *server, const absn_arg *arg);
|
||||||
|
|
||||||
void kill_focus(absn_server *server, const absn_arg *arg);
|
void kill_focus(absn_server *server, const absn_arg *arg);
|
||||||
|
|
||||||
void cycle_focus(absn_server *server, const absn_arg *arg);
|
void cycle_focus(absn_server *server, const absn_arg *arg);
|
||||||
|
void swap_focus(absn_server *server, const absn_arg *arg);
|
||||||
|
|
||||||
void toggle_fullscreen(absn_server *server, const absn_arg *arg);
|
void toggle_fullscreen(absn_server *server, const absn_arg *arg);
|
||||||
|
|
||||||
void increase_master_width(absn_server *server, const absn_arg *arg);
|
void increase_master_width(absn_server *server, const absn_arg *arg);
|
||||||
|
|||||||
+34
-5
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "focus.h"
|
#include "focus.h"
|
||||||
#include "layout.h"
|
#include "layout.h"
|
||||||
|
#include "output.h"
|
||||||
#include "toplevel.h"
|
#include "toplevel.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ kill_focus(absn_server *server, const absn_arg *arg)
|
|||||||
void
|
void
|
||||||
cycle_focus(absn_server *server, const absn_arg *arg)
|
cycle_focus(absn_server *server, const absn_arg *arg)
|
||||||
{
|
{
|
||||||
absn_toplevel *toplevel = focus_get_topmost(server);
|
absn_toplevel *toplevel = server->focused_toplevel;
|
||||||
if (!toplevel || toplevel->fullscreen)
|
if (!toplevel || toplevel->fullscreen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -48,16 +49,12 @@ cycle_focus(absn_server *server, const absn_arg *arg)
|
|||||||
if (arg->i > 0) {
|
if (arg->i > 0) {
|
||||||
wl_list_for_each(new_focus, &toplevel->link, link)
|
wl_list_for_each(new_focus, &toplevel->link, link)
|
||||||
{
|
{
|
||||||
if (&new_focus->link == &toplevel->server->toplevels)
|
|
||||||
continue;
|
|
||||||
if (toplevel->workspace == new_focus->workspace)
|
if (toplevel->workspace == new_focus->workspace)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wl_list_for_each_reverse(new_focus, &toplevel->link, link)
|
wl_list_for_each_reverse(new_focus, &toplevel->link, link)
|
||||||
{
|
{
|
||||||
if (&new_focus->link == &toplevel->server->toplevels)
|
|
||||||
continue;
|
|
||||||
if (toplevel->workspace == new_focus->workspace)
|
if (toplevel->workspace == new_focus->workspace)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -65,6 +62,38 @@ cycle_focus(absn_server *server, const absn_arg *arg)
|
|||||||
focus_toplevel(new_focus);
|
focus_toplevel(new_focus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
swap_focus(absn_server *server, const absn_arg *arg)
|
||||||
|
{
|
||||||
|
|
||||||
|
absn_toplevel *toplevel = server->focused_toplevel;
|
||||||
|
if (!toplevel || toplevel->fullscreen || toplevel->floating)
|
||||||
|
return;
|
||||||
|
|
||||||
|
absn_toplevel *swapped;
|
||||||
|
if (arg->i > 0) {
|
||||||
|
wl_list_for_each(swapped, &toplevel->link, link)
|
||||||
|
{
|
||||||
|
if (toplevel->workspace == swapped->workspace)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
wl_list_remove(&toplevel->link);
|
||||||
|
wl_list_insert(&swapped->link, &toplevel->link);
|
||||||
|
} else {
|
||||||
|
wl_list_for_each_reverse(swapped, &toplevel->link, link)
|
||||||
|
{
|
||||||
|
if (toplevel->workspace == swapped->workspace)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
wl_list_remove(&swapped->link);
|
||||||
|
wl_list_insert(&toplevel->link, &swapped->link);
|
||||||
|
}
|
||||||
|
|
||||||
|
layout_arrange(swapped->output);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
toggle_fullscreen(absn_server *server, const absn_arg *arg)
|
toggle_fullscreen(absn_server *server, const absn_arg *arg)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "output.h"
|
||||||
#include "toplevel.h"
|
#include "toplevel.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user