我正在使用Python編寫壁紙管理器。我將這個項目的目標鎖定爲Linux,並希望使腳本容易陷入自動啓動文件(如.xinitrc等)中。我希望實現的是可以通過輸入命令來產生諸如功能的主機...使用shell命令更改正在運行的程序行爲
<wallpaper_manager_program> --reject (load new wallpaper, delete previously displayed)
<wallpaper_manager_program> --next-image
<wallpaper_manager_program> --prev-image
<wallpaper_manager_program> --randomize-image
<wallpaper_manager_program> --change [specific-image-file]
<wallpaper_manager_program> --update (pull down new wallpapers from a chosen url)
等從外殼雖然程序已經運行。用戶可以使用他們喜歡的任何鍵綁定工具(例如xbindkeys,Unity等)來包裝各種命令。哪個是我的問題最合適的IPC方法?概括地說,我想:
- 爲未來的功能,隨着時間的推移
- 安全性(例如,讓人們的圖像沒有得到意外刪除或有人與同時被讀取配置文件搞混覆蓋)
- 輕量級(沒有佔用系統資源,因爲該程序是後臺管理器;而不是花哨的Windows管理器...)
- 響應式(以便如果有人發出拒絕命令,命令將立即完成,而不是下一次例行調用的迭代)
我並不十分關心獲取應用程序進行相互通信需要付出多少努力,但顯然寧願使用不那麼麻煩的方法,因爲該程序沒有存儲任何有關個人的重要數據或做任何非常重要的事情(很好,這取決於你如何看待你的背景圖像......)
作爲澄清:我不是要求從Python腳本調用shell命令,而是如何從shell中更改我的腳本行爲。
編輯:問題的 當初在問,我不知道IPC一般等有精緻的部分,以反映(希望)更具體的探究哪些IPC的做法將是最適合這個項目。
您是否可以在每次重新加載壁紙操作之前從配置文件加載壁紙的設置。然後,用戶可以修改配置,並在加載新壁紙之前由腳本獲取。 –
我想過在配置文件中每隔一段時間檢查一次「拒絕」選項,但這意味着您需要確保在意外(或惡意)的情況下不會不必要地刪除人們的壁紙,並且不會立即(至少從我想要實現它的角度來看:將您的主要功能放在睡眠延遲上,然後檢查該文件)。 – RJS
要發送到牆紙管理器的信息有多複雜?你是否需要它能夠處理從shell發送給它的大量不同命令,還是隻需要響應一個簡單的'--reject'命令? –