前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用dart脚本执行xmodmap

利用dart脚本执行xmodmap

原创
作者头像
用户8146329
修改2021-01-18 11:29:55
8490
修改2021-01-18 11:29:55
举报
文章被收录于专栏:dart

dart脚本做运维也很爽,如下是我运行xmodmap的样例。

在Ubuntu 20.04中.xsession,.xinitrc等都不起作用了,如果有谁有方法利用.xsession等可以使得linux自动在图形界面登录后运行xmodmap还请告知。我暂时用dart脚本搞定。具体思路是在bashrc中执行dart脚本,如果.xmodmap被访问的时间小于系统启动时间,则说明系统启动时xmodmap没有执行,则执行xmodmap并更新.xmodmap的被访问时间。如此可以保证xmodmap在系统启动后执行且只执行一次。dart就当个加强版的bash用即可。

在bashrc中添加

dart run /home/dart/.xmodmap.dart > /tmp/xmodmap.dart.out

.xmodmap.dart中代码如下:

import 'dart:io';

void main(List<String> args) async {

var result = await Process.run("uptime", ["-s"]);

var str = (result.stdout as String).trim();

var uptime = DateTime.parse(str);

print("uptime in text:$uptime");

print("uptime in millis:${uptime.millisecondsSinceEpoch}");

var mapFileStr = "/home/cc/.xmodmap";

var mapFile = File(mapFileStr);

var lastAccess = await mapFile.lastAccessed();

print("lastAccess in text:$lastAccess");

print("lastAccess in millis:${lastAccess.millisecondsSinceEpoch}");

if (lastAccess.millisecondsSinceEpoch < uptime.millisecondsSinceEpoch) {

await Process.run("xmodmap", [mapFileStr]);

await Process.run("touch", [mapFileStr]);

print("xmodmap done!");

}

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档