您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

dedaemon.js 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/usr/bin/env node
  2. var syscheck = require("./js/syscheck");
  3. var parseConf = require("./js/parse-conf");
  4. var async = require("./js/async");
  5. var udev = require("./udev");
  6. var modules = {
  7. display: require("./modules/display"),
  8. input: require("./modules/input"),
  9. wallpaper: require("./modules/wallpaper"),
  10. process: require("./modules/process"),
  11. };
  12. if (!process.argv[2]) {
  13. console.error("Usage:", process.argv[1], "<config file>");
  14. console.error(" ", process.argv[1], "list");
  15. process.exit(1);
  16. }
  17. var config;
  18. function createLogger(name) {
  19. function log(pre, msg) {
  20. console.error(pre+msg.join(" "));
  21. }
  22. return {
  23. info: (...msg) => log(name+": INFO: ", msg),
  24. warn: (...msg) => log(name+": WARNING: ", msg),
  25. error: (...msg) => log(name+": ERROR: ", msg),
  26. }
  27. }
  28. function startAll() {
  29. Object.keys(modules).forEach(i => {
  30. var mod = modules[i];
  31. var conf = config[i];
  32. if (conf instanceof Array && conf.length === 0)
  33. return;
  34. mod.start(conf, createLogger(i), modules);
  35. });
  36. }
  37. function stopAll(cb) {
  38. var keys = Object.keys(modules);
  39. var next = async(keys.length, cb);
  40. keys.forEach(i => modules[i].stop(next));
  41. }
  42. function onTerm() {
  43. console.error("Exiting...");
  44. stopAll(() => process.exit(1));
  45. udev.exit();
  46. }
  47. if (process.argv[2] === "list") {
  48. console.error("display:");
  49. modules.display.list(() => {
  50. console.error("input:");
  51. modules.input.list(() => {
  52. udev.exit();
  53. process.exit(0);
  54. });
  55. });
  56. } else {
  57. var config = parseConf(process.argv[2]);
  58. syscheck(ok => {
  59. if (ok)
  60. startAll();
  61. else
  62. console.error("Missing binaries, exiting.");
  63. });
  64. process.on("SIGTERM", onTerm);
  65. process.on("SIGINT", onTerm);
  66. }