Merge pull request #1509 from 21pages/optimize
add polkit and update build.rs
This commit is contained in:
commit
ae570acd03
18
build.py
18
build.py
@ -71,7 +71,7 @@ def make_parser():
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--hwcodec',
|
'--hwcodec',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='Enable feature hwcodec, windows only.'
|
help='Enable feature hwcodec'
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
@ -124,26 +124,28 @@ def get_features(args):
|
|||||||
|
|
||||||
def build_flutter_deb(version):
|
def build_flutter_deb(version):
|
||||||
os.chdir('flutter')
|
os.chdir('flutter')
|
||||||
|
os.system('/bin/rm -rf tmpdeb/')
|
||||||
os.system('dpkg-deb -R rustdesk.deb tmpdeb')
|
os.system('dpkg-deb -R rustdesk.deb tmpdeb')
|
||||||
# os.system('flutter build linux --release')
|
os.system('flutter build linux --release')
|
||||||
os.system('rm tmpdeb/usr/bin/rustdesk')
|
os.system('rm tmpdeb/usr/bin/rustdesk')
|
||||||
os.system('strip build/linux/x64/release/liblibrustdesk.so')
|
|
||||||
os.system('mkdir -p tmpdeb/usr/lib/rustdesk')
|
os.system('mkdir -p tmpdeb/usr/lib/rustdesk')
|
||||||
os.system('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
os.system('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||||
|
os.system('mkdir -p tmpdeb/usr/share/polkit-1/actions')
|
||||||
os.system(
|
os.system(
|
||||||
'cp -r build/linux/x64/release/bundle/* tmpdeb/usr/lib/rustdesk/')
|
'cp -r build/linux/x64/release/bundle/* tmpdeb/usr/lib/rustdesk/')
|
||||||
os.system(
|
os.system(
|
||||||
'pushd tmpdeb && ln -s /usr/lib/rustdesk/flutter_hbb usr/bin/rustdesk && popd')
|
'pushd tmpdeb && ln -s /usr/lib/rustdesk/flutter_hbb usr/bin/rustdesk && popd')
|
||||||
os.system(
|
os.system(
|
||||||
'cp build/linux/x64/release/liblibrustdesk.so tmpdeb/usr/lib/rustdesk/librustdesk.so')
|
'cp ../rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||||
os.system(
|
os.system(
|
||||||
'cp rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
'cp ../rustdesk.service.user tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||||
os.system(
|
|
||||||
'cp rustdesk.service.user tmpdeb/usr/share/rustdesk/files/systemd/')
|
|
||||||
os.system(
|
os.system(
|
||||||
'cp ../128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
'cp ../128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
||||||
os.system(
|
os.system(
|
||||||
'cp rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
'cp ../rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||||
|
os.system(
|
||||||
|
'cp ../com.rustdesk.RustDesk.policy tmpdeb/usr/share/polkit-1/actions/')
|
||||||
|
os.system("echo \"#!/bin/sh\" >> tmpdeb/usr/share/rustdesk/files/polkit && chmod a+x tmpdeb/usr/share/rustdesk/files/polkit")
|
||||||
os.system('mkdir -p tmpdeb/DEBIAN')
|
os.system('mkdir -p tmpdeb/DEBIAN')
|
||||||
os.system('cp -a ../DEBIAN/* tmpdeb/DEBIAN/')
|
os.system('cp -a ../DEBIAN/* tmpdeb/DEBIAN/')
|
||||||
md5_file('usr/share/rustdesk/files/systemd/rustdesk.service')
|
md5_file('usr/share/rustdesk/files/systemd/rustdesk.service')
|
||||||
|
22
com.rustdesk.RustDesk.policy
Normal file
22
com.rustdesk.RustDesk.policy
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE policyconfig PUBLIC
|
||||||
|
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||||
|
<policyconfig>
|
||||||
|
<vendor>RustDesk</vendor>
|
||||||
|
<vendor_url>https://rustdesk.com/</vendor_url>
|
||||||
|
<icon_name>rustdesk</icon_name>
|
||||||
|
<action id="com.rustdesk.RustDesk.options">
|
||||||
|
<description>Change RustDesk options</description>
|
||||||
|
<message>Authentication is required to change RustDesk options</message>
|
||||||
|
<message xml:lang="zh_CN">要更改RustDesk选项, 需要您先通过身份验证</message>
|
||||||
|
<message xml:lang="zh_TW">要變更RustDesk選項, 需要您先通過身份驗證</message>
|
||||||
|
<annotate key="org.freedesktop.policykit.exec.path">/usr/share/rustdesk/files/polkit</annotate>
|
||||||
|
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||||
|
<defaults>
|
||||||
|
<allow_any>auth_admin</allow_any>
|
||||||
|
<allow_inactive>auth_admin</allow_inactive>
|
||||||
|
<allow_active>auth_admin</allow_active>
|
||||||
|
</defaults>
|
||||||
|
</action>
|
||||||
|
</policyconfig>
|
@ -265,22 +265,14 @@ class _GeneralState extends State<_General> {
|
|||||||
if (devices.isEmpty) {
|
if (devices.isEmpty) {
|
||||||
return const Offstage();
|
return const Offstage();
|
||||||
}
|
}
|
||||||
List<String> keys = devices.toList();
|
|
||||||
List<String> values = devices.toList();
|
|
||||||
// TODO
|
|
||||||
if (!devices.contains(currentDevice)) {
|
|
||||||
currentDevice = "";
|
|
||||||
keys.insert(0, currentDevice);
|
|
||||||
values.insert(0, 'default');
|
|
||||||
}
|
|
||||||
return _Card(title: 'Audio Input Device', children: [
|
return _Card(title: 'Audio Input Device', children: [
|
||||||
_ComboBox(
|
...devices.map((device) => _Radio<String>(context,
|
||||||
keys: keys,
|
value: device,
|
||||||
values: values,
|
groupValue: currentDevice,
|
||||||
initialKey: currentDevice,
|
label: device, onChanged: (value) {
|
||||||
onChanged: (key) {
|
setDevice(value);
|
||||||
setDevice(key);
|
setState(() {});
|
||||||
}).marginOnly(left: _kContentHMargin),
|
}))
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -876,6 +868,8 @@ Widget _Radio<T>(BuildContext context,
|
|||||||
Radio<T>(value: value, groupValue: groupValue, onChanged: onChange),
|
Radio<T>(value: value, groupValue: groupValue, onChanged: onChange),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Text(translate(label),
|
child: Text(translate(label),
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: _kContentFontSize,
|
fontSize: _kContentFontSize,
|
||||||
color: _disabledTextColor(context, enabled)))
|
color: _disabledTextColor(context, enabled)))
|
||||||
|
@ -638,7 +638,13 @@ pub fn quit_gui() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn check_super_user_permission() -> ResultType<bool> {
|
pub fn check_super_user_permission() -> ResultType<bool> {
|
||||||
// TODO: replace echo with a rustdesk's program, which is location-fixed and non-gui.
|
let file = "/usr/share/rustdesk/files/polkit";
|
||||||
let status = std::process::Command::new("pkexec").arg("echo").status()?;
|
let arg;
|
||||||
|
if std::path::Path::new(file).is_file() {
|
||||||
|
arg = file;
|
||||||
|
} else {
|
||||||
|
arg = "echo";
|
||||||
|
}
|
||||||
|
let status = std::process::Command::new("pkexec").arg(arg).status()?;
|
||||||
Ok(status.success() && status.code() == Some(0))
|
Ok(status.success() && status.code() == Some(0))
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user