Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. var spawn = require("child_process").spawn;
  2. var fs = require("fs");
  3. var pathlib = require("path");
  4. var debounce = require("../../js/debounce");
  5. exports.start = start;
  6. exports.stop = stop;
  7. exports.event = event;
  8. var conf;
  9. var logger;
  10. var modules;
  11. function runFeh() {
  12. var mode;
  13. logger.info("Setting background to", conf.path);
  14. switch (conf.mode) {
  15. case "scale":
  16. case undefined:
  17. mode = "--bg-scale";
  18. break;
  19. case "center":
  20. mode = "--bg-center";
  21. break;
  22. case "fill":
  23. mode = "--bg-fill";
  24. break;
  25. case "max":
  26. mode = "--bg-max";
  27. break;
  28. case "tile":
  29. mode = "--bg-tile";
  30. break;
  31. default:
  32. return logger.error("Invalid mode: "+conf.mode);
  33. }
  34. var child = spawn("feh", [ mode, conf.path ]);
  35. child.stdout.on("data", d =>
  36. logger.info("feh stdout:", d.toString().trim()));
  37. child.stderr.on("data", d =>
  38. logger.info("feh stderr:", d.toString().trim()));
  39. }
  40. function start(conf_, logger_, modules_) {
  41. conf = conf_ || conf;
  42. logger = logger_ || logger;
  43. modules = modules_ || modules;
  44. if (!conf.path)
  45. return logger.error("Expected conf.path");
  46. var dirname = pathlib.dirname(conf.path);
  47. var basename = pathlib.basename(conf.path);
  48. var run = debounce(runFeh, 10);
  49. fs.watch(dirname, (evt, name) => {
  50. if (name !== basename || evt !== "change")
  51. return;
  52. run();
  53. });
  54. }
  55. function stop(cb) {
  56. cb();
  57. }
  58. function event(name, ...params) {
  59. switch (name) {
  60. case "reload":
  61. runFeh();
  62. break;
  63. default:
  64. logger.warn("Unknown event:", name);
  65. }
  66. }