diff --git a/needles/gnome/apps/apps_run_seahorse.json b/needles/gnome/apps/apps_run_seahorse.json new file mode 100644 index 00000000..f0b5f69b --- /dev/null +++ b/needles/gnome/apps/apps_run_seahorse.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 271, + "ypos": 113, + "width": 142, + "height": 24, + "type": "match" + } + ], + "properties": [], + "tags": [ + "apps_run_seahorse" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/apps_run_seahorse.png b/needles/gnome/apps/apps_run_seahorse.png new file mode 100644 index 00000000..fbd4b371 Binary files /dev/null and b/needles/gnome/apps/apps_run_seahorse.png differ diff --git a/needles/gnome/apps/keyring/keyring_askpass_password-gnome.json b/needles/gnome/apps/keyring/keyring_askpass_password-gnome.json new file mode 100644 index 00000000..d4b1111d --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_askpass_password-gnome.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 226, + "ypos": 271, + "width": 164, + "height": 19, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_askpass_password" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_askpass_password-gnome.png b/needles/gnome/apps/keyring/keyring_askpass_password-gnome.png new file mode 100644 index 00000000..636024c4 Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_askpass_password-gnome.png differ diff --git a/needles/gnome/apps/keyring/keyring_askpass_yesno-gnome.json b/needles/gnome/apps/keyring/keyring_askpass_yesno-gnome.json new file mode 100644 index 00000000..487c328f --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_askpass_yesno-gnome.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 543, + "ypos": 236, + "width": 170, + "height": 21, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_askpass_yesno" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_askpass_yesno-gnome.png b/needles/gnome/apps/keyring/keyring_askpass_yesno-gnome.png new file mode 100644 index 00000000..0b66961e Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_askpass_yesno-gnome.png differ diff --git a/needles/gnome/apps/keyring/keyring_seahorse_details_shown.json b/needles/gnome/apps/keyring/keyring_seahorse_details_shown.json new file mode 100644 index 00000000..6f412dc9 --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_seahorse_details_shown.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 442, + "ypos": 261, + "width": 126, + "height": 19, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_seahorse_details_shown" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_seahorse_details_shown.png b/needles/gnome/apps/keyring/keyring_seahorse_details_shown.png new file mode 100644 index 00000000..588bda7b Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_seahorse_details_shown.png differ diff --git a/needles/gnome/apps/keyring/keyring_seahorse_login-blue.json b/needles/gnome/apps/keyring/keyring_seahorse_login-blue.json new file mode 100644 index 00000000..679544e6 --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_seahorse_login-blue.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 35, + "ypos": 121, + "width": 38, + "height": 19, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_seahorse_login" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_seahorse_login-blue.png b/needles/gnome/apps/keyring/keyring_seahorse_login-blue.png new file mode 100644 index 00000000..62dee487 Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_seahorse_login-blue.png differ diff --git a/needles/gnome/apps/keyring/keyring_seahorse_login.json b/needles/gnome/apps/keyring/keyring_seahorse_login.json new file mode 100644 index 00000000..9f46cc5c --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_seahorse_login.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 33, + "ypos": 121, + "width": 40, + "height": 21, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_seahorse_login" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_seahorse_login.png b/needles/gnome/apps/keyring/keyring_seahorse_login.png new file mode 100644 index 00000000..953556c8 Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_seahorse_login.png differ diff --git a/needles/gnome/apps/keyring/keyring_seahorse_login_details.json b/needles/gnome/apps/keyring/keyring_seahorse_login_details.json new file mode 100644 index 00000000..81bfe9fd --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_seahorse_login_details.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 338, + "ypos": 111, + "width": 169, + "height": 26, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_seahorse_login_details" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_seahorse_login_details.png b/needles/gnome/apps/keyring/keyring_seahorse_login_details.png new file mode 100644 index 00000000..d57f2c8e Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_seahorse_login_details.png differ diff --git a/needles/gnome/apps/keyring/keyring_seahorse_password_shown.json b/needles/gnome/apps/keyring/keyring_seahorse_password_shown.json new file mode 100644 index 00000000..2cea3059 --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_seahorse_password_shown.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 440, + "ypos": 262, + "width": 111, + "height": 22, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_seahorse_password_shown" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_seahorse_password_shown.png b/needles/gnome/apps/keyring/keyring_seahorse_password_shown.png new file mode 100644 index 00000000..650b445f Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_seahorse_password_shown.png differ diff --git a/needles/gnome/apps/keyring/keyring_seahorse_show_password.json b/needles/gnome/apps/keyring/keyring_seahorse_show_password.json new file mode 100644 index 00000000..c57af6b1 --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_seahorse_show_password.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 615, + "ypos": 260, + "width": 27, + "height": 26, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_seahorse_show_password" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_seahorse_show_password.png b/needles/gnome/apps/keyring/keyring_seahorse_show_password.png new file mode 100644 index 00000000..84932175 Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_seahorse_show_password.png differ diff --git a/needles/gnome/apps/keyring/keyring_sftp_logged-gnome.json b/needles/gnome/apps/keyring/keyring_sftp_logged-gnome.json new file mode 100644 index 00000000..59f1806c --- /dev/null +++ b/needles/gnome/apps/keyring/keyring_sftp_logged-gnome.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "ypos": 292, + "height": 37, + "xpos": 183, + "type": "match", + "width": 42 + } + ], + "properties": [], + "tags": [ + "keyring_sftp_logged" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/keyring/keyring_sftp_logged-gnome.png b/needles/gnome/apps/keyring/keyring_sftp_logged-gnome.png new file mode 100644 index 00000000..4d6c25b9 Binary files /dev/null and b/needles/gnome/apps/keyring/keyring_sftp_logged-gnome.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_autounlock_password.json b/needles/gnome/apps/nautilus/nautilus_autounlock_password.json new file mode 100644 index 00000000..0693b99b --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_autounlock_password.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 382, + "ypos": 434, + "width": 136, + "height": 20, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_autounlock_password" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_autounlock_password.png b/needles/gnome/apps/nautilus/nautilus_autounlock_password.png new file mode 100644 index 00000000..adc23437 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_autounlock_password.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_connection_established-20240604.json b/needles/gnome/apps/nautilus/nautilus_connection_established-20240604.json new file mode 100644 index 00000000..33f906cc --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_connection_established-20240604.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "type": "match", + "height": 21, + "xpos": 360, + "width": 141, + "ypos": 104 + } + ], + "properties": [], + "tags": [ + "nautilus_connection_established" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_connection_established-20240604.png b/needles/gnome/apps/nautilus/nautilus_connection_established-20240604.png new file mode 100644 index 00000000..8725653e Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_connection_established-20240604.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_connection_established.json b/needles/gnome/apps/nautilus/nautilus_connection_established.json new file mode 100644 index 00000000..e498f91c --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_connection_established.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 361, + "ypos": 104, + "width": 141, + "height": 21, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_connection_established" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_connection_established.png b/needles/gnome/apps/nautilus/nautilus_connection_established.png new file mode 100644 index 00000000..22a1d7d2 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_connection_established.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_enter_address-20240429.json b/needles/gnome/apps/nautilus/nautilus_enter_address-20240429.json new file mode 100644 index 00000000..f1f3dbac --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_enter_address-20240429.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 260, + "ypos": 608, + "width": 138, + "height": 20, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_enter_address" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_enter_address-20240429.png b/needles/gnome/apps/nautilus/nautilus_enter_address-20240429.png new file mode 100644 index 00000000..80ff3422 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_enter_address-20240429.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_enter_address-20240604.json b/needles/gnome/apps/nautilus/nautilus_enter_address-20240604.json new file mode 100644 index 00000000..ba99ea41 --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_enter_address-20240604.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "type": "match", + "height": 20, + "xpos": 260, + "width": 136, + "ypos": 611 + } + ], + "properties": [], + "tags": [ + "nautilus_enter_address" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_enter_address-20240604.png b/needles/gnome/apps/nautilus/nautilus_enter_address-20240604.png new file mode 100644 index 00000000..f5a0bfc9 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_enter_address-20240604.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_enter_address.json b/needles/gnome/apps/nautilus/nautilus_enter_address.json new file mode 100644 index 00000000..f66df947 --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_enter_address.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 258, + "ypos": 610, + "width": 140, + "height": 19, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_enter_address" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_enter_address.png b/needles/gnome/apps/nautilus/nautilus_enter_address.png new file mode 100644 index 00000000..1794e143 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_enter_address.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_other_locations-20240604.json b/needles/gnome/apps/nautilus/nautilus_other_locations-20240604.json new file mode 100644 index 00000000..a2553e65 --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_other_locations-20240604.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "ypos": 559, + "width": 109, + "xpos": 109, + "height": 20, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_other_locations" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_other_locations-20240604.png b/needles/gnome/apps/nautilus/nautilus_other_locations-20240604.png new file mode 100644 index 00000000..d622c020 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_other_locations-20240604.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_other_locations.json b/needles/gnome/apps/nautilus/nautilus_other_locations.json new file mode 100644 index 00000000..fdf8b540 --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_other_locations.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 109, + "ypos": 559, + "width": 109, + "height": 20, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_other_locations" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_other_locations.png b/needles/gnome/apps/nautilus/nautilus_other_locations.png new file mode 100644 index 00000000..9cfd6f93 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_other_locations.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_remember_password.json b/needles/gnome/apps/nautilus/nautilus_remember_password.json new file mode 100644 index 00000000..fb9a9001 --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_remember_password.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 381, + "ypos": 434, + "width": 142, + "height": 21, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_remember_password" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_remember_password.png b/needles/gnome/apps/nautilus/nautilus_remember_password.png new file mode 100644 index 00000000..1995eeda Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_remember_password.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_unlock-20240514.json b/needles/gnome/apps/nautilus/nautilus_unlock-20240514.json new file mode 100644 index 00000000..df320f5f --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_unlock-20240514.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "height": 17, + "ypos": 495, + "width": 52, + "type": "match", + "xpos": 587 + } + ], + "properties": [], + "tags": [ + "nautilus_unlock" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_unlock-20240514.png b/needles/gnome/apps/nautilus/nautilus_unlock-20240514.png new file mode 100644 index 00000000..25e74534 Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_unlock-20240514.png differ diff --git a/needles/gnome/apps/nautilus/nautilus_unlock.json b/needles/gnome/apps/nautilus/nautilus_unlock.json new file mode 100644 index 00000000..dbd1766a --- /dev/null +++ b/needles/gnome/apps/nautilus/nautilus_unlock.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 587, + "ypos": 495, + "width": 52, + "height": 17, + "type": "match" + } + ], + "properties": [], + "tags": [ + "nautilus_unlock" + ] +} \ No newline at end of file diff --git a/needles/gnome/apps/nautilus/nautilus_unlock.png b/needles/gnome/apps/nautilus/nautilus_unlock.png new file mode 100644 index 00000000..fac6b9aa Binary files /dev/null and b/needles/gnome/apps/nautilus/nautilus_unlock.png differ diff --git a/needles/kde/apps/keyring/keyring_askpass_confirm.json b/needles/kde/apps/keyring/keyring_askpass_confirm.json new file mode 100644 index 00000000..33fdbe4f --- /dev/null +++ b/needles/kde/apps/keyring/keyring_askpass_confirm.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 554, + "ypos": 444, + "width": 49, + "height": 20, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_askpass_confirm" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_askpass_confirm.png b/needles/kde/apps/keyring/keyring_askpass_confirm.png new file mode 100644 index 00000000..3a8c1332 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_askpass_confirm.png differ diff --git a/needles/kde/apps/keyring/keyring_askpass_password.json b/needles/kde/apps/keyring/keyring_askpass_password.json new file mode 100644 index 00000000..43e1480d --- /dev/null +++ b/needles/kde/apps/keyring/keyring_askpass_password.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 379, + "ypos": 322, + "width": 167, + "height": 19, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_askpass_password" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_askpass_password.png b/needles/kde/apps/keyring/keyring_askpass_password.png new file mode 100644 index 00000000..12784f65 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_askpass_password.png differ diff --git a/needles/kde/apps/keyring/keyring_askpass_remember.json b/needles/kde/apps/keyring/keyring_askpass_remember.json new file mode 100644 index 00000000..32334db8 --- /dev/null +++ b/needles/kde/apps/keyring/keyring_askpass_remember.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 381, + "ypos": 414, + "width": 92, + "height": 16, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_askpass_remember" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_askpass_remember.png b/needles/kde/apps/keyring/keyring_askpass_remember.png new file mode 100644 index 00000000..0b8100e4 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_askpass_remember.png differ diff --git a/needles/kde/apps/keyring/keyring_askpass_yesno-20240510.json b/needles/kde/apps/keyring/keyring_askpass_yesno-20240510.json new file mode 100644 index 00000000..ba323883 --- /dev/null +++ b/needles/kde/apps/keyring/keyring_askpass_yesno-20240510.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "ypos": 265, + "width": 118, + "height": 19, + "type": "match", + "xpos": 380 + } + ], + "properties": [], + "tags": [ + "keyring_askpass_yesno" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_askpass_yesno-20240510.png b/needles/kde/apps/keyring/keyring_askpass_yesno-20240510.png new file mode 100644 index 00000000..6d008596 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_askpass_yesno-20240510.png differ diff --git a/needles/kde/apps/keyring/keyring_askpass_yesno.json b/needles/kde/apps/keyring/keyring_askpass_yesno.json new file mode 100644 index 00000000..5b3fab4d --- /dev/null +++ b/needles/kde/apps/keyring/keyring_askpass_yesno.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "type": "match", + "xpos": 453, + "height": 19, + "ypos": 347, + "width": 138, + "match": 90 + } + ], + "properties": [], + "tags": [ + "keyring_askpass_yesno" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_askpass_yesno.png b/needles/kde/apps/keyring/keyring_askpass_yesno.png new file mode 100644 index 00000000..25f19cc7 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_askpass_yesno.png differ diff --git a/needles/kde/apps/keyring/keyring_sftp_logged.json b/needles/kde/apps/keyring/keyring_sftp_logged.json new file mode 100644 index 00000000..638737f9 --- /dev/null +++ b/needles/kde/apps/keyring/keyring_sftp_logged.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 59, + "ypos": 382, + "width": 42, + "height": 37, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_sftp_logged" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_sftp_logged.png b/needles/kde/apps/keyring/keyring_sftp_logged.png new file mode 100644 index 00000000..ebc67b88 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_sftp_logged.png differ diff --git a/needles/kde/apps/keyring/keyring_wallet_password.json b/needles/kde/apps/keyring/keyring_wallet_password.json new file mode 100644 index 00000000..ae61a077 --- /dev/null +++ b/needles/kde/apps/keyring/keyring_wallet_password.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 450, + "ypos": 284, + "width": 103, + "height": 17, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_wallet_password" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_wallet_password.png b/needles/kde/apps/keyring/keyring_wallet_password.png new file mode 100644 index 00000000..966fec19 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_wallet_password.png differ diff --git a/needles/kde/apps/keyring/keyring_wallet_password_details.json b/needles/kde/apps/keyring/keyring_wallet_password_details.json new file mode 100644 index 00000000..5c0a67bc --- /dev/null +++ b/needles/kde/apps/keyring/keyring_wallet_password_details.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 62, + "ypos": 308, + "width": 94, + "height": 16, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_wallet_password_details" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_wallet_password_details.png b/needles/kde/apps/keyring/keyring_wallet_password_details.png new file mode 100644 index 00000000..4c273090 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_wallet_password_details.png differ diff --git a/needles/kde/apps/keyring/keyring_wallet_password_reveal.json b/needles/kde/apps/keyring/keyring_wallet_password_reveal.json new file mode 100644 index 00000000..bfd41f4b --- /dev/null +++ b/needles/kde/apps/keyring/keyring_wallet_password_reveal.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 456, + "ypos": 245, + "width": 91, + "height": 19, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_wallet_password_reveal" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_wallet_password_reveal.png b/needles/kde/apps/keyring/keyring_wallet_password_reveal.png new file mode 100644 index 00000000..9588bf9d Binary files /dev/null and b/needles/kde/apps/keyring/keyring_wallet_password_reveal.png differ diff --git a/needles/kde/apps/keyring/keyring_wallet_password_stored.json b/needles/kde/apps/keyring/keyring_wallet_password_stored.json new file mode 100644 index 00000000..d3ddfb1f --- /dev/null +++ b/needles/kde/apps/keyring/keyring_wallet_password_stored.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 26, + "ypos": 284, + "width": 86, + "height": 20, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_wallet_password_stored" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_wallet_password_stored.png b/needles/kde/apps/keyring/keyring_wallet_password_stored.png new file mode 100644 index 00000000..3aa83866 Binary files /dev/null and b/needles/kde/apps/keyring/keyring_wallet_password_stored.png differ diff --git a/needles/kde/apps/keyring/keyring_wallet_passwords_unfold.json b/needles/kde/apps/keyring/keyring_wallet_passwords_unfold.json new file mode 100644 index 00000000..f2d10a73 --- /dev/null +++ b/needles/kde/apps/keyring/keyring_wallet_passwords_unfold.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 23, + "ypos": 258, + "width": 117, + "height": 18, + "type": "match" + } + ], + "properties": [], + "tags": [ + "keyring_wallet_passwords_unfold" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/keyring/keyring_wallet_passwords_unfold.png b/needles/kde/apps/keyring/keyring_wallet_passwords_unfold.png new file mode 100644 index 00000000..fc62b41e Binary files /dev/null and b/needles/kde/apps/keyring/keyring_wallet_passwords_unfold.png differ diff --git a/needles/kde/apps/kwalletmanager_runs.json b/needles/kde/apps/kwalletmanager_runs.json new file mode 100644 index 00000000..816c9ff3 --- /dev/null +++ b/needles/kde/apps/kwalletmanager_runs.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 459, + "ypos": 96, + "width": 104, + "height": 23, + "type": "match" + } + ], + "properties": [], + "tags": [ + "kwalletmanager_runs" + ] +} \ No newline at end of file diff --git a/needles/kde/apps/kwalletmanager_runs.png b/needles/kde/apps/kwalletmanager_runs.png new file mode 100644 index 00000000..f36ff905 Binary files /dev/null and b/needles/kde/apps/kwalletmanager_runs.png differ diff --git a/templates.fif.json b/templates.fif.json index c7246e4a..9c845148 100644 --- a/templates.fif.json +++ b/templates.fif.json @@ -1357,6 +1357,20 @@ "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%" } }, + "desktop_keyring": { + "profiles": { + "fedora-Workstation-live-iso-ppc64le-*-ppc64le": 20, + "fedora-Workstation-live-iso-x86_64-*-64bit": 20, + "fedora-KDE-live-iso-x86_64-*-64bit": 30, + "fedora-Workstation-raw_xz-raw.xz-aarch64-*-aarch64": 22 + }, + "settings": { + "BOOTFROM": "c", + "HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2", + "POSTINSTALL_PATH": "tests/applications/keyring", + "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%" + } + }, "desktop_update_graphical": { "profiles": { "fedora-KDE-live-iso-x86_64-*-64bit": 32, diff --git a/tests/applications/keyring/aaa_setup.pm b/tests/applications/keyring/aaa_setup.pm new file mode 100644 index 00000000..d1ea1610 --- /dev/null +++ b/tests/applications/keyring/aaa_setup.pm @@ -0,0 +1,42 @@ +use base "installedtest"; +use strict; +use testapi; +use utils; + +# This script will do the following: +# - install Seahorse when on Gnome +# - enable the sshd.service +# - create an SSH key for the installed user (~ test) +# - set up the SSH key password for that key +# - it will set a milestone + +sub run { + my $self = shift; + my $desktop = get_var("DESKTOP"); + my $user = get_var("USER") || "test"; + + # Switch to console to perform several setting tasks. + $self->root_console(tty => 3); + + # Install Seahorse on Gnome. + # On KDE, similar application is already installed in the system. + if ($desktop eq "gnome") { + assert_script_run("dnf -y install seahorse"); + } + + # Enable and start sshd.service and check that is is running. + assert_script_run("systemctl enable sshd.service --now"); + assert_script_run("systemctl status sshd.service --no-pager"); + + # Create the SSH keys with password for the regular user. + # Switch to that user's account. + assert_script_run("su $user -c 'ssh-keygen -N sshpassword -f /home/$user/.ssh/id_ed25519'"); +} + +sub test_flags { + return {fatal => 1, milestone => 1}; +} + +1; + +# vim: set sw=4 et: diff --git a/tests/applications/keyring/keyring_password.pm b/tests/applications/keyring/keyring_password.pm new file mode 100644 index 00000000..52f435d7 --- /dev/null +++ b/tests/applications/keyring/keyring_password.pm @@ -0,0 +1,174 @@ +use base "installedtest"; +use strict; +use testapi; +use utils; + +# This script will do the following: +# - it will establish a connection to the system via sftp +# - it will ask for password to the system and store that password +# - it will check that the password was stored in the keyring +# - it will reboot the system +# - it will re-establish the connection without asking for the password + +my $user = get_var("USER_LOGIN", "test"); +my $pass = get_var("USER_PASSWORD", "weakpassword"); +my $desktop = get_var("DESKTOP", "gnome"); + +# On KDE, it is possible that Konsole interacts with keyring when +# certain variables are set in the system. This subroutine sets up +# those variables. +sub export_kde_vars { + enter_cmd('export SSH_ASKPASS=/usr/bin/ksshaskpass'); + sleep 2; + enter_cmd('export SSH_ASKPASS_REQUIRE=prefer'); + sleep 2; +} + +# This will handle the connection to the localhost. The process is different +# for KDE and Gnome, as currently Gnome does not save passwords to keyring +# from terminal and the KDE has a bug KNetAttach that prevents Dolphin from +# establishing the connection like Nautilus does. +sub connect_localhost { + my $type = shift; + # For Gnome, we will use Nautilus to establish an SFTP + # connection to the localhost. + if (get_var("DESKTOP") eq "gnome") { + # Start Nautilus. + menu_launch_type("nautilus"); + assert_screen("apps_run_files"); + # Add a new network connection. + assert_and_click("nautilus_other_locations"); + assert_and_click("nautilus_enter_address"); + my $connection = "ssh://$user" . '@localhost'; + type_very_safely("$connection\n"); + # When we connect for the first time, a password + # dialogue should appear in which we need to type + # in the password. We will also try to remember the + # password and confirm the connection. + if ($type ne "reconnect") { + wait_still_screen(3); + type_very_safely($pass); + assert_and_click("nautilus_remember_password"); + assert_and_click("nautilus_unlock"); + } + # When the connection has been established, + # a new connection icon will appear. + assert_screen("nautilus_connection_established"); + } + else { + # On KDE, Dolphin has a bug that prevents the application + # from connecting easily (as in Gnome). Manually, this is + # not a big deal, as one could react accordingly, but with + # automation, this approach is basically useless. + # Therefore, we will use a different approach - we will enable + # CLI keyring integration and perform an SFTP connection + # in Konsole. + menu_launch_type("konsole"); + assert_screen("konsole_runs"); + # Export the environmental variables, this is needed for the process + # to work correctly. + export_kde_vars(); + # Connect the sftp. + my $command = "sftp $user" . '@localhost'; + enter_cmd($command); + # If performed for the first time, also deal with the + # password storing which is a little painful on KDE. + if ($type ne "reconnect") { + # First, we check that the yes no dialogue is present + # and type "yes" into it. + assert_screen("keyring_askpass_yesno"); + type_very_safely("yes\n"); + # Then similarly to Gnome, the password dialogue will appear + # and we type in the password. Also, we click on Remember + # and confirm with the OK button. + assert_screen("keyring_askpass_password"); + type_very_safely("$pass"); + assert_and_click("keyring_askpass_remember"); + assert_and_click("keyring_askpass_confirm"); + } + # Check that we have logged in and exit the application. + assert_and_click("keyring_sftp_logged"); + type_very_safely("bye\n"); + } +} + +sub check_stored { + # This subroutine will run the keyring application on either + # desktop and check that the password has been stored there. + # On KDE, we will use the KWalletManager. + if (get_var("DESKTOP") eq "kde") { + menu_launch_type("kwalletmanager"); + assert_screen("kwalletmanager_runs"); + send_key("super-pgup"); + # Navigate to the stored entry and check + # that the credentials are stored there. + assert_and_dclick("keyring_wallet_passwords_unfold"); + assert_and_dclick("keyring_wallet_password_stored"); + assert_and_click("keyring_wallet_password_details"); + assert_and_click("keyring_wallet_password_reveal"); + assert_screen("keyring_wallet_password"); + } + else { + # Start the Seahorse application and maximize it. + menu_launch_type("seahorse"); + assert_screen("apps_run_seahorse"); + send_key("super-up"); + + # Navigate to the stored entry and check + # that the credentials are stored there. + assert_and_click("keyring_seahorse_login"); + assert_and_dclick("keyring_seahorse_login_details"); + assert_screen("keyring_seahorse_details_shown"); + assert_and_click("keyring_seahorse_show_password"); + assert_screen("keyring_seahorse_password_shown"); + } +} + +sub perform_login { + my $password = shift; + send_key("ret") if ($desktop eq "gnome"); + type_very_safely("$password\n"); + wait_still_screen(3); + send_key("esc"); +} + +sub run { + my $self = shift; + + # We are still at the root console, but for the following steps, + # there is nothing we should be doing there, so we switch back + # to the graphical desktop. + desktop_vt(); + + if (check_screen("login_screen", timeout => 30)) { + perform_login($pass); + } + + # Lets connect to localhost via SSH. This should result in + # asking for a password and storing the credentials for later use. + # The following routine uses different approaches on different + # desktops. + connect_localhost("connect"); + # Check that the password has been stored. + check_stored(); + + # Reboot the machine, log onto the session again. + $self->root_console(tty => 3); + enter_cmd("reboot"); + + # Boot to login screen and type in the password. + boot_to_login_screen(); + perform_login($pass); + + # Repeat the connection procedure, but skip the password + # handling process as this will be done by the keyring. + connect_localhost("reconnect"); +} + +sub test_flags { + return {fatal => 0, always_rollback => 1}; +} + +1; + +# vim: set sw=4 et: diff --git a/tests/applications/keyring/keyring_passwordless.pm b/tests/applications/keyring/keyring_passwordless.pm new file mode 100644 index 00000000..9662b2a2 --- /dev/null +++ b/tests/applications/keyring/keyring_passwordless.pm @@ -0,0 +1,125 @@ +use base "installedtest"; +use strict; +use testapi; +use utils; + +# This script will do the following: +# - set up the system for paswordless connection using +# the SSH authorized keys. +# - open the ssh key and establish the connection +# - store that password in the keyring +# - reboot the system +# - re-establish the connection, this time without the need to open the password + +my $desktop = get_var("DESKTOP"); +my $user = get_var("USER_LOGIN", "test"); +my $pass = get_var("USER_PASSWORD", "weakpassword"); + +sub export_kde_vars { + # On KDE, it is possible to update and reuse the keyring + # on Konsole if correct environmental variables are set. + # Set them now. + enter_cmd('export SSH_ASKPASS=/usr/bin/ksshaskpass'); + sleep 2; + enter_cmd('export SSH_ASKPASS_REQUIRE=prefer'); + sleep 2; +} + +sub connect_localhost { + my $type = shift; + + # Start the terminal application. On KDE also export the variables. + if (get_var("DESKTOP") eq "gnome") { + menu_launch_type("terminal"); + assert_screen("apps_run_terminal"); + } + else { + menu_launch_type("konsole"); + assert_screen("konsole_runs"); + export_kde_vars(); + } + + # Establish the SFTP connection to the localhost. + # A dialogue should appear to collect credentials to open + # the SSH key. + my $command = "sftp $user" . '@localhost'; + enter_cmd($command); + sleep 2; + + # When connecting for the first time, we will remember + # the key password and store it in the keyring. + if ($type ne "reconnect") { + if ($desktop eq "gnome") { + type_very_safely("yes\n"); + wait_still_screen(2); + type_very_safely("sshpassword"); + assert_and_click("nautilus_autounlock_password"); + assert_and_click("nautilus_unlock"); + } + else { + type_very_safely("yes\n"); + wait_still_screen(2); + type_very_safely("sshpassword"); + assert_and_click("keyring_askpass_remember"); + assert_and_click("keyring_askpass_confirm"); + } + } + + # The connection should have been established if everything has worked + # so far. + assert_screen("keyring_sftp_logged"); + # Finish the connection. + enter_cmd("bye"); + # Exit the terminal app. + enter_cmd("exit"); +} + +sub perform_login { + my $password = shift; + send_key("ret") if ($desktop eq "gnome"); + type_very_safely("$password\n"); + wait_still_screen(3); + send_key("esc"); +} + +sub run { + my $self = shift; + + # We are still at the root console and for the following steps, + # Set up the SSH daemon + + # Authorize the SSH key. + enter_cmd("su -l $user"); + enter_cmd('echo $(cat ~/.ssh/id_ed25519.pub) > ~/.ssh/authorized_keys'); + enter_cmd("exit"); + + # Return to desktop + desktop_vt(); + + # If we arrive to a login screen, perform login + if (check_screen("login_screen", timeout => 30)) { + perform_login($pass); + } + + # Use SSH to connect to the localhost. + connect_localhost("connect"); + + # Reboot the machine. + $self->root_console(tty => 3); + enter_cmd("reboot"); + # Log in. + boot_to_login_screen(); + perform_login($pass); + + # Reconnect without using password. We still should be + # able to log in. + connect_localhost("reconnect"); +} + +sub test_flags { + return {fatal => 0, always_rollback => 1}; +} + +1; + +# vim: set sw=4 et: