Files
zswm/src/config.h

192 lines
6.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
#include <X11/XF86keysym.h>
#include <X11/keysym.h>
#include <stdbool.h>
#include <stdint.h>
#include <xcb/xproto.h>
#include "action.h"
#include "layout.h"
#include "types.h"
/* 壁纸列表,支持通配符和 shell 环境变量拼接 */
const char *wallpapers[] = {};
/* 壁纸切换间隔单位0 表示不切换 */
const uint32_t wallpaper_interval = 0;
/**
* @brief 屏幕 tags 设置
* @description 每个屏幕的 tags 配置为字符串数组,以 NULL 结束,如
* {"1", "2", "3", "4", "5", "6", NULL}
*
* 每一项配置里面的数组个数表示对应的屏幕个数,并最后以 NULL 结束,
*
* 如一个屏幕应该配置为 {{"1", "2", "3", "4", NULL}, NULL}
* 两个屏幕应该配置为 {{"1", "2", "3", NULL}, {"1", "2", NULL}, NULL},以此类推
*/
const char *const *const *const monitor_tags[] = {
(const char *const *const[]){
(const char *const[]){"1", "2", "3", "4", "5", "6", NULL},
NULL,
},
(const char *const *const[]){
(const char *const[]){"1", "2", "3", NULL},
(const char *const[]){"1", "2", "3", "4", "5", NULL},
NULL,
},
};
/**
* @brief 默认屏幕 tags 设置
* @description 若屏幕个数与 monitor_tags 中设置的所有配置项都不符,
* 则所有屏幕的 tags 都使用这个默认配置
*
* 格式为字符串数组,以 NULL 标志结束,如 {"1", "2", "3", NULL}
*/
const char *const default_monitor_tags[] = {
"1", "2", "3", "4", "5", "6", "7", "8", "9", NULL,
};
const layout_t layouts[] = {
{"[]=", tile},
{"[M]", monocle},
{"><>", NULL},
};
/* 默认 tags 规则 */
const rule_tag_t browser_tag[] = {
{.monitor_index = 0, .tags = 1 << 1},
{0},
};
const rule_tag_t mpv_tag[] = {
{.monitor_amount = 1, .monitor_index = 0, .tags = 1 << 3},
{.monitor_amount = 2, .monitor_index = 1, .tags = 1 << 2},
{0},
};
const rule_tag_t emacs_tag[] = {
{.monitor_amount = 1, .monitor_index = 0, .tags = 1 << 2},
{.monitor_amount = 2, .monitor_index = 1, .tags = 1 << 1},
{0},
};
/* 新建窗口规则 */
const rule_t rules[] = {
{.class = "firefox", .action = {.maximize = true}, .tag = browser_tag},
{.class = "Google-chrome", .action = {.maximize = true}, .tag = browser_tag},
{.class = "mpv", .action = {.fullscreen = true}, .tag = mpv_tag},
{
.class = "Emacs",
.action = {.switch_to_tag = true, .maximize = true},
.tag = emacs_tag,
},
};
#define MODIFIER_ANY XCB_MOD_MASK_ANY
#define SUPER XCB_MOD_MASK_4
#define ALT XCB_MOD_MASK_1
#define CTRL XCB_MOD_MASK_CONTROL
#define SHIFT XCB_MOD_MASK_SHIFT
#define BUTTON_ANY XCB_BUTTON_INDEX_ANY
#define BUTTON_LEFT XCB_BUTTON_INDEX_1
#define BUTTON_RIGHT XCB_BUTTON_INDEX_2
#define BUTTON_MIDDLE XCB_BUTTON_INDEX_3
const char launcher[] =
"rofi -show combi -modes window,drun,run,ssh,combi,windowcd";
const keybinding_t keys[] = {
{SUPER, XK_p, spawn, {.ptr = launcher}},
{SUPER, XK_Return, spawn, {.ptr = "st"}},
{SUPER | SHIFT, XK_q, quit, {.b = false}},
{SUPER | CTRL, XK_r, quit, {.b = true}},
{SUPER | SHIFT, XK_c, kill_client, {0}},
{ALT, XK_j, focus_stack, {.b = true}},
{ALT, XK_k, focus_stack, {.b = false}},
{SUPER | SHIFT, XK_j, focus_monitor, {.b = true}},
{SUPER | SHIFT, XK_k, focus_monitor, {.b = false}},
{SUPER, XK_o, move_to_monitor, {.b = true}},
{
SUPER,
XK_a,
raise_or_run,
{.ptr = (char *[]){"Google-chrome", "google-chrome-stable"}},
},
{
SUPER,
XK_e,
raise_or_run,
{.ptr = (char *[]){"Emacs", "emacsclient -a '' -c -n"}},
},
{ALT | CTRL, XK_r, raise_or_run, {.ptr = (char *[]){"St", "st"}}},
{SUPER, XK_q, raise_or_run, {.ptr = (char *[]){"firefox", "firefox-bin"}}},
{SUPER, XK_Up, change_volume, {.i = 1}},
{SUPER, XK_Down, change_volume, {.i = -1}},
{SUPER | SHIFT, XK_m, toggle_mute, {0}},
{0, XF86XK_AudioRaiseVolume, change_volume, {.i = 1}},
{0, XF86XK_AudioLowerVolume, change_volume, {.i = -1}},
{0, XF86XK_AudioMute, toggle_mute, {0}},
{SUPER, XK_1, select_tag, {.ui = 1 << 0}},
{SUPER, XK_2, select_tag, {.ui = 1 << 1}},
{SUPER, XK_3, select_tag, {.ui = 1 << 2}},
{SUPER, XK_4, select_tag, {.ui = 1 << 3}},
{SUPER, XK_5, select_tag, {.ui = 1 << 4}},
{SUPER, XK_6, select_tag, {.ui = 1 << 5}},
{SUPER, XK_7, select_tag, {.ui = 1 << 6}},
{SUPER, XK_8, select_tag, {.ui = 1 << 7}},
{SUPER, XK_9, select_tag, {.ui = 1 << 8}},
{SUPER | SHIFT, XK_1, move_to_tag, {.ui = 1 << 0}},
{SUPER | SHIFT, XK_2, move_to_tag, {.ui = 1 << 1}},
{SUPER | SHIFT, XK_3, move_to_tag, {.ui = 1 << 2}},
{SUPER | SHIFT, XK_4, move_to_tag, {.ui = 1 << 3}},
{SUPER | SHIFT, XK_5, move_to_tag, {.ui = 1 << 4}},
{SUPER | SHIFT, XK_6, move_to_tag, {.ui = 1 << 5}},
{SUPER | SHIFT, XK_7, move_to_tag, {.ui = 1 << 6}},
{SUPER | SHIFT, XK_8, move_to_tag, {.ui = 1 << 7}},
{SUPER | SHIFT, XK_9, move_to_tag, {.ui = 1 << 8}},
};
const button_t buttons[] = {
{click_tag, 0, BUTTON_LEFT, select_tag, {0}},
{click_tag, SUPER, BUTTON_LEFT, move_to_tag, {0}},
};
const char *const bar_bg = "#222222";
const char *const tag_bg = "#222222";
const char *const active_tag_bg = "#005577";
const char *const tag_color = "#bbbbbb";
const char *const active_tag_color = "#eeeeee";
const char *const layout_color = "#bbbbbb";
const char *const client_name_bg = "#222222";
const char *const client_name_color = "#bbbbbb";
const char *const active_client_name_bg = "#005577";
const char *const active_client_name_color = "#eeeeee";
const char *const status_net_recv_color = "#87af5f";
const char *const status_net_send_color = "#e54c62";
const char *const status_volume_color = "#7493d2";
const char *const status_memory_color = "#e0da37";
const char *const status_cpu_color = "#e33a6e";
const char *const status_datetime_color = "#7788af";
const char *const border_color = "#444444";
const char *const active_border_color = "#005577";
const char *const default_font_family = "sans-serif, monospace";
const uint32_t default_font_size = 10;
const uint32_t dpi_fallback = 96;
const uint32_t refresh_rate = 60;
const uint32_t bar_y_padding = 1;
const uint32_t tag_x_padding = 10;
const uint32_t layout_symbol_x_padding = 10;
const uint32_t client_name_x_padding = 10;
const uint32_t status_x_padding = 4;
const uint32_t status_icon_padding = 2;
const uint32_t border_width = 1;
const char *autostart_list[] = {
"gentoo-pipewire-launcher restart",
"picom -b --backend xrender",
};