192 lines
6.3 KiB
C
192 lines
6.3 KiB
C
#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",
|
||
};
|