You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DWM中用C语言配置maim格式字符串实现截图快捷键

DWM中配置maim截图快捷键的正确方法

你的问题出在DWM执行外部命令的逻辑上:它不会像Bash那样解析~(家目录)、$(date)(命令替换)这类shell特殊语法,直接把整个字符串当成maim的参数传入,自然无法正常工作。

下面是两种可行的解决方法:

方法一:通过Bash执行命令(最简便)

把命令交给bash来解析执行,修改代码为:

static const char *maim[] = {"bash", "-c", "maim ~/Screenshots/$(date +%F-%H_%M_%S).png", NULL};

原理:让DWM调用bash程序,用-c参数传递完整的命令字符串,bash会自动解析~和$(date)这些语法。

方法二:手动处理路径与日期(无shell依赖)

如果不想依赖bash,可以用C语言生成带日期的文件名,在快捷键的回调逻辑中动态处理:

  1. 先定义基础命令数组:
static const char *maim_raw[] = {"maim", NULL};
  1. 在自定义的快捷键回调或修改后的spawn逻辑里,生成目标文件名:
char filename[256];
time_t t = time(NULL);
strftime(filename, sizeof(filename), "%Y-%m-%d-%H_%M_%S.png", localtime(&t));
char path[256];
snprintf(path, sizeof(path), "%s/Screenshots/%s", getenv("HOME"), filename);
// 构造最终执行的参数数组
const char *args[] = {"maim", path, NULL};
spawn(args); // 调用DWM自带的spawn函数执行命令

这种方法更复杂,但完全不依赖shell环境。

额外注意事项

  • 提前创建截图存储目录,避免maim报错:mkdir -p ~/Screenshots
  • 在DWM的keys数组中绑定快捷键,示例:
{ MODKEY|ShiftMask, XK_s, spawn, {.v = maim} },

内容的提问来源于stack exchange,提问作者YukaMax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:15:31