我正在寻找一种方法来确定 Gnome 密钥环是否已解锁;主要是默认的。我非常接近使用secret-tool
,但如果密钥环被锁定,它仍然会显示一个对话框。
我不想要求用户解锁密钥环。
要么被锁,要么被解锁,故事结束。目的是避免用户必须了解或考虑钥匙圈。如果密钥环被锁定,则执行一件事(删除所有密钥环),如果密钥环被解锁,则执行另一件事(正常进行),所有这些都在后台默默进行。
所以问题是,哪种工具实际上允许进行此类检查?我已经准备好了脚本的其余部分,我只需要一个沉默的替换secret-tool
.
答案1
Gnome 钥匙圈工具(我做了一些小工具来检查和控制 gnome 密钥环)
来源及发布:https://github.com/intika/gnome-keyring-tools
锁定钥匙圈 - gkey-lock.c
#include <stdio.h>
#include <gnome-keyring.h>
int main() {
GnomeKeyringResult lock_result = gnome_keyring_lock_all_sync();
if (lock_result == GNOME_KEYRING_RESULT_OK) {
printf("Successfully locked\n");
return 0;
} else {
printf("Error locking keyring: %d\n", lock_result);
return 1;
}
}
解锁钥匙圈 - gkey-unlock.c
#include <stdio.h>
#include <gnome-keyring.h>
int main() {
GnomeKeyringResult lock_result = gnome_keyring_unlock_sync(NULL,NULL);
if (lock_result == GNOME_KEYRING_RESULT_OK) {
printf("Successfully unlocked\n");
return 0;
} else {
printf("Error unlocking keyring: %d\n", lock_result);
return 1;
}
}
检查密钥环 - gkey-check.c
#include <stdio.h>
#include <gnome-keyring.h>
int main() {
GnomeKeyringInfo *info;
GnomeKeyringResult gkr;
gkr = gnome_keyring_get_info_sync(NULL, &info);
if (gkr != GNOME_KEYRING_RESULT_OK) {
printf("error\n");
return -1;
}
if (gnome_keyring_info_get_is_locked(info)) {
printf("locked\n");
return 0;
}
else {
printf("unlocked\n");
return -1;
}
gnome_keyring_info_free(info);
}
如何建造
cc gkey-lock.c -o gkey-lock -Wall -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgnome-keyring -lglib-2.0
cc gkey-unlock.c -o gkey-unlock -Wall -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgnome-keyring -lglib-2.0
cc gkey-check.c -o gkey-check -Wall -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgnome-keyring -lglib-2.0
奖励 - 使用 Python 检查 - gkey-check.py
import gnomekeyring
print gnomekeyring.get_info_sync(gnomekeyring.get_default_keyring_sync()).get_is_locked()
奖励 II - 在 KDE 任务栏/托盘中监控 Gnome 密钥环状态
除了字符串之外,我在解锁时还犯了 gkey-check 返回错误,unlocked
然后我可以使用 KDEServer Status
小部件通过可视图标监视密钥环状态锁定/解锁:) 使用命令gkey-check