检查 Gnome 钥匙圈是否已解锁?

Dig*_*Man 5 gnome gnome-keyring

我正在寻找一种方法来确定 Gnome 钥匙圈是否已解锁;主要是默认的。我非常接近使用secret-tool,但是如果钥匙圈被锁定,它仍然会显示一个对话框。

我不想要求用户解锁钥匙圈。

故事的结尾要么被锁定,要么被解锁。目的是避免用户不得不知道或考虑钥匙圈。如果钥匙圈被锁定,做一件事(删除所有钥匙圈),如果钥匙圈被解锁,做另一件事(照常进行),一切都在后台静默。

所以问题是,哪个工具实际上允许这种检查?我已经准备好了脚本的其余部分,我只需要无声地替换secret-tool.

int*_*ika 4

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

解锁钥匙圈 - 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

检查密钥环 - 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);

}
Run Code Online (Sandbox Code Playgroud)

如何建造

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
Run Code Online (Sandbox Code Playgroud)

奖励 - 使用 Python 检查 - gkey-check.py

import gnomekeyring
print gnomekeyring.get_info_sync(gnomekeyring.get_default_keyring_sync()).get_is_locked()
Run Code Online (Sandbox Code Playgroud)

奖励 II - 在 KDE 任务栏/托盘中监控 Gnome 密钥环状态

除了字符串之外,我在解锁时还犯了 gkey-check 返回错误,unlocked然后我可以使用 KDEServer Status小部件通过可视图标监视密钥环状态锁定/解锁:) 使用命令gkey-check