Merge pull request #2647 from KG7x/master
Fix typo & Optimize images & Cleanup
6
.github/workflows/flutter-nightly.yml
vendored
@ -377,7 +377,7 @@ jobs:
|
||||
run: |
|
||||
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
||||
|
||||
- name: Upload Artifcat
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: bridge-artifact
|
||||
@ -1012,7 +1012,7 @@ jobs:
|
||||
files: |
|
||||
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||
|
||||
- name: Upload Artifcat
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
|
||||
with:
|
||||
@ -1188,7 +1188,7 @@ jobs:
|
||||
files: |
|
||||
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||
|
||||
- name: Upload Artifcat
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
|
||||
with:
|
||||
|
2
build.py
@ -21,7 +21,7 @@ skip_cargo = False
|
||||
def custom_os_system(cmd):
|
||||
err = os._system(cmd)
|
||||
if err != 0:
|
||||
print(f"Error occured when executing: {cmd}. Exiting.")
|
||||
print(f"Error occurred when executing: {cmd}. Exiting.")
|
||||
sys.exit(-1)
|
||||
# replace prebuilt os.system
|
||||
os._system = os.system
|
||||
|
@ -4,7 +4,7 @@ Doc: https://rustdesk.com/docs/en/manual/mobile/
|
||||
|
||||
In order for a remote device to control your Android device via mouse or touch, you need to allow RustDesk to use the "Accessibility" service, RustDesk uses AccessibilityService API to implement Addroid remote control.
|
||||
|
||||
In addtion to remote control, you can also transfer files between Android devices and PCs easily with RustDesk.
|
||||
In addition to remote control, you can also transfer files between Android devices and PCs easily with RustDesk.
|
||||
|
||||
You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, or self-hosting, or write your own rendezvous/relay server. Self-hosting server is free and open source: https://github.com/rustdesk/rustdesk-server
|
||||
|
||||
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 318 KiB |
Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 422 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 452 KiB |
Before Width: | Height: | Size: 384 KiB After Width: | Height: | Size: 379 KiB |
Before Width: | Height: | Size: 276 KiB After Width: | Height: | Size: 267 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.4 KiB |
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Build libyuv / opus / libvpx / oboe for Android
|
||||
# Required:
|
||||
# Build libyuv / opus / libvpx / oboe for Android
|
||||
# Required:
|
||||
# 1. set VCPKG_ROOT / ANDROID_NDK path environment variables
|
||||
# 2. vcpkg initialized
|
||||
# 3. ndk, version: 22 (if ndk < 22 you need to change LD as `export LD=$TOOLCHAIN/bin/$NDK_LLVM_TARGET-ld`)
|
||||
@ -23,7 +23,7 @@ HOST_TAG="linux-x86_64" # current platform, set as `ls $ANDROID_NDK/toolchains/l
|
||||
TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/$HOST_TAG
|
||||
|
||||
function build {
|
||||
ANDROID_ABI=$1
|
||||
ANDROID_ABI=$1
|
||||
VCPKG_TARGET=$2
|
||||
NDK_LLVM_TARGET=$3
|
||||
LIBVPX_TARGET=$4
|
||||
@ -111,15 +111,15 @@ patch -N -d build/oboe -p1 < ../src/oboe.patch
|
||||
# x86_64-linux-android
|
||||
# i686-linux-android
|
||||
|
||||
# LIBVPX_TARGET :
|
||||
# arm64-android-gcc
|
||||
# armv7-android-gcc
|
||||
# LIBVPX_TARGET :
|
||||
# arm64-android-gcc
|
||||
# armv7-android-gcc
|
||||
# x86_64-android-gcc
|
||||
# x86-android-gcc
|
||||
# x86-android-gcc
|
||||
|
||||
# args: ANDROID_ABI VCPKG_TARGET NDK_LLVM_TARGET LIBVPX_TARGET
|
||||
build arm64-v8a arm64-android aarch64-linux-android arm64-android-gcc
|
||||
build armeabi-v7a arm-android arm-linux-androideabi armv7-android-gcc
|
||||
build armeabi-v7a arm-android arm-linux-androideabi armv7-android-gcc
|
||||
|
||||
# rm -rf build/libvpx
|
||||
# rm -rf build/oboe
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 360 B |
Before Width: | Height: | Size: 574 B After Width: | Height: | Size: 564 B |
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 806 B After Width: | Height: | Size: 781 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 574 B After Width: | Height: | Size: 564 B |
Before Width: | Height: | Size: 997 B After Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 939 B After Width: | Height: | Size: 926 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
@ -46,7 +46,7 @@ var isWebDesktop = false;
|
||||
var version = "";
|
||||
int androidVersion = 0;
|
||||
|
||||
/// only avaliable for Windows target
|
||||
/// only available for Windows target
|
||||
int windowsBuildNumber = 0;
|
||||
DesktopType? desktopType;
|
||||
|
||||
@ -1373,7 +1373,7 @@ Future<Map<String, String>> getHttpHeaders() async {
|
||||
};
|
||||
}
|
||||
|
||||
// Simple wrapper of built-in types for refrence use.
|
||||
// Simple wrapper of built-in types for reference use.
|
||||
class SimpleWrapper<T> {
|
||||
T value;
|
||||
SimpleWrapper(this.value);
|
||||
@ -1409,7 +1409,7 @@ Future<void> reloadAllWindows() async {
|
||||
/// Indicate the flutter app is running in portable mode.
|
||||
///
|
||||
/// [Note]
|
||||
/// Portable build is only avaliable on Windows.
|
||||
/// Portable build is only available on Windows.
|
||||
bool isRunningInPortableMode() {
|
||||
if (!Platform.isWindows) {
|
||||
return false;
|
||||
|
@ -464,7 +464,7 @@ abstract class BasePeerCard extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
/// Only avaliable on Windows.
|
||||
/// Only available on Windows.
|
||||
@protected
|
||||
MenuEntryBase<String> _createShortCutAction(String id) {
|
||||
return MenuEntryButton<String>(
|
||||
|
@ -208,7 +208,7 @@ class RustDeskMultiWindowManager {
|
||||
|
||||
/// Remove active window which has [`windowId`]
|
||||
///
|
||||
/// [Avaliability]
|
||||
/// [Availability]
|
||||
/// This function should only be called from main window.
|
||||
/// For other windows, please post a unregister(hide) event to main window handler:
|
||||
/// `rustDeskWinManager.call(WindowType.Main, kWindowEventHide, {"id": windowId!});`
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 349 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 569 B After Width: | Height: | Size: 562 B |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 909 B After Width: | Height: | Size: 901 B |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 12 KiB |
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import re
|
||||
import re
|
||||
import os
|
||||
import glob
|
||||
from tabnanny import check
|
||||
@ -69,7 +69,7 @@ def main():
|
||||
for ln in open('../../../Cargo.toml', encoding='utf-8'):
|
||||
if ln.startswith('version ='):
|
||||
print('export const ' + ln)
|
||||
|
||||
|
||||
|
||||
def removeComment(ln):
|
||||
return re.sub('\s+\/\/.*$', '', ln)
|
||||
|
@ -22,8 +22,8 @@
|
||||
import { simd } from "wasm-feature-detect";
|
||||
|
||||
export async function loadVp9(callback) {
|
||||
// Multithreading is used only if `options.threading` is true.
|
||||
// This requires browser support for the new `SharedArrayBuffer` and `Atomics` APIs,
|
||||
// Multithreading is used only if `options.threading` is true.
|
||||
// This requires browser support for the new `SharedArrayBuffer` and `Atomics` APIs,
|
||||
// currently available in Firefox and Chrome with experimental flags enabled.
|
||||
// 所有主流浏览器均默认于2018年1月5日禁用SharedArrayBuffer
|
||||
const isSIMD = await simd();
|
||||
|
@ -116,7 +116,7 @@ bool Win32Window::CreateAndShow(const std::wstring& title,
|
||||
HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST);
|
||||
UINT dpi = FlutterDesktopGetDpiForMonitor(monitor);
|
||||
double scale_factor = dpi / 96.0;
|
||||
|
||||
|
||||
HWND window = CreateWindow(
|
||||
window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
|
||||
Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
|
||||
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 42 KiB |
2
libs/enigo/.vscode/launch.json
vendored
@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
|
||||
{
|
||||
"name": "Debug",
|
||||
"type": "gdb",
|
||||
|
@ -21,7 +21,7 @@
|
||||
//! Possible use cases could be for testing user interfaces on different
|
||||
//! plattforms,
|
||||
//! building remote control applications or just automating tasks for user
|
||||
//! interfaces unaccessible by a public API or scripting laguage.
|
||||
//! interfaces unaccessible by a public API or scripting language.
|
||||
//!
|
||||
//! For the keyboard there are currently two modes you can use. The first mode
|
||||
//! is represented by the [key_sequence]() function
|
||||
|
@ -68,7 +68,7 @@ extern "C" {
|
||||
) -> Boolean;
|
||||
|
||||
fn CGEventPost(tapLocation: CGEventTapLocation, event: *mut MyCGEvent);
|
||||
// Actually return CFDataRef which is const here, but for coding convienence, return *mut c_void
|
||||
// Actually return CFDataRef which is const here, but for coding convenience, return *mut c_void
|
||||
fn TISGetInputSourceProperty(source: TISInputSourceRef, property: *const c_void)
|
||||
-> *mut c_void;
|
||||
// not present in servo/core-graphics
|
||||
|
@ -578,7 +578,7 @@ impl TransferJob {
|
||||
///
|
||||
/// [`Note`]
|
||||
/// Conditions:
|
||||
/// 1. Files are not waiting for comfirmation by peers.
|
||||
/// 1. Files are not waiting for confirmation by peers.
|
||||
#[inline]
|
||||
pub fn job_completed(&self) -> bool {
|
||||
// has no error, Condition 2
|
||||
|
@ -339,7 +339,7 @@ impl CapturerMag {
|
||||
}
|
||||
|
||||
// Register the host window class. See the MSDN documentation of the
|
||||
// Magnification API for more infomation.
|
||||
// Magnification API for more information.
|
||||
let wcex = WNDCLASSEXA {
|
||||
cbSize: size_of::<WNDCLASSEXA>() as _,
|
||||
style: 0,
|
||||
|
@ -66,7 +66,7 @@ const char* GetLastMsg()
|
||||
|
||||
BOOL InstallUpdate(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
// UpdateDriverForPlugAndPlayDevicesW may return FALSE while driver was successfully installed...
|
||||
if (FALSE == UpdateDriverForPlugAndPlayDevicesW(
|
||||
@ -96,7 +96,7 @@ BOOL InstallUpdate(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
||||
|
||||
BOOL Uninstall(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
if (FALSE == DiUninstallDriverW(
|
||||
NULL,
|
||||
@ -122,7 +122,7 @@ BOOL Uninstall(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
||||
|
||||
BOOL IsDeviceCreated(PBOOL created)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
HDEVINFO hardwareDeviceInfo = SetupDiGetClassDevs(
|
||||
&GUID_DEVINTERFACE_IDD_DRIVER_DEVICE,
|
||||
@ -181,7 +181,7 @@ BOOL IsDeviceCreated(PBOOL created)
|
||||
|
||||
BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
if (*hSwDevice != NULL)
|
||||
{
|
||||
@ -221,7 +221,7 @@ BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
||||
SW_DEVICE_CREATE_INFO createInfo = { 0 };
|
||||
PCWSTR description = L"RustDesk Idd Driver";
|
||||
|
||||
// These match the Pnp id's in the inf file so OS will load the driver when the device is created
|
||||
// These match the Pnp id's in the inf file so OS will load the driver when the device is created
|
||||
PCWSTR instanceId = L"RustDeskIddDriver";
|
||||
PCWSTR hardwareIds = L"RustDeskIddDriver\0\0";
|
||||
PCWSTR compatibleIds = L"RustDeskIddDriver\0\0";
|
||||
@ -274,7 +274,7 @@ BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
||||
|
||||
VOID DeviceClose(HSWDEVICE hSwDevice)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
if (hSwDevice != INVALID_HANDLE_VALUE && hSwDevice != NULL)
|
||||
{
|
||||
@ -284,7 +284,7 @@ VOID DeviceClose(HSWDEVICE hSwDevice)
|
||||
|
||||
BOOL MonitorPlugIn(UINT index, UINT edid, INT retries)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
if (retries < 0)
|
||||
{
|
||||
@ -359,7 +359,7 @@ BOOL MonitorPlugIn(UINT index, UINT edid, INT retries)
|
||||
|
||||
BOOL MonitorPlugOut(UINT index)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
HANDLE hDevice = DeviceOpenHandle();
|
||||
if (hDevice == INVALID_HANDLE_VALUE || hDevice == NULL)
|
||||
@ -400,7 +400,7 @@ BOOL MonitorPlugOut(UINT index)
|
||||
|
||||
BOOL MonitorModesUpdate(UINT index, UINT modeCount, PMonitorMode modes)
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
HANDLE hDevice = DeviceOpenHandle();
|
||||
if (hDevice == INVALID_HANDLE_VALUE || hDevice == NULL)
|
||||
@ -721,7 +721,7 @@ Clean0:
|
||||
// https://stackoverflow.com/questions/67164846/createfile-fails-unless-i-disable-enable-my-device
|
||||
HANDLE DeviceOpenHandle()
|
||||
{
|
||||
SetLastMsg("Sucess");
|
||||
SetLastMsg("Success");
|
||||
|
||||
// const int maxDevPathLen = 256;
|
||||
TCHAR devicePath[256] = { 0 };
|
||||
|
@ -14,7 +14,7 @@ extern "C" {
|
||||
* @param rebootRequired [out] Indicates whether a restart is required.
|
||||
*
|
||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||
*
|
||||
*
|
||||
* @see GetLastMsg#GetLastMsg
|
||||
*/
|
||||
BOOL InstallUpdate(LPCTSTR fullInfPath, PBOOL rebootRequired);
|
||||
@ -34,11 +34,11 @@ BOOL Uninstall(LPCTSTR fullInfPath, PBOOL rebootRequired);
|
||||
/**
|
||||
* @brief Check if RustDeskIddDriver device is created before.
|
||||
* The driver device(adapter) should be single instance.
|
||||
*
|
||||
*
|
||||
* @param created [out] Indicates whether the device is created before.
|
||||
*
|
||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||
*
|
||||
*
|
||||
* @see GetLastMsg#GetLastMsg
|
||||
*
|
||||
*/
|
||||
@ -47,12 +47,12 @@ BOOL IsDeviceCreated(PBOOL created);
|
||||
/**
|
||||
* @brief Create device.
|
||||
* Only one device should be created.
|
||||
* If device is installed ealier, this function returns FALSE.
|
||||
*
|
||||
* If device is installed earlier, this function returns FALSE.
|
||||
*
|
||||
* @param hSwDevice [out] Handler of software device, used by DeviceCreate(). Should be **NULL**.
|
||||
*
|
||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||
*
|
||||
*
|
||||
* @see GetLastMsg#GetLastMsg
|
||||
*
|
||||
*/
|
||||
@ -79,9 +79,9 @@ VOID DeviceClose(HSWDEVICE hSwDevice);
|
||||
* 1 means doing once and retry one time...
|
||||
*
|
||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||
*
|
||||
*
|
||||
* @see GetLastMsg#GetLastMsg
|
||||
*
|
||||
*
|
||||
* @remark Plug in monitor may fail if device is created in a very short time.
|
||||
* System need some time to prepare the device.
|
||||
*
|
||||
@ -94,7 +94,7 @@ BOOL MonitorPlugIn(UINT index, UINT edid, INT retries);
|
||||
* @param index [in] Monitor index, should be 0, 1, 2.
|
||||
*
|
||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||
*
|
||||
*
|
||||
* @see GetLastMsg#GetLastMsg
|
||||
*
|
||||
*/
|
||||
@ -133,9 +133,9 @@ const char* GetLastMsg();
|
||||
* @brief Set if print error message when debug.
|
||||
*
|
||||
* @param b [in] TRUE to enable printing message.
|
||||
*
|
||||
*
|
||||
* @remark For now, no need to read evironment variable to check if should print.
|
||||
*
|
||||
*
|
||||
*/
|
||||
VOID SetPrintErrMsg(BOOL b);
|
||||
|
||||
|
BIN
res/128x128.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.7 KiB |
BIN
res/32x32.png
Before Width: | Height: | Size: 504 B After Width: | Height: | Size: 493 B |
@ -3,5 +3,5 @@ for size in 16 32 64 128 256 512 1024; do
|
||||
#inkscape -z -o $size.png -w $size -h $size icon.svg >/dev/null 2>/dev/null
|
||||
convert icon.png -resize ${size}x${size} app_icon_$size.png
|
||||
done
|
||||
# from ImageMagick
|
||||
# from ImageMagick
|
||||
#/bin/rm 16.png 32.png 48.png 128.png 256.png
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 12 KiB |
BIN
res/icon.png
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 13 KiB |
22
res/lang.py
@ -4,22 +4,22 @@ import os
|
||||
import glob
|
||||
import sys
|
||||
import csv
|
||||
|
||||
def get_lang(lang):
|
||||
out = {}
|
||||
|
||||
def get_lang(lang):
|
||||
out = {}
|
||||
for ln in open('./src/lang/%s.rs'%lang):
|
||||
ln = ln.strip()
|
||||
if ln.startswith('("'):
|
||||
k, v = line_split(ln)
|
||||
out[k] = v
|
||||
return out
|
||||
return out
|
||||
|
||||
def line_split(line):
|
||||
toks = line.split('", "')
|
||||
toks = line.split('", "')
|
||||
if len(toks) != 2:
|
||||
print(line)
|
||||
assert(0)
|
||||
k = toks[0][2:]
|
||||
k = toks[0][2:]
|
||||
v = toks[1][:-3]
|
||||
return k, v
|
||||
|
||||
@ -34,8 +34,8 @@ def main():
|
||||
|
||||
|
||||
def expand():
|
||||
for fn in glob.glob('./src/lang/*'):
|
||||
lang = os.path.basename(fn)[:-3]
|
||||
for fn in glob.glob('./src/lang/*'):
|
||||
lang = os.path.basename(fn)[:-3]
|
||||
if lang in ['en','cn']: continue
|
||||
print(lang)
|
||||
dict = get_lang(lang)
|
||||
@ -52,11 +52,11 @@ def expand():
|
||||
else:
|
||||
fw.write(line)
|
||||
fw.close()
|
||||
|
||||
|
||||
|
||||
def to_csv():
|
||||
for fn in glob.glob('./src/lang/*.rs'):
|
||||
lang = os.path.basename(fn)[:-3]
|
||||
for fn in glob.glob('./src/lang/*.rs'):
|
||||
lang = os.path.basename(fn)[:-3]
|
||||
csvfile = open('./src/lang/%s.csv'%lang, "wt")
|
||||
csvwriter = csv.writer(csvfile)
|
||||
for line in open(fn):
|
||||
|
Before Width: | Height: | Size: 391 B After Width: | Height: | Size: 275 B |
Before Width: | Height: | Size: 475 B After Width: | Height: | Size: 270 B |
@ -305,7 +305,7 @@ fn core_main_invoke_new_connection(mut args: std::env::Args) -> Option<Vec<Strin
|
||||
let res = crate::platform::send_message_to_hnwd(
|
||||
"FLUTTER_RUNNER_WIN32_WINDOW",
|
||||
"RustDesk",
|
||||
(WM_USER + 2) as _, // refered from unilinks desktop pub
|
||||
(WM_USER + 2) as _, // referred from unilinks desktop pub
|
||||
uni_links.as_str(),
|
||||
true,
|
||||
);
|
||||
|
@ -500,7 +500,7 @@ pub fn start_os_service() {
|
||||
Err(err) => {
|
||||
log::error!("Failed to start server: {}", err);
|
||||
}
|
||||
_ => { /*no hapen*/ }
|
||||
_ => { /*no happen*/ }
|
||||
}
|
||||
}
|
||||
std::thread::sleep(std::time::Duration::from_millis(super::SERVICE_INTERVAL));
|
||||
|
@ -251,7 +251,7 @@ impl Connection {
|
||||
|
||||
loop {
|
||||
tokio::select! {
|
||||
// biased; // video has higher priority // causing test_delay_timer failed while transfering big file
|
||||
// biased; // video has higher priority // causing test_delay_timer failed while transferring big file
|
||||
|
||||
Some(data) = rx_from_cm.recv() => {
|
||||
match data {
|
||||
|
@ -223,7 +223,7 @@ lazy_static::lazy_static! {
|
||||
|
||||
// First call set_uinput() will create keyboard and mouse clients.
|
||||
// The clients are ipc connections that must live shorter than tokio runtime.
|
||||
// Thus this funtion must not be called in a temporary runtime.
|
||||
// Thus this function must not be called in a temporary runtime.
|
||||
#[cfg(target_os = "linux")]
|
||||
pub async fn setup_uinput(minx: i32, maxx: i32, miny: i32, maxy: i32) -> ResultType<()> {
|
||||
// Keyboard and mouse both open /dev/uinput
|
||||
|
@ -198,7 +198,7 @@ impl VideoQoS {
|
||||
|
||||
#[cfg(target_os = "android")]
|
||||
{
|
||||
// fix when andorid screen shrinks
|
||||
// fix when android screen shrinks
|
||||
let fix = scrap::Display::fix_quality() as u32;
|
||||
log::debug!("Android screen, fix quality:{}", fix);
|
||||
let base_bitrate = base_bitrate * fix;
|
||||
|
@ -45,7 +45,7 @@ div.right-panel {
|
||||
|
||||
div.icon-and-id {
|
||||
flow: horizontal;
|
||||
border-spacing: 1em;
|
||||
border-spacing: 1em;
|
||||
}
|
||||
|
||||
div.icon {
|
||||
@ -64,7 +64,7 @@ div.id {
|
||||
|
||||
div.permissions {
|
||||
flow: horizontal;
|
||||
border-spacing: 0.5em;
|
||||
border-spacing: 0.5em;
|
||||
}
|
||||
|
||||
div.permissions > div {
|
||||
@ -141,7 +141,7 @@ button.elevate>span {
|
||||
}
|
||||
|
||||
button.elevate>span>span {
|
||||
margin-left:*;
|
||||
margin-left:*;
|
||||
margin-right:*;
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
@import url(common.css);
|
||||
@import url(cm.css);
|
||||
</style>
|
||||
<script type="text/tiscript">
|
||||
<script type="text/tiscript">
|
||||
include "common.tis";
|
||||
include "cm.tis";
|
||||
</script>
|
||||
|
@ -31,7 +31,7 @@ class Body: Reactor.Component
|
||||
var disconnected = c.disconnected;
|
||||
var show_elevation_btn = handler.can_elevate() && show_elevation && !c.is_file_transfer && c.port_forward.length == 0;
|
||||
var show_accept_btn = handler.get_option('approve-mode') != 'password';
|
||||
// below size:* is work around for Linux, it alreayd set in css, but not work, shit sciter
|
||||
// below size:* is work around for Linux, it already set in css, but not work, shit sciter
|
||||
return <div .content style="size:*">
|
||||
<div .left-panel>
|
||||
<div .icon-and-id>
|
||||
|
@ -56,7 +56,7 @@ button[type=checkbox], button[type=checkbox]:active {
|
||||
|
||||
button.outline {
|
||||
border: color(border) solid 1px;
|
||||
background: transparent;
|
||||
background: transparent;
|
||||
color: color(text);
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@ textarea:empty {
|
||||
.base:disabled { background: transparent; }
|
||||
.slider:hover { background: grey; }
|
||||
.slider:active { background: grey; }
|
||||
.base { size: 16px; }
|
||||
.base { size: 16px; }
|
||||
.corner { background: white; }
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ header div.window-icon icon {
|
||||
|
||||
header caption {
|
||||
size: *;
|
||||
}
|
||||
}
|
||||
|
||||
@media platform != "OSX" {
|
||||
button.window {
|
||||
|
@ -12,22 +12,22 @@ div#file-transfer {
|
||||
}
|
||||
|
||||
table
|
||||
{
|
||||
{
|
||||
font: system;
|
||||
border: 1px solid color(border);
|
||||
flow: table-fixed;
|
||||
prototype: Grid;
|
||||
size: *;
|
||||
padding:0;
|
||||
border-spacing: 0;
|
||||
border-spacing: 0;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
table > thead {
|
||||
|
||||
table > thead {
|
||||
behavior: column-resizer;
|
||||
border-bottom: color(border) solid 1px;
|
||||
}
|
||||
}
|
||||
|
||||
table > tbody {
|
||||
behavior: select-multiple;
|
||||
@ -41,20 +41,20 @@ table th {
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
{
|
||||
padding: 4px;
|
||||
foreground-repeat: no-repeat;
|
||||
foreground-position: 50% 3px auto auto;
|
||||
border-left: color(border) solid 1px;
|
||||
}
|
||||
}
|
||||
|
||||
table th.sortable[sort=asc]
|
||||
{
|
||||
table th.sortable[sort=asc]
|
||||
{
|
||||
foreground-image: url(stock:arrow-down);
|
||||
}
|
||||
}
|
||||
|
||||
table th.sortable[sort=desc]
|
||||
{
|
||||
{
|
||||
foreground-image: url(stock:arrow-up);
|
||||
}
|
||||
|
||||
@ -81,10 +81,10 @@ table.has_current thead th:current {
|
||||
table tr:nth-child(odd) { background-color: white; } /* each odd row */
|
||||
table tr:nth-child(even) { background-color: #F4F5F6; } /* each even row */
|
||||
|
||||
table.has_current tr:current /* current row */
|
||||
{
|
||||
background-color: color(accent);
|
||||
}
|
||||
table.has_current tr:current /* current row */
|
||||
{
|
||||
background-color: color(accent);
|
||||
}
|
||||
|
||||
table.has_current tbody tr:checked
|
||||
{
|
||||
@ -95,9 +95,9 @@ table.has_current tbody tr:checked td {
|
||||
color: highlighttext;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
padding: 4px;
|
||||
table td
|
||||
{
|
||||
padding: 4px;
|
||||
text-align: left;
|
||||
font-size: 1em;
|
||||
height: 1.4em;
|
||||
@ -124,11 +124,11 @@ table td:nth-child(4) {
|
||||
section {
|
||||
size: *;
|
||||
margin: 1em;
|
||||
border-spacing: 0.5em;
|
||||
border-spacing: 0.5em;
|
||||
}
|
||||
|
||||
table td:nth-child(1) {
|
||||
foreground-repeat: no-repeat;
|
||||
foreground-repeat: no-repeat;
|
||||
foreground-position: 50% 50%
|
||||
}
|
||||
|
||||
@ -160,11 +160,11 @@ div.toolbar > div.button:hover {
|
||||
|
||||
div.toolbar > div.send {
|
||||
flow: horizontal;
|
||||
border-spacing: 0.5em;
|
||||
border-spacing: 0.5em;
|
||||
}
|
||||
|
||||
div.remote > div.send svg {
|
||||
transform: scale(-1, 1);
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
div.navbar {
|
||||
@ -207,7 +207,7 @@ table.job-table tr td {
|
||||
padding: 0.5em 1em;
|
||||
border-bottom: color(border) 1px solid;
|
||||
flow: horizontal;
|
||||
border-spacing: 1em;
|
||||
border-spacing: 1em;
|
||||
height: 3em;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
@ -217,11 +217,11 @@ table.job-table tr svg {
|
||||
}
|
||||
|
||||
table.job-table tr.is_remote svg {
|
||||
transform: scale(-1, 1);
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
table.job-table tr.is_remote div.svg_continue svg {
|
||||
transform: scale(1, 1);
|
||||
transform: scale(1, 1);
|
||||
}
|
||||
|
||||
table.job-table tr td div.text {
|
||||
@ -246,7 +246,7 @@ table#port-forward thead tr th {
|
||||
|
||||
table#port-forward tr td {
|
||||
height: 3em;
|
||||
text-align: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table#port-forward input[type=text], table#port-forward input[type=number] {
|
||||
|
@ -8,7 +8,7 @@ header #screens {
|
||||
height: 22px;
|
||||
border-radius: 4px;
|
||||
flow: horizontal;
|
||||
border-spacing: 0.5em;
|
||||
border-spacing: 0.5em;
|
||||
padding-right: 1em;
|
||||
position: relative;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ handler.setDisplay = function(x, y, w, h, cursor_embeded) {
|
||||
if (recording) handler.record_screen(true, w, h);
|
||||
}
|
||||
|
||||
// in case toolbar not shown correclty
|
||||
// in case toolbar not shown correctly
|
||||
view.windowMinSize = (scaleIt(500), scaleIt(300));
|
||||
|
||||
function adaptDisplay() {
|
||||
|
@ -95,7 +95,7 @@ extern "C"
|
||||
|
||||
CreateEnvironmentBlock(&lpEnvironment, // Environment block
|
||||
hToken, // New token
|
||||
TRUE); // Inheritence
|
||||
TRUE); // Inheritance
|
||||
}
|
||||
if (lpEnvironment)
|
||||
{
|
||||
|