Servidores •
Compilar •
Docker •
Estrutura •
Screenshots
[English] | [Українська] | [česky] | [中文] | [Magyar] | [Español] | [فارسی] | [Français] | [Deutsch] | [Polski] | [Indonesian] | [Suomi] | [മലയാളം] | [日本語] | [Nederlands] | [Italiano] | [Русский] | [Esperanto] | [한국어] | [العربي] | [Tiếng Việt] | [Ελληνικά]
Precisamos de sua ajuda para traduzir este README e a UI do RustDesk para sua língua nativa
Converse conosco: Discord | Twitter | Reddit
Mais um software de desktop remoto, escrito em Rust. Funciona por padrão, sem necessidade de configuração. Você tem completo controle de seus dados, sem se preocupar com segurança. Você pode usar nossos servidores de rendezvous/relay, configurar seu próprio, ou escrever seu próprio servidor de rendezvous/relay.
RustDesk acolhe contribuições de todos. Leia docs/CONTRIBUTING.md
para ver como começar.
Versões de desktop utilizam sciter para a GUI, por favor baixe a biblioteca dinâmica sciter por conta própria.
-
Prepare seu ambiente de desenvolvimento Rust e ambiente de compilação C++
-
Instale vcpkg, e configure a variável de ambiente
VCPKG_ROOT
corretamente- Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
- Linux/MacOS: vcpkg install libvpx libyuv opus aom
-
Execute
cargo run
sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake
sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel
sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire
git clone https://github.com/microsoft/vcpkg
cd vcpkg
git checkout 2023.04.15
cd ..
vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=$HOME/vcpkg
vcpkg/vcpkg install libvpx libyuv opus aom
cd vcpkg/buildtrees/libvpx/src
cd *
./configure
sed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile
sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile
make
cp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/
cd
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
git clone https://github.com/rustdesk/rustdesk
cd rustdesk
mkdir -p target/debug
wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
mv libsciter-gtk.so target/debug
VCPKG_ROOT=$HOME/vcpkg cargo run
Comece clonando o repositório e montando o container docker:
git clone https://github.com/rustdesk/rustdesk
cd rustdesk
docker build -t "rustdesk-builder" .
Então, sempre que precisar compilar a aplicação, execute este comando:
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
Note que a primeira compilação pode demorar mais antes que as dependências sejam armazenadas em cache, as compilações subsequentes serão mais rápidas. Adicionalmente, se você precisar especificar argumentos diferentes para o comando de compilação, você pode fazê-lo ao final do comando na posição do <OPTIONAL-ARGS>
. Por exemplo, se você gostaria de compilar uma versão de release otimizada, você executaria o comando acima seguido de --release
. O executável gerado estará disponível no diretório alvo no seu sistema, e pode ser executado com:
target/debug/rustdesk
Ou, se estiver rodando um executável de release:
target/release/rustdesk
Por favor verifique que está executando estes comandos da raiz do repositório do RustDesk, senão a aplicação pode não encontrar os recursos necessários. Note também que outros subcomandos do cargo como install
ou run
não são suportados atualmente via este método, já que eles iriam instalar ou rodar o programa dentro do container ao invés do host.
- libs/hbb_common: codec de vídeo, configurações, wrapper de tcp/udp, protobuf, funções de sistema de arquivos para transferência de arquivos, e outras funções utilitárias
- libs/scrap: captura de tela
- libs/enigo: controle de teclado/mouse específico a cada plataforma
- src/ui: GUI
- src/server: serviços de áudio/área de transferência/entrada/vídeo, e conexões de rede
- src/client.rs: iniciar uma conexão "peer to peer"
- src/rendezvous_mediator.rs: Comunicação com rustdesk-server, aguardar pela conexão remota direta (TCP hole punching) ou conexão indireta (relayed)
- src/platform: código específico a cada plataforma