feat: 同步openkkylin代码
|
@ -35,7 +35,8 @@ auth_cb (PasswdHandler *passwd_handler,
|
|||
|
||||
if (error){
|
||||
secondary_text = error->message;
|
||||
printf("%s\n", secondary_text);
|
||||
char ** lines = g_strsplit(secondary_text, "\n", -1);
|
||||
printf("%s\n", lines[0]);
|
||||
qApp->exit(1);
|
||||
} else {
|
||||
passwd_change_password (passwd_handler, pwd, chpasswd_cb, NULL);
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "run-passwd.h"
|
||||
|
||||
|
||||
/* Buffer size for backend output */
|
||||
#define BUFSIZE 64
|
||||
#define BUFSIZE 1024
|
||||
|
||||
/* Passwd states */
|
||||
//后端passwd的状态,NONE应该是passwd还没有启动,ERROR表示报错但还没退出
|
||||
|
@ -43,6 +44,7 @@ struct PasswdHandler {
|
|||
|
||||
GIOChannel *backend_stdin;
|
||||
GIOChannel *backend_stdout;
|
||||
GIOChannel *backend_stderr;
|
||||
|
||||
GQueue *backend_stdin_queue; /* Write queue to backend_stdin */
|
||||
|
||||
|
@ -50,6 +52,7 @@ struct PasswdHandler {
|
|||
guint backend_child_watch_id; /* g_child_watch_add (PID) */
|
||||
guint backend_stdout_watch_id; /* g_io_add_watch (stdout) */
|
||||
|
||||
|
||||
/* State of the passwd program */
|
||||
PasswdState backend_state;
|
||||
gboolean changing_password;
|
||||
|
@ -84,7 +87,7 @@ static void free_passwd_resources (PasswdHandler *passwd_handler);
|
|||
|
||||
static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler);
|
||||
|
||||
|
||||
static gboolean io_watch_stdout2 (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler);
|
||||
static void free_passwd_resources (PasswdHandler *passwd_handler)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
@ -199,6 +202,33 @@ static gboolean is_string_complete (gchar *str, ...)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
int isDomainUser(const char* username)
|
||||
{
|
||||
FILE *fp;
|
||||
fp=fopen("/etc/passwd","r");
|
||||
if(fp == NULL)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
char buf[1024], name[128];
|
||||
while(!feof(fp))
|
||||
{
|
||||
if(fgets(buf,sizeof (buf),fp) == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
sscanf(buf,"%[^:]",name);
|
||||
if(strcmp(name,username) == 0)
|
||||
{
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler)
|
||||
{
|
||||
static GString *str = NULL; /* Persistent buffer */
|
||||
|
@ -227,17 +257,16 @@ static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, Pas
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// g_warning("----------bytes_read=%d",bytes_read);
|
||||
// g_warning("----------io_watch_buf=%s-------",buf);
|
||||
|
||||
str = g_string_append_len (str, buf, bytes_read);
|
||||
|
||||
g_warning("----io_watch_stdout DEBUG#msg: %s\n", str->str);
|
||||
|
||||
|
||||
/* In which state is the backend? */
|
||||
switch (passwd_handler->backend_state) {
|
||||
case PASSWD_STATE_AUTH:
|
||||
/* Passwd is asking for our current password */
|
||||
|
||||
if (is_string_complete (str->str, "assword: ", "failure", "wrong", "error", NULL)) {
|
||||
if (is_string_complete (str->str, "assword: ", "failure", "wrong", "error", "failed", NULL)) {
|
||||
|
||||
if (g_strrstr (str->str, "New password: ") != NULL) {
|
||||
/* Authentication successful */
|
||||
|
@ -253,9 +282,15 @@ static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, Pas
|
|||
} else {
|
||||
/* Authentication failed */
|
||||
|
||||
// 域用户出错只关注服务器消息(stdout),sdterr消息不关注
|
||||
if (isDomainUser(g_get_user_name())) {
|
||||
break;
|
||||
}
|
||||
|
||||
error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_AUTH_FAILED,
|
||||
"Authentication token manipulation error!");
|
||||
|
||||
g_warning ("Change password failed: %s", error->message);
|
||||
passwd_handler->changing_password = FALSE;
|
||||
|
||||
/* This error can happen both while authenticating or while changing password:
|
||||
|
@ -277,7 +312,6 @@ static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, Pas
|
|||
break;
|
||||
case PASSWD_STATE_NEW:
|
||||
/* Passwd is asking for our new password */
|
||||
|
||||
if (is_string_complete (str->str, "assword: ", NULL)) {
|
||||
/* Advance to next state */
|
||||
passwd_handler->backend_state = PASSWD_STATE_RETYPE;
|
||||
|
@ -321,10 +355,14 @@ static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, Pas
|
|||
passwd_handler->chpasswd_cb (passwd_handler,
|
||||
NULL,
|
||||
passwd_handler->chpasswd_cb_data);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* Ohnoes! */
|
||||
|
||||
// 域用户出错只关注服务器消息(stdout),sdterr消息不关注
|
||||
if (isDomainUser(g_get_user_name())) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (g_strrstr (str->str, "recovered") != NULL) {
|
||||
/* What does this indicate?
|
||||
* "Authentication information cannot be recovered?" from libpam? */
|
||||
|
@ -433,6 +471,63 @@ static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, Pas
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean io_watch_stdout2 (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler)
|
||||
{
|
||||
g_warning("----io_watch_stdout2 revieve server message");
|
||||
static GString *str = NULL; /* Persistent buffer */
|
||||
|
||||
gchar buf[BUFSIZE]; /* Temporary buffer */
|
||||
gsize bytes_read;
|
||||
GError *gio_error = NULL; /* Error returned by functions */
|
||||
GError *error = NULL; /* Error sent to callbacks */
|
||||
|
||||
//GtkBuilder *dialog;
|
||||
|
||||
gboolean reinit = FALSE;
|
||||
|
||||
/* Initialize buffer */
|
||||
if (str == NULL) {
|
||||
str = g_string_new ("");
|
||||
}
|
||||
|
||||
//dialog = passwd_handler->ui;
|
||||
//buf将保存从channel中读取到的数据,bytes_read表示从buf中读取的数据长度
|
||||
if (g_io_channel_read_chars (source, buf, BUFSIZE, &bytes_read, &gio_error)
|
||||
!= G_IO_STATUS_NORMAL) {
|
||||
g_warning ("IO Channel read error: %s", gio_error->message);
|
||||
g_error_free (gio_error);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
str = g_string_append_len (str, buf, bytes_read);
|
||||
|
||||
g_warning("----io_watch_stdout2 DEBUG#msg2: %s\n", str->str);
|
||||
|
||||
if (is_string_complete (str->str, "Server message", "System is offline", NULL)) {
|
||||
error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_UNKNOWN,
|
||||
str->str);
|
||||
|
||||
g_warning ("Change password failed: %s", error->message);
|
||||
passwd_handler->changing_password = FALSE;
|
||||
|
||||
/* This error can happen both while authenticating or while changing password:
|
||||
* if chpasswd_cb is set, this means we're already changing password */
|
||||
if (passwd_handler->chpasswd_cb)
|
||||
passwd_handler->chpasswd_cb (passwd_handler,
|
||||
error,
|
||||
passwd_handler->auth_cb_data);
|
||||
else if (passwd_handler->auth_cb)
|
||||
passwd_handler->auth_cb (passwd_handler,
|
||||
error,
|
||||
passwd_handler->auth_cb_data);
|
||||
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Child watcher */
|
||||
static void child_watch_cb (GPid pid, gint status, PasswdHandler *passwd_handler)
|
||||
{
|
||||
|
@ -507,31 +602,34 @@ static gboolean spawn_passwd (PasswdHandler *passwd_handler, GError **error)
|
|||
|
||||
/* 2>&1 */
|
||||
//复制文件描述符,也就是将stderr重定向到stdout
|
||||
if (dup2 (my_stderr, my_stdout) == -1) {
|
||||
/* Failed! */
|
||||
g_set_error_literal (error,
|
||||
PASSWD_ERROR,
|
||||
PASSWD_ERROR_BACKEND,
|
||||
strerror (errno));
|
||||
// if (dup2 (my_stderr, my_stdout) == -1) {
|
||||
// /* Failed! */
|
||||
// g_set_error_literal (error,
|
||||
// PASSWD_ERROR,
|
||||
// PASSWD_ERROR_BACKEND,
|
||||
// strerror (errno));
|
||||
|
||||
/* Clean up */
|
||||
stop_passwd (passwd_handler);
|
||||
// /* Clean up */
|
||||
// stop_passwd (passwd_handler);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
// return FALSE;
|
||||
// }
|
||||
|
||||
/* Open IO Channels */
|
||||
//指定一个文件描述符,创建一个IO Channel,默认使用UTF-8编码格式
|
||||
passwd_handler->backend_stdin = g_io_channel_unix_new (my_stdin);
|
||||
passwd_handler->backend_stdout = g_io_channel_unix_new (my_stdout);
|
||||
passwd_handler->backend_stderr = g_io_channel_unix_new(my_stderr);
|
||||
|
||||
/* Set raw encoding */
|
||||
/* Set nonblocking mode */
|
||||
//设置通道的编码方式为NULL,设置为非阻塞的方式
|
||||
if (g_io_channel_set_encoding (passwd_handler->backend_stdin, NULL, error) != G_IO_STATUS_NORMAL ||
|
||||
g_io_channel_set_encoding (passwd_handler->backend_stdout, NULL, error) != G_IO_STATUS_NORMAL ||
|
||||
g_io_channel_set_encoding (passwd_handler->backend_stderr, NULL, error) != G_IO_STATUS_NORMAL ||
|
||||
g_io_channel_set_flags (passwd_handler->backend_stdin, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ||
|
||||
g_io_channel_set_flags (passwd_handler->backend_stdout, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ) {
|
||||
g_io_channel_set_flags (passwd_handler->backend_stdout, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ||
|
||||
g_io_channel_set_flags (passwd_handler->backend_stderr, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ) {
|
||||
|
||||
/* Clean up */
|
||||
stop_passwd (passwd_handler);
|
||||
|
@ -542,13 +640,19 @@ static gboolean spawn_passwd (PasswdHandler *passwd_handler, GError **error)
|
|||
//只有通道的编码方式为NULL,才能设置缓冲状态为FASLE,其他任何编码,通道必须被缓冲,这里是为了清掉上次的密码
|
||||
g_io_channel_set_buffered (passwd_handler->backend_stdin, FALSE);
|
||||
g_io_channel_set_buffered (passwd_handler->backend_stdout, FALSE);
|
||||
g_io_channel_set_buffered (passwd_handler->backend_stderr, FALSE);
|
||||
|
||||
/* Add IO Channel watcher */
|
||||
//当IO通道的状态为G_IO_IN(从IO通道读数据时)或者G_IO_PRI(读紧急数据时)时,调用io_watch_stdout
|
||||
passwd_handler->backend_stdout_watch_id = g_io_add_watch (passwd_handler->backend_stdout,
|
||||
G_IO_IN /*| G_IO_PRI*/,
|
||||
G_IO_IN,
|
||||
(GIOFunc) io_watch_stdout2, passwd_handler);
|
||||
|
||||
//当IO通道的状态为G_IO_IN(从IO通道读数据时)或者G_IO_PRI(读紧急数据时)时,调用io_watch_stdout
|
||||
passwd_handler->backend_stdout_watch_id = g_io_add_watch (passwd_handler->backend_stderr,
|
||||
G_IO_IN /*| G_IO_PRI*/ ,
|
||||
(GIOFunc) io_watch_stdout, passwd_handler);
|
||||
|
||||
|
||||
/* Add child watcher */
|
||||
//在指定pid的进程退出时,调用child_watch_cb(),进行错误检查,以及资源回收
|
||||
passwd_handler->backend_child_watch_id = g_child_watch_add (passwd_handler->backend_pid, (GChildWatchFunc) child_watch_cb, passwd_handler);
|
||||
|
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 166 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 373 KiB After Width: | Height: | Size: 429 KiB |
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 414 KiB After Width: | Height: | Size: 335 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 173 KiB After Width: | Height: | Size: 161 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 177 KiB |
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 219 KiB |
Before Width: | Height: | Size: 297 KiB After Width: | Height: | Size: 207 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 399 KiB After Width: | Height: | Size: 202 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 147 KiB |
Before Width: | Height: | Size: 655 KiB After Width: | Height: | Size: 754 KiB |
Before Width: | Height: | Size: 398 KiB After Width: | Height: | Size: 473 KiB |
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 502 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 419 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 363 KiB After Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 379 KiB After Width: | Height: | Size: 229 KiB |
Before Width: | Height: | Size: 287 KiB After Width: | Height: | Size: 196 KiB |
|
@ -5,54 +5,7 @@ Ukui Control Center provides a friendly graphic interface to set the system. As
|
|||

|
||||
<br>
|
||||
|
||||
## Account
|
||||
|
||||
### User Info
|
||||
|
||||

|
||||
|
||||
#### Current User
|
||||
|
||||
- Change User Face: Click user's face can change it.
|
||||
|
||||

|
||||
|
||||
- Change Password: Click "Password" to modify the current user's password.
|
||||
|
||||

|
||||
|
||||
- Change Account Type: administrator -- can elevated permission temporarily; standard user -- can't elevated permission.
|
||||
|
||||

|
||||
|
||||
#### Other Users
|
||||
|
||||
Administrator can modify other user's information, add new user, etc..
|
||||
|
||||
- Add new user
|
||||
|
||||
-Password complexity requirements(Password strength can be customized through security neutrality):
|
||||
|
||||
1. The user password cannot contain illegal characters ("'" and non-standard characters);
|
||||
|
||||
2. The minimum password length is 8;
|
||||
|
||||
3. The password shall contain at least two types of characters;
|
||||
|
||||
4. The password must not contain the user name;
|
||||
|
||||
5. It is forbidden to use palindrome in password;
|
||||
|
||||
6. Enable password similarity check (detect when modifying password);
|
||||
|
||||
7. Enable password dictionary;
|
||||
|
||||
8. The validity period of the password is unlimited;
|
||||
|
||||

|
||||
|
||||
## System
|
||||
|
||||
### Display
|
||||
As shown in Fig 2.
|
||||
|
||||
|
@ -114,11 +67,6 @@ As shown in Fig touchpad.
|
|||
|
||||

|
||||
|
||||
### Touchscreen
|
||||
This interface introduces several gesture operations commonly used in the system in the form of animation.
|
||||
|
||||

|
||||
|
||||
### Keyboard
|
||||
As shown in Fig keyboard.
|
||||
|
||||
|
@ -129,6 +77,93 @@ As shown in Fig 13.
|
|||
|
||||

|
||||
|
||||
### Projection
|
||||
Projection is a software that is allowed to be projected by mobile phones and other Kylin-OS and can be projected to other Kylin OS in Kylin OS desktop environment. It is divided into two parts: receiving terminal and sending terminal. The main interface is shown in Figure.
|
||||
|
||||

|
||||
|
||||
The function buttons at the receiving terminal are in the upper part of the main interface, from top to bottom:
|
||||
|
||||
1) Receiving terminal on / off button: after the button is turned on, the current Kylin-OS device can be searched by mobile phone device or other Kylin-OS devices.
|
||||
|
||||
2) PIN code function on / off button: after the button is turned on, the PIN code needs to be entered during connection.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
3) Historical device show / hide button: when the button arrow points down, you can see the relevant devices connected to the current Kylin-OS device.
|
||||
|
||||

|
||||
|
||||
The function buttons at the sending terminal are in the lower part of the main interface, including:
|
||||
|
||||
Receiving terminal on / off button: this button is mutually exclusive with the sending terminal on / off button. When the receiving terminal on / off button is turned on, the receiving terminal on / off button needs to be turned off before the sending terminal on / off button can be turned on (the same is true for the receiving terminal turn on / off button). After opening this button, click Find device to pop up the search window, in which the searchable Kylin-OS device at the receiving terminal will be displayed.
|
||||
|
||||
Connection process between mobile phone and Kylin-OS:
|
||||
|
||||
1) Open the receiving terminal on / off button (close the sending terminal on / off button first).
|
||||
|
||||
2) The mobile phone drop-down menu opens the projection (or mobile phone projection / multi screen collaboration).
|
||||
|
||||

|
||||
|
||||
3) Select the Kylin-OS device to be projected in the mobile search device list.
|
||||
|
||||

|
||||
|
||||
4) Connect (there are two types: PIN code required and PIN code not required).
|
||||
|
||||

|
||||
|
||||
5) Select the mobile phone model (currently divided into Huawei, Xiaomi and others).
|
||||
|
||||

|
||||
|
||||
6) Projection interface: the mobile phone screen is displayed in the center of the interface. There are 5 buttons on the right side of the interface, from top to bottom: soft / hard decoding switching button; Full screen / window switching button; Return to parent directory button; Return to the main interface button; Display the application process button;
|
||||
|
||||

|
||||
|
||||
Kylin-OS and Kylin-OS connection process:
|
||||
|
||||
1) Open the on / off button at the sending terminal (close the on / off button at the receiving terminal in advance).
|
||||
|
||||
2) Click the search device on the left side of the switch button;
|
||||
|
||||

|
||||
|
||||
3) In the pop-up search window, select the Kylin-OS device to project to.
|
||||
|
||||

|
||||
|
||||
4) Projection interface.
|
||||
|
||||

|
||||
|
||||
**FAQ**
|
||||
|
||||
1. If the projection is unsuccessful, you can try to connect again, and the device connected once will be automatically recorded in the history device.
|
||||
|
||||
2. Kylin OS and some phones support the control return function (that is, the receiving terminal can indirectly affect the sending terminal by operating the mouse or keyboard).
|
||||
|
||||
3. At present only some Huawei phones and Xiaomi phones support Android three button function (the last three buttons on the interface on the right side of the screen). For other models, clicking these buttons may cause unknown problems.
|
||||
|
||||
4. The system will use soft decoding by default. At this time, you can manually switch to hard decoding (use hardware to decode video, reduce CPU occupation, and need hardware support).
|
||||
|
||||
5. The name of the receiving device can be changed in the screen projection interface. Click the "pen" icon on the right side of the projection screen to enter the modification interface.
|
||||
|
||||

|
||||
|
||||
6. When the wireless network card is not inserted, or the wireless network card does not support the connection required for projection, it is necessary to insert the network card or replace the inserted network card.
|
||||
|
||||

|
||||
|
||||
7. When the package with wireless projection is not installed or the package version is too low, the projection function will not be displayed in the control panel.
|
||||
|
||||
8. When used as the sending terminal, it does not support projecting to the receiving terminal of SP1 version.
|
||||
|
||||
<br>
|
||||
|
||||
## Network
|
||||
### WiredConnect
|
||||
As shown in Fig 15.
|
||||
|
@ -150,6 +185,13 @@ As shown in Fig 18.
|
|||
|
||||

|
||||
|
||||
### MobileHotspot
|
||||
As shown in Fig 19.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
## Personalized
|
||||
### Background
|
||||
As shown in Fig 20.
|
||||
|
@ -172,17 +214,95 @@ As shown in Fig 20.
|
|||
### Screenlock
|
||||
As shown in Fig 22.
|
||||
|
||||

|
||||

|
||||
|
||||
### Screensaver
|
||||
As shown in Fig 23.
|
||||
|
||||

|
||||

|
||||
|
||||
### Fonts
|
||||
As shown in Fig 24.
|
||||
|
||||

|
||||

|
||||
|
||||
<br>
|
||||
|
||||
## Account
|
||||
### User Info
|
||||

|
||||
#### Current User
|
||||
- Change User Face: Click user's face can change it.
|
||||
|
||||

|
||||
|
||||
- Change Password: Click "Password" to modify the current user's password.
|
||||
|
||||

|
||||
|
||||
- Change Account Type: administrator -- can elevated permission temporarily; standard user -- can't elevated permission.
|
||||
|
||||

|
||||
|
||||
#### Other Users
|
||||
Administrator can modify other user's information, add new user, etc..
|
||||
|
||||
- Add new user
|
||||
|
||||
-Password complexity requirements(Password strength can be customized through security neutrality):
|
||||
|
||||
1. The user password cannot contain illegal characters ("'" and non-standard characters);
|
||||
|
||||
2. The minimum password length is 8;
|
||||
|
||||
3. The password shall contain at least two types of characters;
|
||||
|
||||
4. The password must not contain the user name;
|
||||
|
||||
5. It is forbidden to use palindrome in password;
|
||||
|
||||
6. Enable password similarity check (detect when modifying password);
|
||||
|
||||
7. Enable password dictionary;
|
||||
|
||||
8. The validity period of the password is unlimited;
|
||||
|
||||

|
||||
|
||||
### Biometrics
|
||||
As shown in Fig 26.
|
||||
|
||||

|
||||
|
||||
### Cloud Account
|
||||
Synchronize personalized settings and data, and this function needs to sign in.
|
||||
|
||||

|
||||
|
||||
#### Sign In
|
||||
Login through Kylin ID login Center.
|
||||
|
||||
#### Synchronizable Items
|
||||
- Desktop wallpaper
|
||||
|
||||
- Screensaver: wallpaper and idle time
|
||||
|
||||
- Fonts
|
||||
|
||||
- User's face
|
||||
|
||||
- The settings in control center, such as start menu, taskbar, theme, etc.
|
||||
|
||||
- The settings of pluma, kylin weather, peony, terminal, kylin video.
|
||||
|
||||
#### Tips
|
||||
1) When opening the cloud account first time, it will synchronize once by default. If the cloud exists configuration files, it will download them and sync to local; Otherwise, the local configuration files will be uploaded to the cloud.
|
||||
|
||||
2) After login, if the automatic synchronization is opened, the cloud will synchronize the local configurations every 5 minutes. And they can be used by different machines, different users.
|
||||
|
||||
3) If the automatic synchronization is closed, all the cloud configurations will keep the last upload status.
|
||||
|
||||
4) The automatic synchronization for the single item is the similar effects.
|
||||
|
||||
<br>
|
||||
|
||||
|
@ -199,6 +319,28 @@ As shown in Fig 29:
|
|||
|
||||
<br>
|
||||
|
||||
## Update Operation
|
||||
|
||||
In update configuration, you can configure backup and update.
|
||||
|
||||
-Click start backup to automatically open our Kirin backup and restore tool for system content backup.
|
||||
-Click Detect update to automatically open our Kirin update manager to obtain the updated content.
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
## Security
|
||||
### Security Center
|
||||
As shown in Fig 32.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
## Application
|
||||
### Auto Boot
|
||||
As shown in Fig 33:
|
||||
|
@ -215,4 +357,4 @@ As shown in Fig 34:
|
|||
### Search
|
||||
As shown in Fig 35:
|
||||
|
||||

|
||||

|
||||
|
|
|
@ -5,5 +5,10 @@
|
|||
<summary>Control panel default font list</summary>
|
||||
<description>Control panel default font list</description>
|
||||
</key>
|
||||
<key name="autoapp-list" type="as">
|
||||
<default> ['kylin-weather.desktop', 'sogouImeService.desktop']</default>
|
||||
<summary>Control panel autoapp list</summary>
|
||||
<description>Control panel autoapp list</description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<description>The maximize num of messages on notice window.</description>
|
||||
</key>
|
||||
<key name="show-on-screenlock" type='b'>
|
||||
<default>true</default>
|
||||
<default>false</default>
|
||||
<summary>""</summary>
|
||||
<description>Whether the notification show on screenlock</description>
|
||||
</key>
|
||||
|
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 460 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 342 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 369 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 83 KiB |