Skip to content

Commit dd6f3f7

Browse files
author
raveit65
committed
workspace-switcher: support i3 WM
Fixes #711
1 parent 496ac68 commit dd6f3f7

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

Diff for: applets/wncklet/workspace-switcher.c

+23
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ typedef enum {
4949
PAGER_WM_MARCO,
5050
PAGER_WM_METACITY,
5151
PAGER_WM_COMPIZ,
52+
PAGER_WM_I3,
5253
PAGER_WM_UNKNOWN
5354
} PagerWM;
5455

@@ -74,6 +75,7 @@ typedef struct {
7475
GtkWidget* num_workspaces_spin;
7576
GtkWidget* workspaces_tree;
7677
GtkListStore* workspaces_store;
78+
GtkCellRenderer* cell;
7779

7880
GtkOrientation orientation;
7981
int n_rows; /* for vertical layout this is cols */
@@ -99,6 +101,8 @@ static void pager_update(PagerData* pager)
99101
wnck_pager_set_display_mode(WNCK_PAGER(pager->pager), pager->display_mode);
100102
else if (pager->wm == PAGER_WM_METACITY)
101103
wnck_pager_set_display_mode(WNCK_PAGER(pager->pager), pager->display_mode);
104+
else if (pager->wm == PAGER_WM_I3)
105+
wnck_pager_set_display_mode(WNCK_PAGER(pager->pager), pager->display_mode);
102106
else
103107
wnck_pager_set_display_mode(WNCK_PAGER(pager->pager), WNCK_PAGER_DISPLAY_CONTENT);
104108
}
@@ -116,6 +120,7 @@ static void update_properties_for_wm(PagerData* pager)
116120
gtk_widget_show(pager->workspace_names_scroll);
117121
if (pager->display_workspaces_toggle)
118122
gtk_widget_show(pager->display_workspaces_toggle);
123+
g_object_set (pager->cell, "editable", TRUE, NULL);
119124
break;
120125
case PAGER_WM_METACITY:
121126
if (pager->workspaces_frame)
@@ -126,6 +131,20 @@ static void update_properties_for_wm(PagerData* pager)
126131
gtk_widget_show(pager->workspace_names_scroll);
127132
if (pager->display_workspaces_toggle)
128133
gtk_widget_show(pager->display_workspaces_toggle);
134+
g_object_set (pager->cell, "editable", TRUE, NULL);
135+
break;
136+
case PAGER_WM_I3:
137+
if (pager->workspaces_frame)
138+
gtk_widget_show(pager->workspaces_frame);
139+
if (pager->num_workspaces_spin)
140+
gtk_widget_set_sensitive(pager->num_workspaces_spin, FALSE);
141+
if (pager->workspace_names_label)
142+
gtk_widget_hide(pager->workspace_names_label);
143+
if (pager->workspace_names_scroll)
144+
gtk_widget_hide(pager->workspace_names_scroll);
145+
if (pager->display_workspaces_toggle)
146+
gtk_widget_show(pager->display_workspaces_toggle);
147+
g_object_set (pager->cell, "editable", FALSE, NULL);
129148
break;
130149
case PAGER_WM_COMPIZ:
131150
if (pager->workspaces_frame)
@@ -136,6 +155,7 @@ static void update_properties_for_wm(PagerData* pager)
136155
gtk_widget_hide(pager->workspace_names_scroll);
137156
if (pager->display_workspaces_toggle)
138157
gtk_widget_hide(pager->display_workspaces_toggle);
158+
g_object_set (pager->cell, "editable", FALSE, NULL);
139159
break;
140160
case PAGER_WM_UNKNOWN:
141161
if (pager->workspaces_frame)
@@ -164,6 +184,8 @@ static void window_manager_changed(WnckScreen* screen, PagerData* pager)
164184
pager->wm = PAGER_WM_MARCO;
165185
else if (strcmp(wm_name, "Metacity") == 0)
166186
pager->wm = PAGER_WM_METACITY;
187+
else if (strcmp(wm_name, "i3") == 0)
188+
pager->wm = PAGER_WM_I3;
167189
else if (strcmp(wm_name, "Compiz") == 0)
168190
pager->wm = PAGER_WM_COMPIZ;
169191
else
@@ -926,6 +948,7 @@ static void setup_dialog(GtkBuilder* builder, PagerData* pager)
926948
g_object_unref(pager->workspaces_store);
927949

928950
cell = g_object_new(GTK_TYPE_CELL_RENDERER_TEXT, "editable", TRUE, NULL);
951+
pager->cell = cell;
929952
column = gtk_tree_view_column_new_with_attributes("workspace", cell, "text", 0, NULL);
930953
gtk_tree_view_append_column(GTK_TREE_VIEW(pager->workspaces_tree), column);
931954
g_signal_connect(cell, "edited", (GCallback) workspace_name_edited, pager);

0 commit comments

Comments
 (0)