]> git.lizzy.rs Git - bspwm.git/commitdiff
New message: `send_desktop_to`
authorBastien Dejean <nihilhill@gmail.com>
Sun, 2 Jun 2013 09:15:19 +0000 (11:15 +0200)
committerBastien Dejean <nihilhill@gmail.com>
Sun, 2 Jun 2013 09:15:19 +0000 (11:15 +0200)
README.md
bash_completion
bspwm.1
messages.c
types.h

index 90097c8af8c9fd4f5c2b7171b5d7378b30a12af6..cd7c676192744246f5555c763a37e67ac1307c30 100644 (file)
--- a/README.md
+++ b/README.md
@@ -167,6 +167,8 @@ The following messages are handled:
 
 - `remove_desktop DESKTOP_NAME ...` — Remove the given desktops.
 
+- `send_desktop_to MONITOR_NAME` — Send the current desktop to the given monitor.
+
 - `cycle_monitor next|prev` — Select the next or previous monitor.
 
 - `cycle_desktop next|prev [--skip-free|--skip-occupied]` — Select the next or previous desktop.
index c728a3d2adac3384be59359dbcc2b61898952f68..eaf2ea556c50944e7a09daf83ba907f451f4d6c3 100644 (file)
@@ -1,6 +1,6 @@
 _bspc()
 {
-    local messages='get set list list_desktops list_monitors list_windows list_rules list_history presel cancel ratio pad focus shift swap push pull cycle nearest biggest circulate grab_pointer track_pointer ungrab_pointer toggle_fullscreen toggle_floating toggle_locked toggle_visibility close kill send_to drop_to send_to_monitor drop_to_monitor use use_monitor alternate alternate_desktop alternate_monitor add add_in rename_monitor rename remove_desktop cycle_monitor cycle_desktop layout cycle_layout rotate flip balance rule remove_rule put_status adopt_orphans restore_layout restore_history quit'
+    local messages='get set list list_desktops list_monitors list_windows list_rules list_history presel cancel ratio pad focus shift swap push pull cycle nearest biggest circulate grab_pointer track_pointer ungrab_pointer toggle_fullscreen toggle_floating toggle_locked toggle_visibility close kill send_to drop_to send_to_monitor drop_to_monitor use use_monitor alternate alternate_desktop alternate_monitor add add_in rename_monitor rename remove_desktop send_desktop_to cycle_monitor cycle_desktop layout cycle_layout rotate flip balance rule remove_rule put_status adopt_orphans restore_layout restore_history quit'
 
     local settings='focused_border_color active_border_color normal_border_color presel_border_color focused_locked_border_color active_locked_border_color normal_locked_border_color urgent_border_color border_width window_gap split_ratio top_padding right_padding bottom_padding left_padding wm_name borderless_monocle gapless_monocle focus_follows_pointer adaptative_raise apply_shadow_property auto_alternate focus_by_distance'
 
diff --git a/bspwm.1 b/bspwm.1
index 51f82a8c0fb52d2b5a9f8a89cae3e810c6504fdc..b738150c145dd71c778dc14e3368363a70633596 100644 (file)
--- a/bspwm.1
+++ b/bspwm.1
@@ -230,6 +230,9 @@ Rename the desktop named CURRENT_NAME to NEW_NAME.
 .BI remove_desktop " DESKTOP_NAME ..."
 Remove the given desktops.
 .TP
+.BI send_desktop_to " MONITOR_NAME"
+Send the current desktop to the given monitor.
+.TP
 .BI cycle_monitor " next|prev"
 Select the next or previous monitor.
 .TP
index 7f055d99cece4ffd8f409fbc5cc092a03dbbe087..4e8fc789d2e2d19801800d812eb38cda41e80e84 100644 (file)
@@ -435,6 +435,19 @@ void process_message(char *msg, char *rsp)
         desktop_show(mon->desk);
         update_current();
         return;
+    } else if (strcmp(cmd, "send_desktop_to") == 0) {
+        if (mon->desk_head == mon->desk_tail)
+            return;
+        char *name = strtok(NULL, TOK_SEP);
+        if (name != NULL) {
+            monitor_t *m = find_monitor(name);
+            if (m != NULL) {
+                transfer_desktop(mon, m, mon->desk);
+                desktop_show(mon->desk);
+                update_current();
+            }
+        }
+        return;
     } else if (strcmp(cmd, "focus") == 0) {
         if (mon->desk->focus == NULL || mon->desk->focus->client->fullscreen)
             return;
diff --git a/types.h b/types.h
index f9da7f6ac7d3ce93d6dc7465491a08e59715aef3..f908dae9126af8e6f33effdda7f714539a5b5f90 100644 (file)
--- a/types.h
+++ b/types.h
@@ -257,6 +257,7 @@ void add_desktop(monitor_t *, desktop_t *);
 void empty_desktop(desktop_t *);
 void unlink_desktop(monitor_t *, desktop_t *);
 void remove_desktop(monitor_t *, desktop_t *);
+void transfer_desktop(monitor_t *, monitor_t *, desktop_t *);
 rule_t *make_rule(void);
 pointer_state_t *make_pointer_state(void);
 client_t *make_client(xcb_window_t);