自动文件加密/解密:检测文件在 Mate/Gnome 应用程序中是否关闭

自动文件加密/解密:检测文件在 Mate/Gnome 应用程序中是否关闭

我正在编写一个 bash 脚本,用于自动解密文件进行编辑,并在文件关闭后将其加密。文件类型可以是任何类型:纯文本、办公文档等。我在 Linux Mint 上使用 Mate。

我陷入了困境:无法可靠地检测文件是否在应用程序中关闭,以便脚本可以继续对其进行加密并删除解密版本。

脚本的第一个版本只是将 vim 用于文本文件。脚本直接调用它,直到 vim 关闭后才继续运行。现在,我想对其他文件也这样做,于是我尝试了以下方法:

xdg-open:调用与文件类型关联的应用程序后立即退出。因此脚本继续运行,但没有任何效果。

xdg-open 修改了调用关联应用程序的函数:在当前脚本内运行它,因此现在我看到程序退出。仅在应用程序尚未运行的情况下才有效。如果已运行,则新进程完成并且脚本继续。

所以我现在想做的是观察已在运行的应用程序中文件是否以某种方式关闭。目前正在尝试使用 pluma/gedit 和 inotifywait。它也不起作用 - 文件打开后立即检测到 CLOSE_NOWRITE、CLOSE 事件。

有没有可能在没有针对不同应用程序的特定钩子的情况下检测到这种情况?可能是一些 X 钩子?

谢谢。

答案1

不,没有针对此类情况的 X 钩子。您需要针对每个应用程序执行特定操作,因为它们处理文件访问的方式各不相同。

答案2

最简单的方法是“自动文件加密/解密”加密你的分区,这样你每次保存文件时,所有文件都会被(重新)加密

另一种方法是使用相同的编辑程序(如自由办公室

或者使用困难的方法..使用 NAUTILUS(GNOME 文件管理器)中 CONTEXTUAL MENU 中的 SCRIPT 选项,您需要创建一个 Decrypt_Encrypt BASH 脚本并将其放入:

~/.local/share/nautilus/scripts

该 BASH 脚本必须执行以下操作:

将你之前加密的文件解密为纯文本文件

存储纯文本时间戳数据(在变量中)

使用编辑程序打开纯文本(然后编辑并将其保存为纯文本)

检查编辑程序是否仍在运行,每秒执行以下命令:

pgrep -a editProgramName

如果编辑程序已关闭且 plainText 具有较新的时间戳,则重新加密 plainText

删除纯文本

然后每次你想要编辑一个文件时,只需使用上下文菜单(鼠标右键)在 NAUTILUS 中选择该文件,然后从该菜单中选择脚本选项,选择你的脚本

相关内容