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: |
|
run: |
|
||||||
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
~/.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
|
uses: actions/upload-artifact@master
|
||||||
with:
|
with:
|
||||||
name: bridge-artifact
|
name: bridge-artifact
|
||||||
@ -1012,7 +1012,7 @@ jobs:
|
|||||||
files: |
|
files: |
|
||||||
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||||
|
|
||||||
- name: Upload Artifcat
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@master
|
uses: actions/upload-artifact@master
|
||||||
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
|
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
|
||||||
with:
|
with:
|
||||||
@ -1188,7 +1188,7 @@ jobs:
|
|||||||
files: |
|
files: |
|
||||||
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||||
|
|
||||||
- name: Upload Artifcat
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@master
|
uses: actions/upload-artifact@master
|
||||||
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
|
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
2
build.py
@ -21,7 +21,7 @@ skip_cargo = False
|
|||||||
def custom_os_system(cmd):
|
def custom_os_system(cmd):
|
||||||
err = os._system(cmd)
|
err = os._system(cmd)
|
||||||
if err != 0:
|
if err != 0:
|
||||||
print(f"Error occured when executing: {cmd}. Exiting.")
|
print(f"Error occurred when executing: {cmd}. Exiting.")
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
# replace prebuilt os.system
|
# replace prebuilt os.system
|
||||||
os._system = 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 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
|
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
|
#!/bin/bash
|
||||||
|
|
||||||
# Build libyuv / opus / libvpx / oboe for Android
|
# Build libyuv / opus / libvpx / oboe for Android
|
||||||
# Required:
|
# Required:
|
||||||
# 1. set VCPKG_ROOT / ANDROID_NDK path environment variables
|
# 1. set VCPKG_ROOT / ANDROID_NDK path environment variables
|
||||||
# 2. vcpkg initialized
|
# 2. vcpkg initialized
|
||||||
# 3. ndk, version: 22 (if ndk < 22 you need to change LD as `export LD=$TOOLCHAIN/bin/$NDK_LLVM_TARGET-ld`)
|
# 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
|
TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/$HOST_TAG
|
||||||
|
|
||||||
function build {
|
function build {
|
||||||
ANDROID_ABI=$1
|
ANDROID_ABI=$1
|
||||||
VCPKG_TARGET=$2
|
VCPKG_TARGET=$2
|
||||||
NDK_LLVM_TARGET=$3
|
NDK_LLVM_TARGET=$3
|
||||||
LIBVPX_TARGET=$4
|
LIBVPX_TARGET=$4
|
||||||
@ -111,15 +111,15 @@ patch -N -d build/oboe -p1 < ../src/oboe.patch
|
|||||||
# x86_64-linux-android
|
# x86_64-linux-android
|
||||||
# i686-linux-android
|
# i686-linux-android
|
||||||
|
|
||||||
# LIBVPX_TARGET :
|
# LIBVPX_TARGET :
|
||||||
# arm64-android-gcc
|
# arm64-android-gcc
|
||||||
# armv7-android-gcc
|
# armv7-android-gcc
|
||||||
# x86_64-android-gcc
|
# x86_64-android-gcc
|
||||||
# x86-android-gcc
|
# x86-android-gcc
|
||||||
|
|
||||||
# args: ANDROID_ABI VCPKG_TARGET NDK_LLVM_TARGET LIBVPX_TARGET
|
# args: ANDROID_ABI VCPKG_TARGET NDK_LLVM_TARGET LIBVPX_TARGET
|
||||||
build arm64-v8a arm64-android aarch64-linux-android arm64-android-gcc
|
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/libvpx
|
||||||
# rm -rf build/oboe
|
# 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 = "";
|
var version = "";
|
||||||
int androidVersion = 0;
|
int androidVersion = 0;
|
||||||
|
|
||||||
/// only avaliable for Windows target
|
/// only available for Windows target
|
||||||
int windowsBuildNumber = 0;
|
int windowsBuildNumber = 0;
|
||||||
DesktopType? desktopType;
|
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> {
|
class SimpleWrapper<T> {
|
||||||
T value;
|
T value;
|
||||||
SimpleWrapper(this.value);
|
SimpleWrapper(this.value);
|
||||||
@ -1409,7 +1409,7 @@ Future<void> reloadAllWindows() async {
|
|||||||
/// Indicate the flutter app is running in portable mode.
|
/// Indicate the flutter app is running in portable mode.
|
||||||
///
|
///
|
||||||
/// [Note]
|
/// [Note]
|
||||||
/// Portable build is only avaliable on Windows.
|
/// Portable build is only available on Windows.
|
||||||
bool isRunningInPortableMode() {
|
bool isRunningInPortableMode() {
|
||||||
if (!Platform.isWindows) {
|
if (!Platform.isWindows) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -464,7 +464,7 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Only avaliable on Windows.
|
/// Only available on Windows.
|
||||||
@protected
|
@protected
|
||||||
MenuEntryBase<String> _createShortCutAction(String id) {
|
MenuEntryBase<String> _createShortCutAction(String id) {
|
||||||
return MenuEntryButton<String>(
|
return MenuEntryButton<String>(
|
||||||
|
|||||||
@ -208,7 +208,7 @@ class RustDeskMultiWindowManager {
|
|||||||
|
|
||||||
/// Remove active window which has [`windowId`]
|
/// Remove active window which has [`windowId`]
|
||||||
///
|
///
|
||||||
/// [Avaliability]
|
/// [Availability]
|
||||||
/// This function should only be called from main window.
|
/// This function should only be called from main window.
|
||||||
/// For other windows, please post a unregister(hide) event to main window handler:
|
/// For other windows, please post a unregister(hide) event to main window handler:
|
||||||
/// `rustDeskWinManager.call(WindowType.Main, kWindowEventHide, {"id": windowId!});`
|
/// `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
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import glob
|
import glob
|
||||||
from tabnanny import check
|
from tabnanny import check
|
||||||
@ -69,7 +69,7 @@ def main():
|
|||||||
for ln in open('../../../Cargo.toml', encoding='utf-8'):
|
for ln in open('../../../Cargo.toml', encoding='utf-8'):
|
||||||
if ln.startswith('version ='):
|
if ln.startswith('version ='):
|
||||||
print('export const ' + ln)
|
print('export const ' + ln)
|
||||||
|
|
||||||
|
|
||||||
def removeComment(ln):
|
def removeComment(ln):
|
||||||
return re.sub('\s+\/\/.*$', '', ln)
|
return re.sub('\s+\/\/.*$', '', ln)
|
||||||
|
|||||||
@ -22,8 +22,8 @@
|
|||||||
import { simd } from "wasm-feature-detect";
|
import { simd } from "wasm-feature-detect";
|
||||||
|
|
||||||
export async function loadVp9(callback) {
|
export async function loadVp9(callback) {
|
||||||
// Multithreading is used only if `options.threading` is true.
|
// Multithreading is used only if `options.threading` is true.
|
||||||
// This requires browser support for the new `SharedArrayBuffer` and `Atomics` APIs,
|
// This requires browser support for the new `SharedArrayBuffer` and `Atomics` APIs,
|
||||||
// currently available in Firefox and Chrome with experimental flags enabled.
|
// currently available in Firefox and Chrome with experimental flags enabled.
|
||||||
// 所有主流浏览器均默认于2018年1月5日禁用SharedArrayBuffer
|
// 所有主流浏览器均默认于2018年1月5日禁用SharedArrayBuffer
|
||||||
const isSIMD = await simd();
|
const isSIMD = await simd();
|
||||||
|
|||||||
@ -116,7 +116,7 @@ bool Win32Window::CreateAndShow(const std::wstring& title,
|
|||||||
HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST);
|
HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST);
|
||||||
UINT dpi = FlutterDesktopGetDpiForMonitor(monitor);
|
UINT dpi = FlutterDesktopGetDpiForMonitor(monitor);
|
||||||
double scale_factor = dpi / 96.0;
|
double scale_factor = dpi / 96.0;
|
||||||
|
|
||||||
HWND window = CreateWindow(
|
HWND window = CreateWindow(
|
||||||
window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
|
window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
|
||||||
Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
|
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",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "Debug",
|
"name": "Debug",
|
||||||
"type": "gdb",
|
"type": "gdb",
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
//! Possible use cases could be for testing user interfaces on different
|
//! Possible use cases could be for testing user interfaces on different
|
||||||
//! plattforms,
|
//! plattforms,
|
||||||
//! building remote control applications or just automating tasks for user
|
//! 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
|
//! For the keyboard there are currently two modes you can use. The first mode
|
||||||
//! is represented by the [key_sequence]() function
|
//! is represented by the [key_sequence]() function
|
||||||
|
|||||||
@ -68,7 +68,7 @@ extern "C" {
|
|||||||
) -> Boolean;
|
) -> Boolean;
|
||||||
|
|
||||||
fn CGEventPost(tapLocation: CGEventTapLocation, event: *mut MyCGEvent);
|
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)
|
fn TISGetInputSourceProperty(source: TISInputSourceRef, property: *const c_void)
|
||||||
-> *mut c_void;
|
-> *mut c_void;
|
||||||
// not present in servo/core-graphics
|
// not present in servo/core-graphics
|
||||||
|
|||||||
@ -578,7 +578,7 @@ impl TransferJob {
|
|||||||
///
|
///
|
||||||
/// [`Note`]
|
/// [`Note`]
|
||||||
/// Conditions:
|
/// Conditions:
|
||||||
/// 1. Files are not waiting for comfirmation by peers.
|
/// 1. Files are not waiting for confirmation by peers.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn job_completed(&self) -> bool {
|
pub fn job_completed(&self) -> bool {
|
||||||
// has no error, Condition 2
|
// has no error, Condition 2
|
||||||
|
|||||||
@ -339,7 +339,7 @@ impl CapturerMag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register the host window class. See the MSDN documentation of the
|
// Register the host window class. See the MSDN documentation of the
|
||||||
// Magnification API for more infomation.
|
// Magnification API for more information.
|
||||||
let wcex = WNDCLASSEXA {
|
let wcex = WNDCLASSEXA {
|
||||||
cbSize: size_of::<WNDCLASSEXA>() as _,
|
cbSize: size_of::<WNDCLASSEXA>() as _,
|
||||||
style: 0,
|
style: 0,
|
||||||
|
|||||||
@ -66,7 +66,7 @@ const char* GetLastMsg()
|
|||||||
|
|
||||||
BOOL InstallUpdate(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
BOOL InstallUpdate(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
// UpdateDriverForPlugAndPlayDevicesW may return FALSE while driver was successfully installed...
|
// UpdateDriverForPlugAndPlayDevicesW may return FALSE while driver was successfully installed...
|
||||||
if (FALSE == UpdateDriverForPlugAndPlayDevicesW(
|
if (FALSE == UpdateDriverForPlugAndPlayDevicesW(
|
||||||
@ -96,7 +96,7 @@ BOOL InstallUpdate(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
|||||||
|
|
||||||
BOOL Uninstall(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
BOOL Uninstall(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
if (FALSE == DiUninstallDriverW(
|
if (FALSE == DiUninstallDriverW(
|
||||||
NULL,
|
NULL,
|
||||||
@ -122,7 +122,7 @@ BOOL Uninstall(LPCWSTR fullInfPath, PBOOL rebootRequired)
|
|||||||
|
|
||||||
BOOL IsDeviceCreated(PBOOL created)
|
BOOL IsDeviceCreated(PBOOL created)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
HDEVINFO hardwareDeviceInfo = SetupDiGetClassDevs(
|
HDEVINFO hardwareDeviceInfo = SetupDiGetClassDevs(
|
||||||
&GUID_DEVINTERFACE_IDD_DRIVER_DEVICE,
|
&GUID_DEVINTERFACE_IDD_DRIVER_DEVICE,
|
||||||
@ -181,7 +181,7 @@ BOOL IsDeviceCreated(PBOOL created)
|
|||||||
|
|
||||||
BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
if (*hSwDevice != NULL)
|
if (*hSwDevice != NULL)
|
||||||
{
|
{
|
||||||
@ -221,7 +221,7 @@ BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
|||||||
SW_DEVICE_CREATE_INFO createInfo = { 0 };
|
SW_DEVICE_CREATE_INFO createInfo = { 0 };
|
||||||
PCWSTR description = L"RustDesk Idd Driver";
|
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 instanceId = L"RustDeskIddDriver";
|
||||||
PCWSTR hardwareIds = L"RustDeskIddDriver\0\0";
|
PCWSTR hardwareIds = L"RustDeskIddDriver\0\0";
|
||||||
PCWSTR compatibleIds = L"RustDeskIddDriver\0\0";
|
PCWSTR compatibleIds = L"RustDeskIddDriver\0\0";
|
||||||
@ -274,7 +274,7 @@ BOOL DeviceCreate(PHSWDEVICE hSwDevice)
|
|||||||
|
|
||||||
VOID DeviceClose(HSWDEVICE hSwDevice)
|
VOID DeviceClose(HSWDEVICE hSwDevice)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
if (hSwDevice != INVALID_HANDLE_VALUE && hSwDevice != NULL)
|
if (hSwDevice != INVALID_HANDLE_VALUE && hSwDevice != NULL)
|
||||||
{
|
{
|
||||||
@ -284,7 +284,7 @@ VOID DeviceClose(HSWDEVICE hSwDevice)
|
|||||||
|
|
||||||
BOOL MonitorPlugIn(UINT index, UINT edid, INT retries)
|
BOOL MonitorPlugIn(UINT index, UINT edid, INT retries)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
if (retries < 0)
|
if (retries < 0)
|
||||||
{
|
{
|
||||||
@ -359,7 +359,7 @@ BOOL MonitorPlugIn(UINT index, UINT edid, INT retries)
|
|||||||
|
|
||||||
BOOL MonitorPlugOut(UINT index)
|
BOOL MonitorPlugOut(UINT index)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
HANDLE hDevice = DeviceOpenHandle();
|
HANDLE hDevice = DeviceOpenHandle();
|
||||||
if (hDevice == INVALID_HANDLE_VALUE || hDevice == NULL)
|
if (hDevice == INVALID_HANDLE_VALUE || hDevice == NULL)
|
||||||
@ -400,7 +400,7 @@ BOOL MonitorPlugOut(UINT index)
|
|||||||
|
|
||||||
BOOL MonitorModesUpdate(UINT index, UINT modeCount, PMonitorMode modes)
|
BOOL MonitorModesUpdate(UINT index, UINT modeCount, PMonitorMode modes)
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
HANDLE hDevice = DeviceOpenHandle();
|
HANDLE hDevice = DeviceOpenHandle();
|
||||||
if (hDevice == INVALID_HANDLE_VALUE || hDevice == NULL)
|
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
|
// https://stackoverflow.com/questions/67164846/createfile-fails-unless-i-disable-enable-my-device
|
||||||
HANDLE DeviceOpenHandle()
|
HANDLE DeviceOpenHandle()
|
||||||
{
|
{
|
||||||
SetLastMsg("Sucess");
|
SetLastMsg("Success");
|
||||||
|
|
||||||
// const int maxDevPathLen = 256;
|
// const int maxDevPathLen = 256;
|
||||||
TCHAR devicePath[256] = { 0 };
|
TCHAR devicePath[256] = { 0 };
|
||||||
|
|||||||
@ -14,7 +14,7 @@ extern "C" {
|
|||||||
* @param rebootRequired [out] Indicates whether a restart is required.
|
* @param rebootRequired [out] Indicates whether a restart is required.
|
||||||
*
|
*
|
||||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||||
*
|
*
|
||||||
* @see GetLastMsg#GetLastMsg
|
* @see GetLastMsg#GetLastMsg
|
||||||
*/
|
*/
|
||||||
BOOL InstallUpdate(LPCTSTR fullInfPath, PBOOL rebootRequired);
|
BOOL InstallUpdate(LPCTSTR fullInfPath, PBOOL rebootRequired);
|
||||||
@ -34,11 +34,11 @@ BOOL Uninstall(LPCTSTR fullInfPath, PBOOL rebootRequired);
|
|||||||
/**
|
/**
|
||||||
* @brief Check if RustDeskIddDriver device is created before.
|
* @brief Check if RustDeskIddDriver device is created before.
|
||||||
* The driver device(adapter) should be single instance.
|
* The driver device(adapter) should be single instance.
|
||||||
*
|
*
|
||||||
* @param created [out] Indicates whether the device is created before.
|
* @param created [out] Indicates whether the device is created before.
|
||||||
*
|
*
|
||||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||||
*
|
*
|
||||||
* @see GetLastMsg#GetLastMsg
|
* @see GetLastMsg#GetLastMsg
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -47,12 +47,12 @@ BOOL IsDeviceCreated(PBOOL created);
|
|||||||
/**
|
/**
|
||||||
* @brief Create device.
|
* @brief Create device.
|
||||||
* Only one device should be created.
|
* 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**.
|
* @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()
|
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||||
*
|
*
|
||||||
* @see GetLastMsg#GetLastMsg
|
* @see GetLastMsg#GetLastMsg
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -79,9 +79,9 @@ VOID DeviceClose(HSWDEVICE hSwDevice);
|
|||||||
* 1 means doing once and retry one time...
|
* 1 means doing once and retry one time...
|
||||||
*
|
*
|
||||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||||
*
|
*
|
||||||
* @see GetLastMsg#GetLastMsg
|
* @see GetLastMsg#GetLastMsg
|
||||||
*
|
*
|
||||||
* @remark Plug in monitor may fail if device is created in a very short time.
|
* @remark Plug in monitor may fail if device is created in a very short time.
|
||||||
* System need some time to prepare the device.
|
* 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.
|
* @param index [in] Monitor index, should be 0, 1, 2.
|
||||||
*
|
*
|
||||||
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
* @return TRUE/FALSE. If FALSE returned, error message can be retrieved by GetLastMsg()
|
||||||
*
|
*
|
||||||
* @see GetLastMsg#GetLastMsg
|
* @see GetLastMsg#GetLastMsg
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -133,9 +133,9 @@ const char* GetLastMsg();
|
|||||||
* @brief Set if print error message when debug.
|
* @brief Set if print error message when debug.
|
||||||
*
|
*
|
||||||
* @param b [in] TRUE to enable printing message.
|
* @param b [in] TRUE to enable printing message.
|
||||||
*
|
*
|
||||||
* @remark For now, no need to read evironment variable to check if should print.
|
* @remark For now, no need to read evironment variable to check if should print.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
VOID SetPrintErrMsg(BOOL b);
|
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
|
#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
|
convert icon.png -resize ${size}x${size} app_icon_$size.png
|
||||||
done
|
done
|
||||||
# from ImageMagick
|
# from ImageMagick
|
||||||
#/bin/rm 16.png 32.png 48.png 128.png 256.png
|
#/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 glob
|
||||||
import sys
|
import sys
|
||||||
import csv
|
import csv
|
||||||
|
|
||||||
def get_lang(lang):
|
def get_lang(lang):
|
||||||
out = {}
|
out = {}
|
||||||
for ln in open('./src/lang/%s.rs'%lang):
|
for ln in open('./src/lang/%s.rs'%lang):
|
||||||
ln = ln.strip()
|
ln = ln.strip()
|
||||||
if ln.startswith('("'):
|
if ln.startswith('("'):
|
||||||
k, v = line_split(ln)
|
k, v = line_split(ln)
|
||||||
out[k] = v
|
out[k] = v
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def line_split(line):
|
def line_split(line):
|
||||||
toks = line.split('", "')
|
toks = line.split('", "')
|
||||||
if len(toks) != 2:
|
if len(toks) != 2:
|
||||||
print(line)
|
print(line)
|
||||||
assert(0)
|
assert(0)
|
||||||
k = toks[0][2:]
|
k = toks[0][2:]
|
||||||
v = toks[1][:-3]
|
v = toks[1][:-3]
|
||||||
return k, v
|
return k, v
|
||||||
|
|
||||||
@ -34,8 +34,8 @@ def main():
|
|||||||
|
|
||||||
|
|
||||||
def expand():
|
def expand():
|
||||||
for fn in glob.glob('./src/lang/*'):
|
for fn in glob.glob('./src/lang/*'):
|
||||||
lang = os.path.basename(fn)[:-3]
|
lang = os.path.basename(fn)[:-3]
|
||||||
if lang in ['en','cn']: continue
|
if lang in ['en','cn']: continue
|
||||||
print(lang)
|
print(lang)
|
||||||
dict = get_lang(lang)
|
dict = get_lang(lang)
|
||||||
@ -52,11 +52,11 @@ def expand():
|
|||||||
else:
|
else:
|
||||||
fw.write(line)
|
fw.write(line)
|
||||||
fw.close()
|
fw.close()
|
||||||
|
|
||||||
|
|
||||||
def to_csv():
|
def to_csv():
|
||||||
for fn in glob.glob('./src/lang/*.rs'):
|
for fn in glob.glob('./src/lang/*.rs'):
|
||||||
lang = os.path.basename(fn)[:-3]
|
lang = os.path.basename(fn)[:-3]
|
||||||
csvfile = open('./src/lang/%s.csv'%lang, "wt")
|
csvfile = open('./src/lang/%s.csv'%lang, "wt")
|
||||||
csvwriter = csv.writer(csvfile)
|
csvwriter = csv.writer(csvfile)
|
||||||
for line in open(fn):
|
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(
|
let res = crate::platform::send_message_to_hnwd(
|
||||||
"FLUTTER_RUNNER_WIN32_WINDOW",
|
"FLUTTER_RUNNER_WIN32_WINDOW",
|
||||||
"RustDesk",
|
"RustDesk",
|
||||||
(WM_USER + 2) as _, // refered from unilinks desktop pub
|
(WM_USER + 2) as _, // referred from unilinks desktop pub
|
||||||
uni_links.as_str(),
|
uni_links.as_str(),
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -500,7 +500,7 @@ pub fn start_os_service() {
|
|||||||
Err(err) => {
|
Err(err) => {
|
||||||
log::error!("Failed to start server: {}", err);
|
log::error!("Failed to start server: {}", err);
|
||||||
}
|
}
|
||||||
_ => { /*no hapen*/ }
|
_ => { /*no happen*/ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::thread::sleep(std::time::Duration::from_millis(super::SERVICE_INTERVAL));
|
std::thread::sleep(std::time::Duration::from_millis(super::SERVICE_INTERVAL));
|
||||||
|
|||||||
@ -251,7 +251,7 @@ impl Connection {
|
|||||||
|
|
||||||
loop {
|
loop {
|
||||||
tokio::select! {
|
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() => {
|
Some(data) = rx_from_cm.recv() => {
|
||||||
match data {
|
match data {
|
||||||
|
|||||||
@ -223,7 +223,7 @@ lazy_static::lazy_static! {
|
|||||||
|
|
||||||
// First call set_uinput() will create keyboard and mouse clients.
|
// First call set_uinput() will create keyboard and mouse clients.
|
||||||
// The clients are ipc connections that must live shorter than tokio runtime.
|
// 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")]
|
#[cfg(target_os = "linux")]
|
||||||
pub async fn setup_uinput(minx: i32, maxx: i32, miny: i32, maxy: i32) -> ResultType<()> {
|
pub async fn setup_uinput(minx: i32, maxx: i32, miny: i32, maxy: i32) -> ResultType<()> {
|
||||||
// Keyboard and mouse both open /dev/uinput
|
// Keyboard and mouse both open /dev/uinput
|
||||||
|
|||||||
@ -198,7 +198,7 @@ impl VideoQoS {
|
|||||||
|
|
||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
{
|
{
|
||||||
// fix when andorid screen shrinks
|
// fix when android screen shrinks
|
||||||
let fix = scrap::Display::fix_quality() as u32;
|
let fix = scrap::Display::fix_quality() as u32;
|
||||||
log::debug!("Android screen, fix quality:{}", fix);
|
log::debug!("Android screen, fix quality:{}", fix);
|
||||||
let base_bitrate = base_bitrate * fix;
|
let base_bitrate = base_bitrate * fix;
|
||||||
|
|||||||
@ -45,7 +45,7 @@ div.right-panel {
|
|||||||
|
|
||||||
div.icon-and-id {
|
div.icon-and-id {
|
||||||
flow: horizontal;
|
flow: horizontal;
|
||||||
border-spacing: 1em;
|
border-spacing: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.icon {
|
div.icon {
|
||||||
@ -64,7 +64,7 @@ div.id {
|
|||||||
|
|
||||||
div.permissions {
|
div.permissions {
|
||||||
flow: horizontal;
|
flow: horizontal;
|
||||||
border-spacing: 0.5em;
|
border-spacing: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.permissions > div {
|
div.permissions > div {
|
||||||
@ -141,7 +141,7 @@ button.elevate>span {
|
|||||||
}
|
}
|
||||||
|
|
||||||
button.elevate>span>span {
|
button.elevate>span>span {
|
||||||
margin-left:*;
|
margin-left:*;
|
||||||
margin-right:*;
|
margin-right:*;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
@import url(common.css);
|
@import url(common.css);
|
||||||
@import url(cm.css);
|
@import url(cm.css);
|
||||||
</style>
|
</style>
|
||||||
<script type="text/tiscript">
|
<script type="text/tiscript">
|
||||||
include "common.tis";
|
include "common.tis";
|
||||||
include "cm.tis";
|
include "cm.tis";
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -31,7 +31,7 @@ class Body: Reactor.Component
|
|||||||
var disconnected = c.disconnected;
|
var disconnected = c.disconnected;
|
||||||
var show_elevation_btn = handler.can_elevate() && show_elevation && !c.is_file_transfer && c.port_forward.length == 0;
|
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';
|
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:*">
|
return <div .content style="size:*">
|
||||||
<div .left-panel>
|
<div .left-panel>
|
||||||
<div .icon-and-id>
|
<div .icon-and-id>
|
||||||
|
|||||||
@ -56,7 +56,7 @@ button[type=checkbox], button[type=checkbox]:active {
|
|||||||
|
|
||||||
button.outline {
|
button.outline {
|
||||||
border: color(border) solid 1px;
|
border: color(border) solid 1px;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: color(text);
|
color: color(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ textarea:empty {
|
|||||||
.base:disabled { background: transparent; }
|
.base:disabled { background: transparent; }
|
||||||
.slider:hover { background: grey; }
|
.slider:hover { background: grey; }
|
||||||
.slider:active { background: grey; }
|
.slider:active { background: grey; }
|
||||||
.base { size: 16px; }
|
.base { size: 16px; }
|
||||||
.corner { background: white; }
|
.corner { background: white; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ header div.window-icon icon {
|
|||||||
|
|
||||||
header caption {
|
header caption {
|
||||||
size: *;
|
size: *;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media platform != "OSX" {
|
@media platform != "OSX" {
|
||||||
button.window {
|
button.window {
|
||||||
|
|||||||
@ -12,22 +12,22 @@ div#file-transfer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table
|
table
|
||||||
{
|
{
|
||||||
font: system;
|
font: system;
|
||||||
border: 1px solid color(border);
|
border: 1px solid color(border);
|
||||||
flow: table-fixed;
|
flow: table-fixed;
|
||||||
prototype: Grid;
|
prototype: Grid;
|
||||||
size: *;
|
size: *;
|
||||||
padding:0;
|
padding:0;
|
||||||
border-spacing: 0;
|
border-spacing: 0;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
table > thead {
|
table > thead {
|
||||||
behavior: column-resizer;
|
behavior: column-resizer;
|
||||||
border-bottom: color(border) solid 1px;
|
border-bottom: color(border) solid 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table > tbody {
|
table > tbody {
|
||||||
behavior: select-multiple;
|
behavior: select-multiple;
|
||||||
@ -41,20 +41,20 @@ table th {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table th
|
table th
|
||||||
{
|
{
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
foreground-repeat: no-repeat;
|
foreground-repeat: no-repeat;
|
||||||
foreground-position: 50% 3px auto auto;
|
foreground-position: 50% 3px auto auto;
|
||||||
border-left: color(border) solid 1px;
|
border-left: color(border) solid 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table th.sortable[sort=asc]
|
table th.sortable[sort=asc]
|
||||||
{
|
{
|
||||||
foreground-image: url(stock:arrow-down);
|
foreground-image: url(stock:arrow-down);
|
||||||
}
|
}
|
||||||
|
|
||||||
table th.sortable[sort=desc]
|
table th.sortable[sort=desc]
|
||||||
{
|
{
|
||||||
foreground-image: url(stock:arrow-up);
|
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(odd) { background-color: white; } /* each odd row */
|
||||||
table tr:nth-child(even) { background-color: #F4F5F6; } /* each even row */
|
table tr:nth-child(even) { background-color: #F4F5F6; } /* each even row */
|
||||||
|
|
||||||
table.has_current tr:current /* current row */
|
table.has_current tr:current /* current row */
|
||||||
{
|
{
|
||||||
background-color: color(accent);
|
background-color: color(accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.has_current tbody tr:checked
|
table.has_current tbody tr:checked
|
||||||
{
|
{
|
||||||
@ -95,9 +95,9 @@ table.has_current tbody tr:checked td {
|
|||||||
color: highlighttext;
|
color: highlighttext;
|
||||||
}
|
}
|
||||||
|
|
||||||
table td
|
table td
|
||||||
{
|
{
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
height: 1.4em;
|
height: 1.4em;
|
||||||
@ -124,11 +124,11 @@ table td:nth-child(4) {
|
|||||||
section {
|
section {
|
||||||
size: *;
|
size: *;
|
||||||
margin: 1em;
|
margin: 1em;
|
||||||
border-spacing: 0.5em;
|
border-spacing: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
table td:nth-child(1) {
|
table td:nth-child(1) {
|
||||||
foreground-repeat: no-repeat;
|
foreground-repeat: no-repeat;
|
||||||
foreground-position: 50% 50%
|
foreground-position: 50% 50%
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,11 +160,11 @@ div.toolbar > div.button:hover {
|
|||||||
|
|
||||||
div.toolbar > div.send {
|
div.toolbar > div.send {
|
||||||
flow: horizontal;
|
flow: horizontal;
|
||||||
border-spacing: 0.5em;
|
border-spacing: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.remote > div.send svg {
|
div.remote > div.send svg {
|
||||||
transform: scale(-1, 1);
|
transform: scale(-1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.navbar {
|
div.navbar {
|
||||||
@ -207,7 +207,7 @@ table.job-table tr td {
|
|||||||
padding: 0.5em 1em;
|
padding: 0.5em 1em;
|
||||||
border-bottom: color(border) 1px solid;
|
border-bottom: color(border) 1px solid;
|
||||||
flow: horizontal;
|
flow: horizontal;
|
||||||
border-spacing: 1em;
|
border-spacing: 1em;
|
||||||
height: 3em;
|
height: 3em;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
@ -217,11 +217,11 @@ table.job-table tr svg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table.job-table tr.is_remote 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 {
|
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 {
|
table.job-table tr td div.text {
|
||||||
@ -246,7 +246,7 @@ table#port-forward thead tr th {
|
|||||||
|
|
||||||
table#port-forward tr td {
|
table#port-forward tr td {
|
||||||
height: 3em;
|
height: 3em;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
table#port-forward input[type=text], table#port-forward input[type=number] {
|
table#port-forward input[type=text], table#port-forward input[type=number] {
|
||||||
|
|||||||
@ -8,7 +8,7 @@ header #screens {
|
|||||||
height: 22px;
|
height: 22px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
flow: horizontal;
|
flow: horizontal;
|
||||||
border-spacing: 0.5em;
|
border-spacing: 0.5em;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ handler.setDisplay = function(x, y, w, h, cursor_embeded) {
|
|||||||
if (recording) handler.record_screen(true, w, h);
|
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));
|
view.windowMinSize = (scaleIt(500), scaleIt(300));
|
||||||
|
|
||||||
function adaptDisplay() {
|
function adaptDisplay() {
|
||||||
|
|||||||
@ -95,7 +95,7 @@ extern "C"
|
|||||||
|
|
||||||
CreateEnvironmentBlock(&lpEnvironment, // Environment block
|
CreateEnvironmentBlock(&lpEnvironment, // Environment block
|
||||||
hToken, // New token
|
hToken, // New token
|
||||||
TRUE); // Inheritence
|
TRUE); // Inheritance
|
||||||
}
|
}
|
||||||
if (lpEnvironment)
|
if (lpEnvironment)
|
||||||
{
|
{
|
||||||
|
|||||||