mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-10-29 05:40:21 -04:00
feat: add global option center_master_overspread
This commit is contained in:
parent
03eee2f4f1
commit
d2b3e3a70b
3 changed files with 19 additions and 4 deletions
|
|
@ -196,6 +196,7 @@ typedef struct {
|
||||||
float default_mfact;
|
float default_mfact;
|
||||||
float default_smfact;
|
float default_smfact;
|
||||||
unsigned int default_nmaster;
|
unsigned int default_nmaster;
|
||||||
|
int center_master_overspread;
|
||||||
|
|
||||||
unsigned int hotarea_size;
|
unsigned int hotarea_size;
|
||||||
unsigned int enable_hotarea;
|
unsigned int enable_hotarea;
|
||||||
|
|
@ -1198,6 +1199,8 @@ void parse_config_line(Config *config, const char *line) {
|
||||||
config->default_smfact = atof(value);
|
config->default_smfact = atof(value);
|
||||||
} else if (strcmp(key, "default_nmaster") == 0) {
|
} else if (strcmp(key, "default_nmaster") == 0) {
|
||||||
config->default_nmaster = atoi(value);
|
config->default_nmaster = atoi(value);
|
||||||
|
} else if (strcmp(key, "center_master_overspread") == 0) {
|
||||||
|
config->center_master_overspread = atoi(value);
|
||||||
} else if (strcmp(key, "hotarea_size") == 0) {
|
} else if (strcmp(key, "hotarea_size") == 0) {
|
||||||
config->hotarea_size = atoi(value);
|
config->hotarea_size = atoi(value);
|
||||||
} else if (strcmp(key, "enable_hotarea") == 0) {
|
} else if (strcmp(key, "enable_hotarea") == 0) {
|
||||||
|
|
@ -2350,6 +2353,7 @@ void override_config(void) {
|
||||||
default_mfact = CLAMP_FLOAT(config.default_mfact, 0.1f, 0.9f);
|
default_mfact = CLAMP_FLOAT(config.default_mfact, 0.1f, 0.9f);
|
||||||
default_smfact = CLAMP_FLOAT(config.default_smfact, 0.1f, 0.9f);
|
default_smfact = CLAMP_FLOAT(config.default_smfact, 0.1f, 0.9f);
|
||||||
default_nmaster = CLAMP_INT(config.default_nmaster, 1, 1000);
|
default_nmaster = CLAMP_INT(config.default_nmaster, 1, 1000);
|
||||||
|
center_master_overspread = CLAMP_INT(config.center_master_overspread, 0, 1);
|
||||||
new_is_master = CLAMP_INT(config.new_is_master, 0, 1);
|
new_is_master = CLAMP_INT(config.new_is_master, 0, 1);
|
||||||
|
|
||||||
// 概述模式设置
|
// 概述模式设置
|
||||||
|
|
@ -2497,6 +2501,8 @@ void set_value_default() {
|
||||||
config.default_mfact = default_mfact; // master 窗口比例
|
config.default_mfact = default_mfact; // master 窗口比例
|
||||||
config.default_smfact = default_smfact; // 第一个stack比例
|
config.default_smfact = default_smfact; // 第一个stack比例
|
||||||
config.default_nmaster = default_nmaster; // 默认master数量
|
config.default_nmaster = default_nmaster; // 默认master数量
|
||||||
|
config.center_master_overspread =
|
||||||
|
center_master_overspread; // 中心master时是否铺满
|
||||||
|
|
||||||
config.numlockon = numlockon; // 是否打开右边小键盘
|
config.numlockon = numlockon; // 是否打开右边小键盘
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ unsigned int new_is_master = 1; // 新窗口是否插在头部
|
||||||
double default_mfact = 0.55f; // master 窗口比例
|
double default_mfact = 0.55f; // master 窗口比例
|
||||||
double default_smfact = 0.5f; // 第一个stack窗口比例
|
double default_smfact = 0.5f; // 第一个stack窗口比例
|
||||||
unsigned int default_nmaster = 1; // 默认master数量
|
unsigned int default_nmaster = 1; // 默认master数量
|
||||||
|
int center_master_overspread = 1; // 中心master时是否铺满
|
||||||
/* logging */
|
/* logging */
|
||||||
int log_level = WLR_ERROR;
|
int log_level = WLR_ERROR;
|
||||||
unsigned int numlockon = 1; // 是否打开右边小键盘
|
unsigned int numlockon = 1; // 是否打开右边小键盘
|
||||||
|
|
|
||||||
|
|
@ -460,23 +460,31 @@ void center_tile(Monitor *m) {
|
||||||
my = gappov;
|
my = gappov;
|
||||||
tw = mw;
|
tw = mw;
|
||||||
|
|
||||||
if (n > nmasters) {
|
// 判断是否需要主区域铺满
|
||||||
// 计算主区域宽度
|
int should_overspread = center_master_overspread && (n <= nmasters);
|
||||||
|
|
||||||
|
if (n > nmasters || !should_overspread) {
|
||||||
|
// 计算主区域宽度(居中模式)
|
||||||
mw = nmasters ? (m->w.width - 2 * gappoh - gappih) * mfact : 0;
|
mw = nmasters ? (m->w.width - 2 * gappoh - gappih) * mfact : 0;
|
||||||
|
|
||||||
if (n - nmasters > 1) {
|
if (n - nmasters > 1) {
|
||||||
// 多个堆叠窗口:主区域居中,左右两侧各有一个堆叠区域
|
// 多个堆叠窗口:主区域居中,左右两侧各有一个堆叠区域
|
||||||
tw = (m->w.width - mw - 2 * gappoh - gappih) / 2;
|
tw = (m->w.width - mw - 2 * gappoh - gappih) / 2;
|
||||||
mx = gappoh + tw + gappih;
|
mx = gappoh + tw + gappih;
|
||||||
} else {
|
} else if (n - nmasters == 1) {
|
||||||
// 单个堆叠窗口:主区域居中,堆叠窗口在左,右边空着
|
// 单个堆叠窗口:主区域居中,堆叠窗口在左,右边空着
|
||||||
tw = (m->w.width - mw - 2 * gappoh - gappih) / 2;
|
tw = (m->w.width - mw - 2 * gappoh - gappih) / 2;
|
||||||
mx = gappoh + tw + gappih;
|
mx = gappoh + tw + gappih;
|
||||||
|
} else {
|
||||||
|
// 只有主区域窗口:居中显示
|
||||||
|
tw = (m->w.width - mw - 2 * gappoh - gappih) / 2;
|
||||||
|
mx = gappoh + tw + gappih;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 所有窗口都在主区域
|
// 主区域铺满模式(只有主区域窗口时)
|
||||||
mw = m->w.width - 2 * gappoh;
|
mw = m->w.width - 2 * gappoh;
|
||||||
mx = gappoh;
|
mx = gappoh;
|
||||||
|
tw = 0; // 堆叠区域宽度为0
|
||||||
}
|
}
|
||||||
|
|
||||||
oty = gappov;
|
oty = gappov;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue