Add a menu toggle for saving to the kanshi config

This commit is contained in:
Mars-Wave
2026-03-04 23:11:26 +01:00
parent e0699ff04d
commit 80fa88173b
4 changed files with 31 additions and 1 deletions
+3
View File
@@ -10,5 +10,8 @@
<key name="show-overlay" type="b">
<default>true</default>
</key>
<key name="save-kanshi-config" type="b">
<default>false</default>
</key>
</schema>
</schemalist>
+24
View File
@@ -904,6 +904,17 @@ static void overlay_selected(GSimpleAction *action, GVariant *param, gpointer da
}
}
#ifdef WITH_KANSHI
static void save_kanshi_config_selected(GSimpleAction *action, GVariant *param, gpointer data) {
struct wd_state *state = data;
if (state->settings != NULL) {
g_settings_set_boolean(state->settings, "save-kanshi-config", g_variant_get_boolean(param));
}
state->save_kanshi_config = g_variant_get_boolean(param);
g_simple_action_set_state(action, param);
}
#endif
static void window_state_changed(GtkWidget *window, GdkEventWindowState *event,
gpointer data) {
struct wd_state *state = data;
@@ -1037,6 +1048,9 @@ static void activate(GtkApplication* app, gpointer user_data) {
state->autoapply = g_settings_get_boolean(state->settings, "auto-apply");
state->capture = g_settings_get_boolean(state->settings, "capture-screens");
state->show_overlay = g_settings_get_boolean(state->settings, "show-overlay");
#ifdef WITH_KANSHI
state->save_kanshi_config = g_settings_get_boolean(state->settings, "save-kanshi-config");
#endif
}
action = g_simple_action_new_stateful("auto-apply", NULL,
@@ -1054,10 +1068,20 @@ static void activate(GtkApplication* app, gpointer user_data) {
g_signal_connect(overlay_action, "change-state", G_CALLBACK(overlay_selected), state);
g_action_map_add_action(G_ACTION_MAP(main_actions), G_ACTION(overlay_action));
#ifdef WITH_KANSHI
action = g_simple_action_new_stateful("save-kanshi-config", NULL,
g_variant_new_boolean(state->save_kanshi_config));
g_signal_connect(action, "change-state", G_CALLBACK(save_kanshi_config_selected), state);
g_action_map_add_action(G_ACTION_MAP(main_actions), G_ACTION(action));
#endif
GMenu *main_menu = g_menu_new();
g_menu_append(main_menu, "_Automatically Apply Changes", "app.auto-apply");
g_menu_append(main_menu, "_Show Screen Contents", "app.capture-screens");
g_menu_append(main_menu, "_Overlay Screen Names", "app.show-overlay");
#ifdef WITH_KANSHI
g_menu_append(main_menu, "Save to _kanshi Config", "app.save-kanshi-config");
#endif
gtk_menu_button_set_menu_model(GTK_MENU_BUTTON(state->menu_button), G_MENU_MODEL(main_menu));
gtk_menu_button_set_use_popover(GTK_MENU_BUTTON(state->menu_button), false);
+3 -1
View File
@@ -53,7 +53,9 @@ static void config_handle_succeeded(void *data,
zwlr_output_configuration_v1_destroy(config);
wd_ui_apply_done(pending->state, pending->outputs);
#ifdef WITH_KANSHI
wd_store_config(pending->state, pending->outputs);
if (pending->state->save_kanshi_config) {
wd_store_config(pending->state, pending->outputs);
}
#endif
destroy_pending(pending);
}
+1
View File
@@ -190,6 +190,7 @@ struct wd_state {
bool autoapply;
bool capture;
bool show_overlay;
bool save_kanshi_config;
double zoom;
unsigned int apply_idle;