Compare commits

...

15 Commits

Author SHA1 Message Date
Samuel Mannehed
3193f808b5 Comment different resize functions in rfb.js
Some checks failed
Publish / npm (push) Has been cancelled
Publish / snap (push) Has been cancelled
Lint / eslint (push) Has been cancelled
Lint / html (push) Has been cancelled
Test / test (ChromeHeadless, ubuntu-latest) (push) Has been cancelled
Test / test (ChromeHeadless, windows-latest) (push) Has been cancelled
Test / test (EdgeHeadless, windows-latest) (push) Has been cancelled
Test / test (FirefoxHeadless, ubuntu-latest) (push) Has been cancelled
Test / test (FirefoxHeadless, windows-latest) (push) Has been cancelled
Test / test (Safari, macos-latest) (push) Has been cancelled
Translate / translate (push) Has been cancelled
2024-12-27 14:48:20 +01:00
Samuel Mannehed
e6e03a226f Fix resizes back to initial remote session size
Since the expected client size wasn't updated when the browser window
resized, noVNC didn't resize the canvas properly when going back to
the exact same dimensions.

Fixes issue #1903
2024-12-27 14:48:11 +01:00
Pierre Ossman
673cb349fd Replace po2json with pofile
The former doesn't seem to be properly maintained and nodejs gives
deprecation warnings.
2024-12-17 17:15:14 +01:00
Pierre Ossman
3e2e04bea1 Replace node-getopt with commander for args
node-getopt isn't maintained and nodejs has started complaining about
deprecated features in it.
2024-12-17 16:44:21 +01:00
NNN1590
52392ec150
Update Japanese translation 2024-12-14 15:59:01 +09:00
Pierre Ossman
52ddb20d25 Merge branch 'master' of https://github.com/wxtewx/noVNC 2024-11-27 16:12:05 +01:00
Pierre Ossman
7335bb440d Also adjust to "sentence case" in translations
This would have resolved itself automatically on the next translation
update, but this commit will reduce unnecessary noise in that change.
2024-11-27 16:04:18 +01:00
Pierre Ossman
7f5b51acf3 Consistently use "sentence case" style
Try to be more consistent in how we capitalize things. Both the "Title
Case" and "Sentence case" styles are popular, so either would work.
Google and Mozilla both prefer "Sentence case", so let's follow them.
2024-11-27 14:40:40 +01:00
wxtewx
90a6c7bbb6
Update zh_CN.po 2024-11-23 15:36:12 +08:00
Pierre Ossman
2463ccd08f Detect broken Firefox H.264 decoder
The Firefox H.264 decoder on Windows might simply just refuse to deliver
any finished frames. It also doesn't deliver any errors.

Detect this early by expecting a frame after flush() has completed.
2024-11-21 13:33:52 +01:00
Pierre Ossman
a89dfd6141 Handle exceptions from VideoDecoder.flush()
These are not supposed to happen according to the specification, but
Firefox has some bug and throws them anyway.
2024-11-21 13:33:32 +01:00
Pierre Ossman
3677afe305 Do a real H.264 test decode to determine support
Firefox is buggy and reports support for H.264 but then throws errors
once we actually try to decode things. Detect this early by doing a
quick test decode of a single frame.
2024-11-21 13:33:31 +01:00
Pierre Ossman
69750c74a6 Raise JavaScript version requirement
So that we can use await at module top level.
2024-11-21 13:33:10 +01:00
Pierre Ossman
89e0591aab Use common H.264 check in tests
Avoid duplicating this logic in multiple places.
2024-11-21 13:19:44 +01:00
Pierre Ossman
43326eb67b Fix handling of VideoDecoder.isConfigSupported()
It returns an object with details, not just a simple boolean.
2024-11-20 10:46:52 +01:00
101 changed files with 930 additions and 761 deletions

View File

@ -7,7 +7,7 @@ about: Create a report to help us improve
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
**To reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'

View File

@ -1,4 +1,4 @@
noVNC is Copyright (C) 2022 The noVNC Authors
noVNC is Copyright (C) 2022 The noVNC authors
(./AUTHORS)
The noVNC core library files are licensed under the MPL 2.0 (Mozilla

View File

@ -1,4 +1,4 @@
## noVNC: HTML VNC Client Library and Application
## noVNC: HTML VNC client library and application
[![Test Status](https://github.com/novnc/noVNC/workflows/Test/badge.svg)](https://github.com/novnc/noVNC/actions?query=workflow%3ATest)
[![Lint Status](https://github.com/novnc/noVNC/workflows/Lint/badge.svg)](https://github.com/novnc/noVNC/actions?query=workflow%3ALint)
@ -14,19 +14,19 @@ Many companies, projects and products have integrated noVNC including
[OpenNebula](http://opennebula.org/),
[LibVNCServer](http://libvncserver.sourceforge.net), and
[ThinLinc](https://cendio.com/thinlinc). See
[the Projects and Companies wiki page](https://github.com/novnc/noVNC/wiki/Projects-and-companies-using-noVNC)
[the Projects and companies wiki page](https://github.com/novnc/noVNC/wiki/Projects-and-companies-using-noVNC)
for a more complete list with additional info and links.
### Table of Contents
### Table of contents
- [News/help/contact](#newshelpcontact)
- [Features](#features)
- [Screenshots](#screenshots)
- [Browser Requirements](#browser-requirements)
- [Server Requirements](#server-requirements)
- [Quick Start](#quick-start)
- [Installation from Snap Package](#installation-from-snap-package)
- [Integration and Deployment](#integration-and-deployment)
- [Browser requirements](#browser-requirements)
- [Server requirements](#server-requirements)
- [Quick start](#quick-start)
- [Installation from snap package](#installation-from-snap-package)
- [Integration and deployment](#integration-and-deployment)
- [Authors/Contributors](#authorscontributors)
### News/help/contact
@ -86,16 +86,16 @@ See more screenshots
[here](http://novnc.com/screenshots.html).
### Browser Requirements
### Browser requirements
noVNC uses many modern web technologies so a formal requirement list is
not available. However these are the minimum versions we are currently
aware of:
* Chrome 64, Firefox 79, Safari 13.4, Opera 51, Edge 79
* Chrome 89, Firefox 89, Safari 15, Opera 75, Edge 89
### Server Requirements
### Server requirements
noVNC follows the standard VNC protocol, but unlike other VNC clients it does
require WebSockets support. Many servers include support (e.g.
@ -107,7 +107,7 @@ use a WebSockets to TCP socket proxy. noVNC has a sister project
proxy.
### Quick Start
### Quick start
* Use the `novnc_proxy` script to automatically download and start websockify, which
includes a mini-webserver and the WebSockets proxy. The `--vnc` option is
@ -124,23 +124,23 @@ proxy.
script. Hit the Connect button, enter a password if the VNC server has one
configured, and enjoy!
### Installation from Snap Package
Running the command below will install the latest release of noVNC from Snap:
### Installation from snap package
Running the command below will install the latest release of noVNC from snap:
`sudo snap install novnc`
#### Running noVNC from Snap Directly
#### Running noVNC from snap directly
You can run the Snap-package installed novnc directly with, for example:
You can run the snap package installed novnc directly with, for example:
`novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH`
If you want to use certificate files, due to standard Snap confinement restrictions you need to have them in the /home/\<user\>/snap/novnc/current/ directory. If your username is jsmith an example command would be:
If you want to use certificate files, due to standard snap confinement restrictions you need to have them in the /home/\<user\>/snap/novnc/current/ directory. If your username is jsmith an example command would be:
`novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901`
#### Running noVNC from Snap as a Service (Daemon)
The Snap package also has the capability to run a 'novnc' service which can be
#### Running noVNC from snap as a service (daemon)
The snap package also has the capability to run a 'novnc' service which can be
configured to listen on multiple ports connecting to multiple VNC servers
(effectively a service runing multiple instances of novnc).
Instructions (with example values):
@ -172,7 +172,7 @@ services.n6082.listen 6082
services.n6082.vnc localhost:5902
```
Disable a service (note that because of a limitation in Snap it's currently not
Disable a service (note that because of a limitation in snap it's currently not
possible to unset config variables, setting them to blank values is the way
to disable a service):
@ -189,7 +189,7 @@ services.n6082.listen
services.n6082.vnc
```
### Integration and Deployment
### Integration and deployment
Please see our other documents for how to integrate noVNC in your own software,
or deploying the noVNC application in production environments:
@ -212,8 +212,8 @@ that list and you think you should be, feel free to send a PR to fix that.
* [Solly Ross](https://github.com/DirectXMan12) (Red Hat / OpenStack)
* Notable contributions:
* UI and Icons : Pierre Ossman, Chris Gordon
* Original Logo : Michael Sersen
* UI and icons : Pierre Ossman, Chris Gordon
* Original logo : Michael Sersen
* tight encoding : Michael Tinglof (Mercuri.ca)
* RealVNC RSA AES authentication : USTC Vlab Team

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -14,7 +14,7 @@
"Password is required": "Je vyžadováno heslo",
"noVNC encountered an error:": "noVNC narazilo na chybu:",
"Hide/Show the control bar": "Skrýt/zobrazit ovládací panel",
"Move/Drag Viewport": "Přesunout/přetáhnout výřez",
"Move/Drag viewport": "Přesunout/přetáhnout výřez",
"viewport drag": "přesun výřezu",
"Active Mouse Button": "Aktivní tlačítka myši",
"No mousebutton": "Žádné",
@ -22,9 +22,9 @@
"Middle mousebutton": "Prostřední tlačítko myši",
"Right mousebutton": "Pravé tlačítko myši",
"Keyboard": "Klávesnice",
"Show Keyboard": "Zobrazit klávesnici",
"Show keyboard": "Zobrazit klávesnici",
"Extra keys": "Extra klávesy",
"Show Extra Keys": "Zobrazit extra klávesy",
"Show extra keys": "Zobrazit extra klávesy",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Přepnout Ctrl",
"Alt": "Alt",
@ -45,13 +45,13 @@
"Clear": "Vymazat",
"Fullscreen": "Celá obrazovka",
"Settings": "Nastavení",
"Shared Mode": "Sdílený režim",
"View Only": "Pouze prohlížení",
"Clip to Window": "Přizpůsobit oknu",
"Scaling Mode:": "Přizpůsobení velikosti",
"Shared mode": "Sdílený režim",
"View only": "Pouze prohlížení",
"Clip to window": "Přizpůsobit oknu",
"Scaling mode:": "Přizpůsobení velikosti",
"None": "Žádné",
"Local Scaling": "Místní",
"Remote Resizing": "Vzdálené",
"Local scaling": "Místní",
"Remote resizing": "Vzdálené",
"Advanced": "Pokročilé",
"Repeater ID:": "ID opakovače",
"WebSocket": "WebSocket",
@ -59,9 +59,9 @@
"Host:": "Hostitel:",
"Port:": "Port:",
"Path:": "Cesta",
"Automatic Reconnect": "Automatická obnova připojení",
"Reconnect Delay (ms):": "Zpoždění připojení (ms)",
"Show Dot when No Cursor": "Tečka místo chybějícího kurzoru myši",
"Automatic reconnect": "Automatická obnova připojení",
"Reconnect delay (ms):": "Zpoždění připojení (ms)",
"Show dot when no cursor": "Tečka místo chybějícího kurzoru myši",
"Logging:": "Logování:",
"Disconnect": "Odpojit",
"Connect": "Připojit",

View File

@ -13,7 +13,7 @@
"Password is required": "Passwort ist erforderlich",
"noVNC encountered an error:": "Ein Fehler ist aufgetreten:",
"Hide/Show the control bar": "Kontrollleiste verstecken/anzeigen",
"Move/Drag Viewport": "Ansichtsfenster verschieben/ziehen",
"Move/Drag viewport": "Ansichtsfenster verschieben/ziehen",
"viewport drag": "Ansichtsfenster ziehen",
"Active Mouse Button": "Aktive Maustaste",
"No mousebutton": "Keine Maustaste",
@ -21,9 +21,9 @@
"Middle mousebutton": "Mittlere Maustaste",
"Right mousebutton": "Rechte Maustaste",
"Keyboard": "Tastatur",
"Show Keyboard": "Tastatur anzeigen",
"Show keyboard": "Tastatur anzeigen",
"Extra keys": "Zusatztasten",
"Show Extra Keys": "Zusatztasten anzeigen",
"Show extra keys": "Zusatztasten anzeigen",
"Ctrl": "Strg",
"Toggle Ctrl": "Strg umschalten",
"Alt": "Alt",
@ -44,13 +44,13 @@
"Clear": "Löschen",
"Fullscreen": "Vollbild",
"Settings": "Einstellungen",
"Shared Mode": "Geteilter Modus",
"View Only": "Nur betrachten",
"Clip to Window": "Auf Fenster begrenzen",
"Scaling Mode:": "Skalierungsmodus:",
"Shared mode": "Geteilter Modus",
"View only": "Nur betrachten",
"Clip to window": "Auf Fenster begrenzen",
"Scaling mode:": "Skalierungsmodus:",
"None": "Keiner",
"Local Scaling": "Lokales skalieren",
"Remote Resizing": "Serverseitiges skalieren",
"Local scaling": "Lokales skalieren",
"Remote resizing": "Serverseitiges skalieren",
"Advanced": "Erweitert",
"Repeater ID:": "Repeater ID:",
"WebSocket": "WebSocket",
@ -58,8 +58,8 @@
"Host:": "Server:",
"Port:": "Port:",
"Path:": "Pfad:",
"Automatic Reconnect": "Automatisch wiederverbinden",
"Reconnect Delay (ms):": "Wiederverbindungsverzögerung (ms):",
"Automatic reconnect": "Automatisch wiederverbinden",
"Reconnect delay (ms):": "Wiederverbindungsverzögerung (ms):",
"Logging:": "Protokollierung:",
"Disconnect": "Verbindung trennen",
"Connect": "Verbinden",

View File

@ -10,7 +10,7 @@
"Disconnect timeout": "Tiempo de desconexión agotado",
"noVNC encountered an error:": "noVNC ha encontrado un error:",
"Hide/Show the control bar": "Ocultar/Mostrar la barra de control",
"Move/Drag Viewport": "Mover/Arrastrar la ventana",
"Move/Drag viewport": "Mover/Arrastrar la ventana",
"viewport drag": "Arrastrar la ventana",
"Active Mouse Button": "Botón activo del ratón",
"No mousebutton": "Ningún botón del ratón",
@ -18,7 +18,7 @@
"Middle mousebutton": "Botón central del ratón",
"Right mousebutton": "Botón derecho del ratón",
"Keyboard": "Teclado",
"Show Keyboard": "Mostrar teclado",
"Show keyboard": "Mostrar teclado",
"Extra keys": "Teclas adicionales",
"Show Extra Keys": "Mostrar Teclas Adicionales",
"Ctrl": "Ctrl",
@ -43,13 +43,13 @@
"Settings": "Configuraciones",
"Encrypt": "Encriptar",
"Shared Mode": "Modo Compartido",
"View Only": "Solo visualización",
"Clip to Window": "Recortar al tamaño de la ventana",
"Scaling Mode:": "Modo de escalado:",
"View only": "Solo visualización",
"Clip to window": "Recortar al tamaño de la ventana",
"Scaling mode:": "Modo de escalado:",
"None": "Ninguno",
"Local Scaling": "Escalado Local",
"Local Downscaling": "Reducción de escala local",
"Remote Resizing": "Cambio de tamaño remoto",
"Remote resizing": "Cambio de tamaño remoto",
"Advanced": "Avanzado",
"Local Cursor": "Cursor Local",
"Repeater ID:": "ID del Repetidor:",
@ -57,8 +57,8 @@
"Host:": "Host:",
"Port:": "Puerto:",
"Path:": "Ruta:",
"Automatic Reconnect": "Reconexión automática",
"Reconnect Delay (ms):": "Retraso en la reconexión (ms):",
"Automatic reconnect": "Reconexión automática",
"Reconnect delay (ms):": "Retraso en la reconexión (ms):",
"Logging:": "Registrando:",
"Disconnect": "Desconectar",
"Connect": "Conectar",

View File

@ -17,9 +17,9 @@
"Drag": "Faire glisser",
"Move/Drag Viewport": "Déplacer/faire glisser le Viewport",
"Keyboard": "Clavier",
"Show Keyboard": "Afficher le clavier",
"Show keyboard": "Afficher le clavier",
"Extra keys": "Touches supplémentaires",
"Show Extra Keys": "Afficher les touches supplémentaires",
"Show extra keys": "Afficher les touches supplémentaires",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Basculer Ctrl",
"Alt": "Alt",
@ -42,13 +42,13 @@
"Clear": "Effacer",
"Fullscreen": "Plein écran",
"Settings": "Paramètres",
"Shared Mode": "Mode partagé",
"View Only": "Afficher uniquement",
"Clip to Window": "Clip à fenêtre",
"Scaling Mode:": "Mode mise à l'échelle :",
"Shared mode": "Mode partagé",
"View only": "Afficher uniquement",
"Clip to window": "Clip à fenêtre",
"Scaling mode:": "Mode mise à l'échelle :",
"None": "Aucun",
"Local Scaling": "Mise à l'échelle locale",
"Remote Resizing": "Redimensionnement à distance",
"Local scaling": "Mise à l'échelle locale",
"Remote resizing": "Redimensionnement à distance",
"Advanced": "Avancé",
"Quality:": "Qualité :",
"Compression level:": "Niveau de compression :",
@ -58,15 +58,15 @@
"Host:": "Hôte :",
"Port:": "Port :",
"Path:": "Chemin :",
"Automatic Reconnect": "Reconnecter automatiquemen",
"Reconnect Delay (ms):": "Délai de reconnexion (ms) :",
"Show Dot when No Cursor": "Afficher le point lorsqu'il n'y a pas de curseur",
"Automatic reconnect": "Reconnecter automatiquemen",
"Reconnect delay (ms):": "Délai de reconnexion (ms) :",
"Show dot when no cursor": "Afficher le point lorsqu'il n'y a pas de curseur",
"Logging:": "Se connecter :",
"Version:": "Version :",
"Disconnect": "Déconnecter",
"Connect": "Connecter",
"Username:": "Nom d'utilisateur :",
"Password:": "Mot de passe :",
"Send Credentials": "Envoyer les identifiants",
"Send credentials": "Envoyer les identifiants",
"Cancel": "Annuler"
}

View File

@ -15,7 +15,7 @@
"noVNC encountered an error:": "noVNC ha riscontrato un errore:",
"Hide/Show the control bar": "Nascondi/Mostra la barra di controllo",
"Keyboard": "Tastiera",
"Show Keyboard": "Mostra tastiera",
"Show keyboard": "Mostra tastiera",
"Extra keys": "Tasti Aggiuntivi",
"Show Extra Keys": "Mostra Tasti Aggiuntivi",
"Ctrl": "Ctrl",
@ -40,9 +40,9 @@
"Clear": "Pulisci",
"Fullscreen": "Schermo intero",
"Settings": "Impostazioni",
"Shared Mode": "Modalità condivisa",
"Shared mode": "Modalità condivisa",
"View Only": "Sola Visualizzazione",
"Scaling Mode:": "Modalità di ridimensionamento:",
"Scaling mode:": "Modalità di ridimensionamento:",
"None": "Nessuna",
"Local Scaling": "Ridimensionamento Locale",
"Remote Resizing": "Ridimensionamento Remoto",

View File

@ -1,13 +1,14 @@
{
"HTTPS is required for full functionality": "すべての機能を使用するにはHTTPS接続が必要です",
"Running without HTTPS is not recommended, crashes or other issues are likely.": "HTTPS接続なしで実行することは推奨されません。クラッシュしたりその他の問題が発生したりする可能性があります。",
"Connecting...": "接続しています...",
"Disconnecting...": "切断しています...",
"Reconnecting...": "再接続しています...",
"Internal error": "内部エラー",
"Must set host": "ホストを設定する必要があります",
"Failed to connect to server: ": "サーバーへの接続に失敗しました: ",
"Connected (encrypted) to ": "接続しました (暗号化済み): ",
"Connected (unencrypted) to ": "接続しました (暗号化されていません): ",
"Something went wrong, connection is closed": "何らかの問題で、接続が閉じられました",
"Something went wrong, connection is closed": "問題が発生したため、接続が閉じられました",
"Failed to connect to server": "サーバーへの接続に失敗しました",
"Disconnected": "切断しました",
"New connection has been rejected with reason: ": "新規接続は次の理由で拒否されました: ",
@ -16,11 +17,11 @@
"noVNC encountered an error:": "noVNC でエラーが発生しました:",
"Hide/Show the control bar": "コントロールバーを隠す/表示する",
"Drag": "ドラッグ",
"Move/Drag Viewport": "ビューポートを移動/ドラッグ",
"Move/Drag viewport": "ビューポートを移動/ドラッグ",
"Keyboard": "キーボード",
"Show Keyboard": "キーボードを表示",
"Show keyboard": "キーボードを表示",
"Extra keys": "追加キー",
"Show Extra Keys": "追加キーを表示",
"Show extra keys": "追加キーを表示",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Ctrl キーをトグル",
"Alt": "Alt",
@ -41,15 +42,15 @@
"Reset": "リセット",
"Clipboard": "クリップボード",
"Edit clipboard content in the textarea below.": "以下の入力欄からクリップボードの内容を編集できます。",
"Full Screen": "全画面表示",
"Full screen": "全画面表示",
"Settings": "設定",
"Shared Mode": "共有モード",
"View Only": "表示専用",
"Clip to Window": "ウィンドウにクリップ",
"Scaling Mode:": "スケーリングモード:",
"Shared mode": "共有モード",
"View only": "表示専用",
"Clip to window": "ウィンドウにクリップ",
"Scaling mode:": "スケーリングモード:",
"None": "なし",
"Local Scaling": "ローカルスケーリング",
"Remote Resizing": "リモートでリサイズ",
"Local scaling": "ローカルでスケーリング",
"Remote resizing": "リモートでリサイズ",
"Advanced": "高度",
"Quality:": "品質:",
"Compression level:": "圧縮レベル:",
@ -59,9 +60,9 @@
"Host:": "ホスト:",
"Port:": "ポート:",
"Path:": "パス:",
"Automatic Reconnect": "自動再接続",
"Reconnect Delay (ms):": "再接続する遅延 (ミリ秒):",
"Show Dot when No Cursor": "カーソルがないときにドットを表示する",
"Automatic reconnect": "自動再接続",
"Reconnect delay (ms):": "再接続する遅延 (ミリ秒):",
"Show dot when no cursor": "カーソルがないときにドットを表示する",
"Logging:": "ロギング:",
"Version:": "バージョン:",
"Disconnect": "切断",
@ -75,6 +76,6 @@
"Credentials": "資格情報",
"Username:": "ユーザー名:",
"Password:": "パスワード:",
"Send Credentials": "資格情報を送信",
"Send credentials": "資格情報を送信",
"Cancel": "キャンセル"
}

View File

@ -14,7 +14,7 @@
"Password is required": "비밀번호가 필요합니다.",
"noVNC encountered an error:": "noVNC에 오류가 발생했습니다:",
"Hide/Show the control bar": "컨트롤 바 숨기기/보이기",
"Move/Drag Viewport": "움직이기/드래그 뷰포트",
"Move/Drag viewport": "움직이기/드래그 뷰포트",
"viewport drag": "뷰포트 드래그",
"Active Mouse Button": "마우스 버튼 활성화",
"No mousebutton": "마우스 버튼 없음",
@ -22,9 +22,9 @@
"Middle mousebutton": "중간 마우스 버튼",
"Right mousebutton": "오른쪽 마우스 버튼",
"Keyboard": "키보드",
"Show Keyboard": "키보드 보이기",
"Show keyboard": "키보드 보이기",
"Extra keys": "기타 키들",
"Show Extra Keys": "기타 키들 보이기",
"Show extra keys": "기타 키들 보이기",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Ctrl 켜기/끄기",
"Alt": "Alt",
@ -45,13 +45,13 @@
"Clear": "지우기",
"Fullscreen": "전체화면",
"Settings": "설정",
"Shared Mode": "공유 모드",
"View Only": "보기 전용",
"Clip to Window": "창에 클립",
"Scaling Mode:": "스케일링 모드:",
"Shared mode": "공유 모드",
"View only": "보기 전용",
"Clip to window": "창에 클립",
"Scaling mode:": "스케일링 모드:",
"None": "없음",
"Local Scaling": "로컬 스케일링",
"Remote Resizing": "원격 크기 조절",
"Local scaling": "로컬 스케일링",
"Remote resizing": "원격 크기 조절",
"Advanced": "고급",
"Repeater ID:": "중계 ID",
"WebSocket": "웹소켓",
@ -59,8 +59,8 @@
"Host:": "호스트:",
"Port:": "포트:",
"Path:": "위치:",
"Automatic Reconnect": "자동 재연결",
"Reconnect Delay (ms):": "재연결 지연 시간 (ms)",
"Automatic reconnect": "자동 재연결",
"Reconnect delay (ms):": "재연결 지연 시간 (ms)",
"Logging:": "로깅",
"Disconnect": "연결 해제",
"Connect": "연결",

View File

@ -49,8 +49,8 @@
"Settings": "Instellingen",
"Shared Mode": "Gedeelde Modus",
"View Only": "Alleen Kijken",
"Clip to Window": "Randen buiten venster afsnijden",
"Scaling Mode:": "Schaalmodus:",
"Clip to window": "Randen buiten venster afsnijden",
"Scaling mode:": "Schaalmodus:",
"None": "Geen",
"Local Scaling": "Lokaal Schalen",
"Remote Resizing": "Op Afstand Formaat Wijzigen",
@ -63,7 +63,7 @@
"Path:": "Pad:",
"Automatic Reconnect": "Automatisch Opnieuw Verbinden",
"Reconnect Delay (ms):": "Vertraging voor Opnieuw Verbinden (ms):",
"Show Dot when No Cursor": "Geef stip weer indien geen cursor",
"Show dot when no cursor": "Geef stip weer indien geen cursor",
"Logging:": "Logmeldingen:",
"Disconnect": "Verbinding verbreken",
"Connect": "Verbinden",

View File

@ -21,9 +21,9 @@
"Middle mousebutton": "Środkowy przycisk myszy",
"Right mousebutton": "Prawy przycisk myszy",
"Keyboard": "Klawiatura",
"Show Keyboard": "Pokaż klawiaturę",
"Show keyboard": "Pokaż klawiaturę",
"Extra keys": "Przyciski dodatkowe",
"Show Extra Keys": "Pokaż przyciski dodatkowe",
"Show extra keys": "Pokaż przyciski dodatkowe",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Przełącz Ctrl",
"Alt": "Alt",
@ -49,8 +49,8 @@
"Clip to Window": "Przytnij do Okna",
"Scaling Mode:": "Tryb Skalowania:",
"None": "Brak",
"Local Scaling": "Skalowanie lokalne",
"Remote Resizing": "Skalowanie zdalne",
"Local scaling": "Skalowanie lokalne",
"Remote resizing": "Skalowanie zdalne",
"Advanced": "Zaawansowane",
"Repeater ID:": "ID Repeatera:",
"WebSocket": "WebSocket",
@ -58,8 +58,8 @@
"Host:": "Host:",
"Port:": "Port:",
"Path:": "Ścieżka:",
"Automatic Reconnect": "Automatycznie wznawiaj połączenie",
"Reconnect Delay (ms):": "Opóźnienie wznawiania (ms):",
"Automatic reconnect": "Automatycznie wznawiaj połączenie",
"Reconnect delay (ms):": "Opóźnienie wznawiania (ms):",
"Logging:": "Poziom logowania:",
"Disconnect": "Rozłącz",
"Connect": "Połącz",

View File

@ -15,11 +15,11 @@
"noVNC encountered an error:": "O noVNC encontrou um erro:",
"Hide/Show the control bar": "Esconder/mostrar a barra de controles",
"Drag": "Arrastar",
"Move/Drag Viewport": "Mover/arrastar a janela",
"Move/Drag viewport": "Mover/arrastar a janela",
"Keyboard": "Teclado",
"Show Keyboard": "Mostrar teclado",
"Show keyboard": "Mostrar teclado",
"Extra keys": "Teclas adicionais",
"Show Extra Keys": "Mostar teclas adicionais",
"Show extra keys": "Mostar teclas adicionais",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Pressionar/soltar Ctrl",
"Alt": "Alt",
@ -42,13 +42,13 @@
"Clear": "Limpar",
"Fullscreen": "Tela cheia",
"Settings": "Configurações",
"Shared Mode": "Modo compartilhado",
"View Only": "Apenas visualizar",
"Clip to Window": "Recortar à janela",
"Scaling Mode:": "Modo de dimensionamento:",
"Shared mode": "Modo compartilhado",
"View only": "Apenas visualizar",
"Clip to window": "Recortar à janela",
"Scaling mode:": "Modo de dimensionamento:",
"None": "Nenhum",
"Local Scaling": "Local",
"Remote Resizing": "Remoto",
"Local scaling": "Local",
"Remote resizing": "Remoto",
"Advanced": "Avançado",
"Quality:": "Qualidade:",
"Compression level:": "Nível de compressão:",
@ -58,15 +58,15 @@
"Host:": "Host:",
"Port:": "Porta:",
"Path:": "Caminho:",
"Automatic Reconnect": "Reconexão automática",
"Reconnect Delay (ms):": "Atraso da reconexão (ms)",
"Show Dot when No Cursor": "Mostrar ponto quando não há cursor",
"Automatic reconnect": "Reconexão automática",
"Reconnect delay (ms):": "Atraso da reconexão (ms)",
"Show dot when no cursor": "Mostrar ponto quando não há cursor",
"Logging:": "Registros:",
"Version:": "Versão:",
"Disconnect": "Desconectar",
"Connect": "Conectar",
"Username:": "Nome de usuário:",
"Password:": "Senha:",
"Send Credentials": "Enviar credenciais",
"Send credentials": "Enviar credenciais",
"Cancel": "Cancelar"
}

View File

@ -15,9 +15,9 @@
"noVNC encountered an error:": "Ошибка noVNC: ",
"Hide/Show the control bar": "Скрыть/Показать контрольную панель",
"Drag": "Переместить",
"Move/Drag Viewport": "Переместить окно",
"Move/Drag viewport": "Переместить окно",
"Keyboard": "Клавиатура",
"Show Keyboard": "Показать клавиатуру",
"Show keyboard": "Показать клавиатуру",
"Extra keys": "Дополнительные Кнопки",
"Show Extra Keys": "Показать Дополнительные Кнопки",
"Ctrl": "Ctrl",
@ -42,13 +42,13 @@
"Clear": "Очистить",
"Fullscreen": "Во весь экран",
"Settings": "Настройки",
"Shared Mode": "Общий режим",
"Shared mode": "Общий режим",
"View Only": "Только Просмотр",
"Clip to Window": "В окно",
"Scaling Mode:": "Масштаб:",
"Clip to window": "В окно",
"Scaling mode:": "Масштаб:",
"None": "Нет",
"Local Scaling": "Локальный масштаб",
"Remote Resizing": "Удаленная перенастройка размера",
"Local scaling": "Локальный масштаб",
"Remote resizing": "Удаленная перенастройка размера",
"Advanced": "Дополнительно",
"Quality:": "Качество",
"Compression level:": "Уровень Сжатия",
@ -58,9 +58,9 @@
"Host:": "Сервер:",
"Port:": "Порт:",
"Path:": "Путь:",
"Automatic Reconnect": "Автоматическое переподключение",
"Reconnect Delay (ms):": "Задержка переподключения (мс):",
"Show Dot when No Cursor": "Показать точку вместо курсора",
"Automatic reconnect": "Автоматическое переподключение",
"Reconnect delay (ms):": "Задержка переподключения (мс):",
"Show dot when no cursor": "Показать точку вместо курсора",
"Logging:": "Лог:",
"Version:": "Версия",
"Disconnect": "Отключение",

View File

@ -42,12 +42,12 @@
"Reset": "Återställ",
"Clipboard": "Urklipp",
"Edit clipboard content in the textarea below.": "Redigera urklippets innehåll i fältet nedan.",
"Full Screen": "Fullskärm",
"Full screen": "Fullskärm",
"Settings": "Inställningar",
"Shared Mode": "Delat Läge",
"View Only": "Endast Visning",
"Clip to Window": "Begränsa till Fönster",
"Scaling Mode:": "Skalningsläge:",
"Scaling mode:": "Skalningsläge:",
"None": "Ingen",
"Local Scaling": "Lokal Skalning",
"Remote Resizing": "Ändra Storlek",
@ -61,8 +61,8 @@
"Port:": "Port:",
"Path:": "Sökväg:",
"Automatic Reconnect": "Automatisk Återanslutning",
"Reconnect Delay (ms):": "Fördröjning (ms):",
"Show Dot when No Cursor": "Visa prick när ingen muspekare finns",
"Reconnect delay (ms):": "Fördröjning (ms):",
"Show dot when no cursor": "Visa prick när ingen muspekare finns",
"Logging:": "Loggning:",
"Version:": "Version:",
"Disconnect": "Koppla från",

View File

@ -23,7 +23,7 @@
"Keyboard": "Klavye",
"Show Keyboard": "Klavye Düzenini Göster",
"Extra keys": "Ekstra tuşlar",
"Show Extra Keys": "Ekstra tuşları göster",
"Show extra keys": "Ekstra tuşları göster",
"Ctrl": "Ctrl",
"Toggle Ctrl": "Ctrl Değiştir ",
"Alt": "Alt",

View File

@ -10,7 +10,7 @@
"Disconnect timeout": "超时断开",
"noVNC encountered an error:": "noVNC 遇到一个错误:",
"Hide/Show the control bar": "显示/隐藏控制栏",
"Move/Drag Viewport": "移动/拖动窗口",
"Move/Drag viewport": "移动/拖动窗口",
"viewport drag": "窗口拖动",
"Active Mouse Button": "启动鼠标按键",
"No mousebutton": "禁用鼠标按键",
@ -18,9 +18,9 @@
"Middle mousebutton": "鼠标中键",
"Right mousebutton": "鼠标右键",
"Keyboard": "键盘",
"Show Keyboard": "显示键盘",
"Show keyboard": "显示键盘",
"Extra keys": "额外按键",
"Show Extra Keys": "显示额外按键",
"Show extra keys": "显示额外按键",
"Ctrl": "Ctrl",
"Toggle Ctrl": "切换 Ctrl",
"Edit clipboard content in the textarea below.": "在下面的文本区域中编辑剪贴板内容。",
@ -43,14 +43,14 @@
"Fullscreen": "全屏",
"Settings": "设置",
"Encrypt": "加密",
"Shared Mode": "分享模式",
"View Only": "仅查看",
"Clip to Window": "限制/裁切窗口大小",
"Scaling Mode:": "缩放模式:",
"Shared mode": "分享模式",
"View only": "仅查看",
"Clip to window": "限制/裁切窗口大小",
"Scaling mode:": "缩放模式:",
"None": "无",
"Local Scaling": "本地缩放",
"Local scaling": "本地缩放",
"Local Downscaling": "降低本地尺寸",
"Remote Resizing": "远程调整大小",
"Remote resizing": "远程调整大小",
"Advanced": "高级",
"Local Cursor": "本地光标",
"Repeater ID:": "中继站 ID",
@ -58,8 +58,8 @@
"Host:": "主机:",
"Port:": "端口:",
"Path:": "路径:",
"Automatic Reconnect": "自动重新连接",
"Reconnect Delay (ms):": "重新连接间隔 (ms)",
"Automatic reconnect": "自动重新连接",
"Reconnect delay (ms):": "重新连接间隔 (ms)",
"Logging:": "日志级别:",
"Disconnect": "断开连接",
"Connect": "连接",

View File

@ -14,7 +14,7 @@
"Password is required": "請提供密碼",
"noVNC encountered an error:": "noVNC 遇到一個錯誤:",
"Hide/Show the control bar": "顯示/隱藏控制列",
"Move/Drag Viewport": "拖放顯示範圍",
"Move/Drag viewport": "拖放顯示範圍",
"viewport drag": "顯示範圍拖放",
"Active Mouse Button": "啟用滑鼠按鍵",
"No mousebutton": "無滑鼠按鍵",
@ -22,9 +22,9 @@
"Middle mousebutton": "滑鼠中鍵",
"Right mousebutton": "滑鼠右鍵",
"Keyboard": "鍵盤",
"Show Keyboard": "顯示鍵盤",
"Show keyboard": "顯示鍵盤",
"Extra keys": "額外按鍵",
"Show Extra Keys": "顯示額外按鍵",
"Show extra keys": "顯示額外按鍵",
"Ctrl": "Ctrl",
"Toggle Ctrl": "切換 Ctrl",
"Alt": "Alt",
@ -45,13 +45,13 @@
"Clear": "清除",
"Fullscreen": "全螢幕",
"Settings": "設定",
"Shared Mode": "分享模式",
"View Only": "僅檢視",
"Clip to Window": "限制/裁切視窗大小",
"Scaling Mode:": "縮放模式:",
"Shared mode": "分享模式",
"View only": "僅檢視",
"Clip to window": "限制/裁切視窗大小",
"Scaling mode:": "縮放模式:",
"None": "無",
"Local Scaling": "本機縮放",
"Remote Resizing": "遠端調整大小",
"Local scaling": "本機縮放",
"Remote resizing": "遠端調整大小",
"Advanced": "進階",
"Repeater ID:": "中繼站 ID",
"WebSocket": "WebSocket",
@ -59,8 +59,8 @@
"Host:": "主機:",
"Port:": "連接埠:",
"Path:": "路徑:",
"Automatic Reconnect": "自動重新連線",
"Reconnect Delay (ms):": "重新連線間隔 (ms)",
"Automatic reconnect": "自動重新連線",
"Reconnect delay (ms):": "重新連線間隔 (ms)",
"Logging:": "日誌級別:",
"Disconnect": "中斷連線",
"Connect": "連線",

View File

@ -1,13 +1,13 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.
*/
/*
* Localization Utilities
* Localization utilities
*/
export class Localizer {

View File

@ -1,6 +1,6 @@
/*
* noVNC base CSS
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
*/
@ -213,7 +213,7 @@ html {
}
/* ----------------------------------------
* Control Bar
* Control bar
* ----------------------------------------
*/
@ -629,13 +629,13 @@ html {
margin-left: 1rem;
}
/* Connection Controls */
/* Connection controls */
:root:not(.noVNC_connected) #noVNC_disconnect_button {
display: none;
}
/* ----------------------------------------
* Status Dialog
* Status dialog
* ----------------------------------------
*/
@ -701,7 +701,7 @@ html {
}
/* ----------------------------------------
* Connect Dialog
* Connect dialog
* ----------------------------------------
*/
@ -770,7 +770,7 @@ html {
}
/* ----------------------------------------
* Server verification Dialog
* Server verification dialog
* ----------------------------------------
*/
@ -787,7 +787,7 @@ html {
}
/* ----------------------------------------
* Password Dialog
* Password dialog
* ----------------------------------------
*/
@ -806,7 +806,7 @@ html {
/* ----------------------------------------
* Main Area
* Main area
* ----------------------------------------
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC general input element CSS
* Copyright (C) 2022 The noVNC Authors
* Copyright (C) 2022 The noVNC authors
* noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
* This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.
@ -27,7 +27,7 @@ export function initLogging(level) {
// the url can be requested in the following way:
// https://www.example.com#myqueryparam=myvalue&password=secretvalue
//
// Even Mixing public and non public parameters will work:
// Even mixing public and non public parameters will work:
// https://www.example.com?nonsecretparam=example.com#password=secretvalue
export function getQueryVar(name, defVal) {
"use strict";

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2021 The noVNC Authors
* Copyright (C) 2021 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2024 The noVNC Authors
* Copyright (C) 2024 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)
* Licensed under MPL 2.0 (see LICENSE.txt)
*

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2024 The noVNC Authors
* Copyright (C) 2024 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2021 The noVNC Authors
* Copyright (C) 2021 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.
@ -720,6 +720,7 @@ export default class RFB extends EventTargetMixin {
currentHeight == this._expectedClientHeight;
}
// Handle browser window resizes
_handleResize() {
// Don't change anything if the client size is already as expected
if (this._clientHasExpectedSize()) {
@ -730,6 +731,7 @@ export default class RFB extends EventTargetMixin {
window.requestAnimationFrame(() => {
this._updateClip();
this._updateScale();
this._saveExpectedClientSize();
});
if (this._resizeSession) {
@ -1378,7 +1380,7 @@ export default class RFB extends EventTargetMixin {
}
}
// Message Handlers
// Message handlers
_negotiateProtocolVersion() {
if (this._sock.rQwait("version", 12)) {
@ -2427,7 +2429,7 @@ export default class RFB extends EventTargetMixin {
switch (xvpMsg) {
case 0: // XVP_FAIL
Log.Error("XVP Operation Failed");
Log.Error("XVP operation failed");
break;
case 1: // XVP_INIT
this._rfbXvpVer = xvpVer;
@ -2756,7 +2758,7 @@ export default class RFB extends EventTargetMixin {
}
_handleLedEvent() {
if (this._sock.rQwait("LED Status", 1)) {
if (this._sock.rQwait("LED status", 1)) {
return false;
}
@ -2871,6 +2873,7 @@ export default class RFB extends EventTargetMixin {
this._fbWidth, this._fbHeight);
}
// Handle resize-messages from the server
_resize(width, height) {
this._fbWidth = width;
this._fbHeight = height;

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.
@ -9,6 +9,7 @@
*/
import * as Log from './logging.js';
import Base64 from '../base64.js';
// Touch detection
export let isTouchDevice = ('ontouchstart' in document.documentElement) ||
@ -74,7 +75,7 @@ export let supportsWebCodecsH264Decode = false;
async function _checkWebCodecsH264DecodeSupport() {
if (!('VideoDecoder' in window)) {
return;
return false;
}
// We'll need to make do with some placeholders here
@ -85,10 +86,70 @@ async function _checkWebCodecsH264DecodeSupport() {
optimizeForLatency: true,
};
const result = await VideoDecoder.isConfigSupported(config);
supportsWebCodecsH264Decode = result.supported;
let support = await VideoDecoder.isConfigSupported(config);
if (!support.supported) {
return false;
}
// Firefox incorrectly reports supports for H.264 under some
// circumstances, so we need to actually test a real frame
// https://bugzilla.mozilla.org/show_bug.cgi?id=1932392
const data = new Uint8Array(Base64.decode(
'AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4Hc' +
'Rem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5Zjkg' +
'LSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIz' +
'IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9u' +
'czogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4' +
'MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4' +
'ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4' +
'OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJv' +
'bWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0x' +
'IHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9' +
'MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVz' +
'PTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNj' +
'ZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9' +
'YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAu' +
'NjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFx' +
'PTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw=='));
let gotframe = false;
let error = null;
let decoder = new VideoDecoder({
output: (frame) => { gotframe = true; },
error: (e) => { error = e; },
});
let chunk = new EncodedVideoChunk({
timestamp: 0,
type: 'key',
data: data,
});
decoder.configure(config);
decoder.decode(chunk);
try {
await decoder.flush();
} catch (e) {
// Firefox incorrectly throws an exception here
// https://bugzilla.mozilla.org/show_bug.cgi?id=1932566
error = e;
}
// Firefox fails to deliver the error on Windows, so we need to
// check if we got a frame instead
// https://bugzilla.mozilla.org/show_bug.cgi?id=1932579
if (!gotframe) {
return false;
}
if (error !== null) {
return false;
}
return true;
}
_checkWebCodecsH264DecodeSupport();
supportsWebCodecsH264Decode = await _checkWebCodecsH264DecodeSupport();
/*
* The functions for detection of platforms and browsers below are exported

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Copyright (C) 2020 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* See README.md for usage and integration instructions.

View File

@ -1,6 +1,6 @@
/*
* Websock: high-performance buffering wrapper
* Copyright (C) 2019 The noVNC Authors
* Copyright (C) 2019 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*
* Websock is similar to the standard WebSocket / RTCDataChannel object
@ -70,7 +70,7 @@ export default class Websock {
};
}
// Getters and Setters
// Getters and setters
get readyState() {
let subState;
@ -94,7 +94,7 @@ export default class Websock {
return "unknown";
}
// Receive Queue
// Receive queue
rQpeek8() {
return this._rQ[this._rQi];
}
@ -173,7 +173,7 @@ export default class Websock {
return false;
}
// Send Queue
// Send queue
sQpush8(num) {
this._sQensureSpace(1);
@ -227,7 +227,7 @@ export default class Websock {
}
}
// Event Handlers
// Event handlers
off(evt) {
this._eventHandlers[evt] = () => {};
}
@ -325,7 +325,7 @@ export default class Websock {
if (this._rQbufferSize > MAX_RQ_GROW_SIZE) {
this._rQbufferSize = MAX_RQ_GROW_SIZE;
if (this._rQbufferSize - (this._rQlen - this._rQi) < minFit) {
throw new Error("Receive Queue buffer exceeded " + MAX_RQ_GROW_SIZE + " bytes, and the new message could not fit");
throw new Error("Receive queue buffer exceeded " + MAX_RQ_GROW_SIZE + " bytes, and the new message could not fit");
}
}

View File

@ -1,4 +1,4 @@
# 1. Internal Modules
# 1. Internal modules
The noVNC client is composed of several internal modules that handle
rendering, input, networking, etc. Each of the modules is designed to
@ -9,7 +9,7 @@ stable, and this documentation is not maintained as well as the
official external API.
## 1.1 Module List
## 1.1 Module list
* __Keyboard__ (core/input/keyboard.js): Keyboard input event handler with
non-US keyboard support. Translates keyDown and keyUp events to X11
@ -32,9 +32,9 @@ callback event name, and the callback function.
## 2. Modules
## 2.1 Keyboard Module
## 2.1 Keyboard module
### 2.1.1 Configuration Attributes
### 2.1.1 Configuration attributes
None
@ -52,9 +52,9 @@ None
| onkeypress | (keysym, code, down) | Handler for key press/release
## 2.2 Display Module
## 2.2 Display module
### 2.2.1 Configuration Attributes
### 2.2.1 Configuration attributes
| name | type | mode | default | description
| ------------ | ----- | ---- | ------- | ------------

View File

@ -1,4 +1,4 @@
# Embedding and Deploying noVNC Application
# Embedding and deploying noVNC application
This document describes how to embed and deploy the noVNC application, which
includes settings and a full user interface. If you are looking for
@ -71,8 +71,8 @@ query string. Currently the following options are available:
* `logging` - The console log level. Can be one of `error`, `warn`, `info` or
`debug`.
## HTTP Serving Considerations
### Browser Cache Issue
## HTTP serving considerations
### Browser cache issue
If you serve noVNC files using a web server that provides an ETag header, and
include any options in the query string, a nasty browser cache issue can bite
@ -84,7 +84,7 @@ to always revalidate cached files using conditional requests. The correct
semantics are achieved via the (confusingly named) `Cache-Control: no-cache`
header that needs to be provided in the web server responses.
### Example Server Configurations
### Example server configurations
Apache:

View File

@ -16,7 +16,7 @@ noVNC includes a small example application called `vnc_lite.html`. This does
not make use of all the features of noVNC, but is a good start to see how to
do things.
## Conversion of Modules
## Conversion of modules
noVNC is written using ECMAScript 6 modules. This is not supported by older
versions of Node.js. To use noVNC with those older versions of Node.js the

View File

@ -30,7 +30,7 @@ provides a cut-and-paste URL to go to.
active connections
.SH AUTHOR
The noVNC Authors
The noVNC authors
https://github.com/novnc/noVNC
.SH SEE ALSO

View File

@ -5,11 +5,11 @@ export default [
js.configs.recommended,
{
languageOptions: {
ecmaVersion: 2020,
ecmaVersion: 2022,
sourceType: "module",
globals: {
...globals.browser,
...globals.es2020,
...globals.es2022,
}
},
ignores: ["**/xtscancodes.js"],

View File

@ -56,8 +56,7 @@
"karma-safari-launcher": "latest",
"karma-script-launcher": "latest",
"mocha": "latest",
"node-getopt": "latest",
"po2json": "latest",
"pofile": "latest",
"sinon": "latest",
"sinon-chai": "latest"
},

View File

@ -19,7 +19,7 @@ update-js: $(JSONFILES)
update-pot:
xgettext --output=noVNC.js.pot \
--copyright-holder="The noVNC Authors" \
--copyright-holder="The noVNC authors" \
--package-name="noVNC" \
--package-version="$(VERSION)" \
--msgid-bugs-address="novnc@googlegroups.com" \

View File

@ -1,5 +1,5 @@
# Czech translations for noVNC package.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Petr <petr@kle.cz>, 2018.
#
@ -78,7 +78,7 @@ msgid "Hide/Show the control bar"
msgstr "Skrýt/zobrazit ovládací panel"
#: ../vnc.html:101
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "Přesunout/přetáhnout výřez"
#: ../vnc.html:101
@ -110,7 +110,7 @@ msgid "Keyboard"
msgstr "Klávesnice"
#: ../vnc.html:119
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Zobrazit klávesnici"
#: ../vnc.html:126
@ -118,7 +118,7 @@ msgid "Extra keys"
msgstr "Extra klávesy"
#: ../vnc.html:126
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "Zobrazit extra klávesy"
#: ../vnc.html:131
@ -202,19 +202,19 @@ msgid "Settings"
msgstr "Nastavení"
#: ../vnc.html:197
msgid "Shared Mode"
msgid "Shared mode"
msgstr "Sdílený režim"
#: ../vnc.html:200
msgid "View Only"
msgid "View only"
msgstr "Pouze prohlížení"
#: ../vnc.html:204
msgid "Clip to Window"
msgid "Clip to window"
msgstr "Přizpůsobit oknu"
#: ../vnc.html:207
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Přizpůsobení velikosti"
#: ../vnc.html:209
@ -222,11 +222,11 @@ msgid "None"
msgstr "Žádné"
#: ../vnc.html:210
msgid "Local Scaling"
msgid "Local scaling"
msgstr "Místní"
#: ../vnc.html:211
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Vzdálené"
#: ../vnc.html:216
@ -258,15 +258,15 @@ msgid "Path:"
msgstr "Cesta"
#: ../vnc.html:244
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Automatická obnova připojení"
#: ../vnc.html:247
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Zpoždění připojení (ms)"
#: ../vnc.html:252
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr "Tečka místo chybějícího kurzoru myši"
#: ../vnc.html:257

View File

@ -1,6 +1,6 @@
# German translations for noVNC package
# German translation for noVNC.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Loek Janssen <loekjanssen@gmail.com>, 2016.
#
@ -76,7 +76,7 @@ msgid "Hide/Show the control bar"
msgstr "Kontrollleiste verstecken/anzeigen"
#: ../vnc.html:106
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "Ansichtsfenster verschieben/ziehen"
#: ../vnc.html:106
@ -108,7 +108,7 @@ msgid "Keyboard"
msgstr "Tastatur"
#: ../vnc.html:124
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Tastatur anzeigen"
#: ../vnc.html:131
@ -116,7 +116,7 @@ msgid "Extra keys"
msgstr "Zusatztasten"
#: ../vnc.html:131
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "Zusatztasten anzeigen"
#: ../vnc.html:136
@ -200,19 +200,19 @@ msgid "Settings"
msgstr "Einstellungen"
#: ../vnc.html:202
msgid "Shared Mode"
msgid "Shared mode"
msgstr "Geteilter Modus"
#: ../vnc.html:205
msgid "View Only"
msgid "View only"
msgstr "Nur betrachten"
#: ../vnc.html:209
msgid "Clip to Window"
msgid "Clip to window"
msgstr "Auf Fenster begrenzen"
#: ../vnc.html:212
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Skalierungsmodus:"
#: ../vnc.html:214
@ -220,11 +220,11 @@ msgid "None"
msgstr "Keiner"
#: ../vnc.html:215
msgid "Local Scaling"
msgid "Local scaling"
msgstr "Lokales skalieren"
#: ../vnc.html:216
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Serverseitiges skalieren"
#: ../vnc.html:221
@ -256,11 +256,11 @@ msgid "Path:"
msgstr "Pfad:"
#: ../vnc.html:249
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Automatisch wiederverbinden"
#: ../vnc.html:252
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Wiederverbindungsverzögerung (ms):"
#: ../vnc.html:258

View File

@ -1,5 +1,5 @@
# Greek translations for noVNC package.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Giannis Kosmas <kosmasgiannis@gmail.com>, 2016.
#

View File

@ -1,6 +1,6 @@
# Spanish translations for noVNC package
# Traducciones al español para el paquete noVNC.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Juanjo Diaz <juanjo.diazmo@gmail.com>, 2018.
# Adrian Scillato <ascillato@gmail.com>, 2021.
@ -64,7 +64,7 @@ msgid "Hide/Show the control bar"
msgstr "Ocultar/Mostrar la barra de control"
#: ../vnc.html:106
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "Mover/Arrastrar la ventana"
#: ../vnc.html:106
@ -96,7 +96,7 @@ msgid "Keyboard"
msgstr "Teclado"
#: ../vnc.html:124
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Mostrar teclado"
#: ../vnc.html:131
@ -196,15 +196,15 @@ msgid "Shared Mode"
msgstr "Modo Compartido"
#: ../vnc.html:205
msgid "View Only"
msgid "View only"
msgstr "Solo visualización"
#: ../vnc.html:209
msgid "Clip to Window"
msgid "Clip to window"
msgstr "Recortar al tamaño de la ventana"
#: ../vnc.html:212
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Modo de escalado:"
#: ../vnc.html:214
@ -220,7 +220,7 @@ msgid "Local Downscaling"
msgstr "Reducción de escala local"
#: ../vnc.html:217
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Cambio de tamaño remoto"
#: ../vnc.html:222
@ -252,11 +252,11 @@ msgid "Path:"
msgstr "Ruta:"
#: ../vnc.html:254
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Reconexión automática"
#: ../vnc.html:257
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Retraso en la reconexión (ms):"
#: ../vnc.html:263

View File

@ -1,6 +1,6 @@
# French translations for noVNC package
# Traductions françaises du paquet noVNC.
# Copyright (C) 2021 The noVNC Authors
# Copyright (C) 2021 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Jose <jose.matsuda@canada.ca>, 2021.
# Lowxorx <lowxorx@lahan.fr>, 2022.
@ -92,7 +92,7 @@ msgid "Keyboard"
msgstr "Clavier"
#: ../vnc.html:97
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Afficher le clavier"
#: ../vnc.html:102
@ -100,7 +100,7 @@ msgid "Extra keys"
msgstr "Touches supplémentaires"
#: ../vnc.html:102
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "Afficher les touches supplémentaires"
#: ../vnc.html:107
@ -192,19 +192,19 @@ msgid "Settings"
msgstr "Paramètres"
#: ../vnc.html:175
msgid "Shared Mode"
msgid "Shared mode"
msgstr "Mode partagé"
#: ../vnc.html:178
msgid "View Only"
msgid "View only"
msgstr "Afficher uniquement"
#: ../vnc.html:182
msgid "Clip to Window"
msgid "Clip to window"
msgstr "Clip à fenêtre"
#: ../vnc.html:185
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Mode mise à l'échelle :"
#: ../vnc.html:187
@ -212,11 +212,11 @@ msgid "None"
msgstr "Aucun"
#: ../vnc.html:188
msgid "Local Scaling"
msgid "Local scaling"
msgstr "Mise à l'échelle locale"
#: ../vnc.html:189
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Redimensionnement à distance"
#: ../vnc.html:194
@ -256,15 +256,15 @@ msgid "Path:"
msgstr "Chemin :"
#: ../vnc.html:231
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Reconnecter automatiquemen"
#: ../vnc.html:234
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Délai de reconnexion (ms) :"
#: ../vnc.html:239
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr "Afficher le point lorsqu'il n'y a pas de curseur"
#: ../vnc.html:244
@ -292,7 +292,7 @@ msgid "Password:"
msgstr "Mot de passe :"
#: ../vnc.html:298
msgid "Send Credentials"
msgid "Send credentials"
msgstr "Envoyer les identifiants"
#: ../vnc.html:308

View File

@ -1,6 +1,6 @@
# Italian translations for noVNC
# Traduzione italiana di noVNC
# Copyright (C) 2022 The noVNC Authors
# Copyright (C) 2022 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Fabio Fantoni <fabio.fantoni@m2r.biz>, 2022.
#
@ -84,7 +84,7 @@ msgid "Drag"
msgstr ""
#: ../vnc.html:78
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr ""
#: ../vnc.html:84
@ -92,7 +92,7 @@ msgid "Keyboard"
msgstr "Tastiera"
#: ../vnc.html:84
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Mostra tastiera"
#: ../vnc.html:89
@ -192,7 +192,7 @@ msgid "Settings"
msgstr "Impostazioni"
#: ../vnc.html:162
msgid "Shared Mode"
msgid "Shared mode"
msgstr "Modalità condivisa"
#: ../vnc.html:165
@ -200,11 +200,11 @@ msgid "View Only"
msgstr "Sola Visualizzazione"
#: ../vnc.html:169
msgid "Clip to Window"
msgid "Clip to window"
msgstr ""
#: ../vnc.html:172
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Modalità di ridimensionamento:"
#: ../vnc.html:174

227
po/ja.po
View File

@ -1,15 +1,15 @@
# Japanese translations for noVNC package
# noVNC パッケージに対する日訳
# Copyright (C) 2019 The noVNC Authors
# Copyright (C) 2019-2024 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# nnn1590 <nnn1590@nnn1590.org>, 2019-2020.
# nnn1590 <nnn1590@nnn1590.org>, 2019-2024.
#
msgid ""
msgstr ""
"Project-Id-Version: noVNC 1.1.0\n"
"Project-Id-Version: noVNC 1.5.0\n"
"Report-Msgid-Bugs-To: novnc@googlegroups.com\n"
"POT-Creation-Date: 2022-12-27 15:24+0100\n"
"PO-Revision-Date: 2023-03-21 12:42+0900\n"
"POT-Creation-Date: 2024-06-03 14:10+0200\n"
"PO-Revision-Date: 2024-12-14 15:22+0900\n"
"Last-Translator: nnn1590 <nnn1590@nnn1590.org>\n"
"Language-Team: Japanese\n"
"Language: ja\n"
@ -20,8 +20,11 @@ msgstr ""
"X-Generator: Poedit 2.3\n"
#: ../app/ui.js:69
msgid "HTTPS is required for full functionality"
msgstr "すべての機能を使用するにはHTTPS接続が必要です"
msgid ""
"Running without HTTPS is not recommended, crashes or other issues are likely."
msgstr ""
"HTTPS接続なしで実行することは推奨されません。クラッシュしたりその他の問題が発"
"生したりする可能性があります。"
#: ../app/ui.js:410
msgid "Connecting..."
@ -43,321 +46,297 @@ msgstr "内部エラー"
msgid "Must set host"
msgstr "ホストを設定する必要があります"
#: ../app/ui.js:1110
#: ../app/ui.js:1052
msgid "Failed to connect to server: "
msgstr "サーバーへの接続に失敗しました: "
#: ../app/ui.js:1118
msgid "Connected (encrypted) to "
msgstr "接続しました (暗号化済み): "
#: ../app/ui.js:1112
#: ../app/ui.js:1120
msgid "Connected (unencrypted) to "
msgstr "接続しました (暗号化されていません): "
#: ../app/ui.js:1135
#: ../app/ui.js:1143
msgid "Something went wrong, connection is closed"
msgstr "何らかの問題で、接続が閉じられました"
msgstr "問題が発生したため、接続が閉じられました"
#: ../app/ui.js:1138
#: ../app/ui.js:1146
msgid "Failed to connect to server"
msgstr "サーバーへの接続に失敗しました"
#: ../app/ui.js:1150
#: ../app/ui.js:1158
msgid "Disconnected"
msgstr "切断しました"
#: ../app/ui.js:1165
#: ../app/ui.js:1173
msgid "New connection has been rejected with reason: "
msgstr "新規接続は次の理由で拒否されました: "
#: ../app/ui.js:1168
#: ../app/ui.js:1176
msgid "New connection has been rejected"
msgstr "新規接続は拒否されました"
#: ../app/ui.js:1234
#: ../app/ui.js:1242
msgid "Credentials are required"
msgstr "資格情報が必要です"
#: ../vnc.html:57
#: ../vnc.html:55
msgid "noVNC encountered an error:"
msgstr "noVNC でエラーが発生しました:"
#: ../vnc.html:67
#: ../vnc.html:65
msgid "Hide/Show the control bar"
msgstr "コントロールバーを隠す/表示する"
#: ../vnc.html:76
#: ../vnc.html:74
msgid "Drag"
msgstr "ドラッグ"
#: ../vnc.html:76
msgid "Move/Drag Viewport"
#: ../vnc.html:74
msgid "Move/Drag viewport"
msgstr "ビューポートを移動/ドラッグ"
#: ../vnc.html:82
#: ../vnc.html:80
msgid "Keyboard"
msgstr "キーボード"
#: ../vnc.html:82
msgid "Show Keyboard"
#: ../vnc.html:80
msgid "Show keyboard"
msgstr "キーボードを表示"
#: ../vnc.html:87
#: ../vnc.html:85
msgid "Extra keys"
msgstr "追加キー"
#: ../vnc.html:87
msgid "Show Extra Keys"
#: ../vnc.html:85
msgid "Show extra keys"
msgstr "追加キーを表示"
#: ../vnc.html:92
#: ../vnc.html:90
msgid "Ctrl"
msgstr "Ctrl"
#: ../vnc.html:92
#: ../vnc.html:90
msgid "Toggle Ctrl"
msgstr "Ctrl キーをトグル"
#: ../vnc.html:95
#: ../vnc.html:93
msgid "Alt"
msgstr "Alt"
#: ../vnc.html:95
#: ../vnc.html:93
msgid "Toggle Alt"
msgstr "Alt キーをトグル"
#: ../vnc.html:98
#: ../vnc.html:96
msgid "Toggle Windows"
msgstr "Windows キーをトグル"
#: ../vnc.html:98
#: ../vnc.html:96
msgid "Windows"
msgstr "Windows"
#: ../vnc.html:101
#: ../vnc.html:99
msgid "Send Tab"
msgstr "Tab キーを送信"
#: ../vnc.html:101
#: ../vnc.html:99
msgid "Tab"
msgstr "Tab"
#: ../vnc.html:104
#: ../vnc.html:102
msgid "Esc"
msgstr "Esc"
#: ../vnc.html:104
#: ../vnc.html:102
msgid "Send Escape"
msgstr "Escape キーを送信"
#: ../vnc.html:107
#: ../vnc.html:105
msgid "Ctrl+Alt+Del"
msgstr "Ctrl+Alt+Del"
#: ../vnc.html:107
#: ../vnc.html:105
msgid "Send Ctrl-Alt-Del"
msgstr "Ctrl-Alt-Del を送信"
#: ../vnc.html:114
#: ../vnc.html:112
msgid "Shutdown/Reboot"
msgstr "シャットダウン/再起動"
#: ../vnc.html:114
#: ../vnc.html:112
msgid "Shutdown/Reboot..."
msgstr "シャットダウン/再起動..."
#: ../vnc.html:120
#: ../vnc.html:118
msgid "Power"
msgstr "電源"
#: ../vnc.html:122
#: ../vnc.html:120
msgid "Shutdown"
msgstr "シャットダウン"
#: ../vnc.html:123
#: ../vnc.html:121
msgid "Reboot"
msgstr "再起動"
#: ../vnc.html:124
#: ../vnc.html:122
msgid "Reset"
msgstr "リセット"
#: ../vnc.html:129 ../vnc.html:135
#: ../vnc.html:127 ../vnc.html:133
msgid "Clipboard"
msgstr "クリップボード"
#: ../vnc.html:137
#: ../vnc.html:135
msgid "Edit clipboard content in the textarea below."
msgstr "以下の入力欄からクリップボードの内容を編集できます。"
#: ../vnc.html:145
msgid "Full Screen"
#: ../vnc.html:143
msgid "Full screen"
msgstr "全画面表示"
#: ../vnc.html:150 ../vnc.html:156
#: ../vnc.html:148 ../vnc.html:154
msgid "Settings"
msgstr "設定"
#: ../vnc.html:160
msgid "Shared Mode"
#: ../vnc.html:158
msgid "Shared mode"
msgstr "共有モード"
#: ../vnc.html:163
msgid "View Only"
#: ../vnc.html:161
msgid "View only"
msgstr "表示専用"
#: ../vnc.html:167
msgid "Clip to Window"
#: ../vnc.html:165
msgid "Clip to window"
msgstr "ウィンドウにクリップ"
#: ../vnc.html:170
msgid "Scaling Mode:"
#: ../vnc.html:168
msgid "Scaling mode:"
msgstr "スケーリングモード:"
#: ../vnc.html:172
#: ../vnc.html:170
msgid "None"
msgstr "なし"
#: ../vnc.html:173
msgid "Local Scaling"
msgstr "ローカルスケーリング"
#: ../vnc.html:171
msgid "Local scaling"
msgstr "ローカルスケーリング"
#: ../vnc.html:174
msgid "Remote Resizing"
#: ../vnc.html:172
msgid "Remote resizing"
msgstr "リモートでリサイズ"
#: ../vnc.html:179
#: ../vnc.html:177
msgid "Advanced"
msgstr "高度"
#: ../vnc.html:182
#: ../vnc.html:180
msgid "Quality:"
msgstr "品質:"
#: ../vnc.html:186
#: ../vnc.html:184
msgid "Compression level:"
msgstr "圧縮レベル:"
#: ../vnc.html:191
#: ../vnc.html:189
msgid "Repeater ID:"
msgstr "リピーター ID:"
#: ../vnc.html:195
#: ../vnc.html:193
msgid "WebSocket"
msgstr "WebSocket"
#: ../vnc.html:198
#: ../vnc.html:196
msgid "Encrypt"
msgstr "暗号化"
#: ../vnc.html:201
#: ../vnc.html:199
msgid "Host:"
msgstr "ホスト:"
#: ../vnc.html:205
#: ../vnc.html:203
msgid "Port:"
msgstr "ポート:"
#: ../vnc.html:209
#: ../vnc.html:207
msgid "Path:"
msgstr "パス:"
#: ../vnc.html:216
msgid "Automatic Reconnect"
#: ../vnc.html:214
msgid "Automatic reconnect"
msgstr "自動再接続"
#: ../vnc.html:219
msgid "Reconnect Delay (ms):"
#: ../vnc.html:217
msgid "Reconnect delay (ms):"
msgstr "再接続する遅延 (ミリ秒):"
#: ../vnc.html:224
msgid "Show Dot when No Cursor"
#: ../vnc.html:222
msgid "Show dot when no cursor"
msgstr "カーソルがないときにドットを表示する"
#: ../vnc.html:229
#: ../vnc.html:227
msgid "Logging:"
msgstr "ロギング:"
#: ../vnc.html:238
#: ../vnc.html:236
msgid "Version:"
msgstr "バージョン:"
#: ../vnc.html:246
#: ../vnc.html:244
msgid "Disconnect"
msgstr "切断"
#: ../vnc.html:269
#: ../vnc.html:267
msgid "Connect"
msgstr "接続"
#: ../vnc.html:278
#: ../vnc.html:276
msgid "Server identity"
msgstr "サーバーの識別情報"
#: ../vnc.html:281
#: ../vnc.html:279
msgid "The server has provided the following identifying information:"
msgstr "サーバーは以下の識別情報を提供しています:"
#: ../vnc.html:285
#: ../vnc.html:283
msgid "Fingerprint:"
msgstr "フィンガープリント:"
#: ../vnc.html:288
#: ../vnc.html:286
msgid ""
"Please verify that the information is correct and press \"Approve\". "
"Otherwise press \"Reject\"."
msgstr ""
"この情報が正しい場合は「承認」を、そうでない場合は「拒否」を押してく"
"ださい。"
"この情報が正しい場合は「承認」を、そうでない場合は「拒否」を押してください。"
#: ../vnc.html:293
#: ../vnc.html:291
msgid "Approve"
msgstr "承認"
#: ../vnc.html:294
#: ../vnc.html:292
msgid "Reject"
msgstr "拒否"
#: ../vnc.html:302
#: ../vnc.html:300
msgid "Credentials"
msgstr "資格情報"
#: ../vnc.html:306
#: ../vnc.html:304
msgid "Username:"
msgstr "ユーザー名:"
#: ../vnc.html:310
#: ../vnc.html:308
msgid "Password:"
msgstr "パスワード:"
#: ../vnc.html:314
msgid "Send Credentials"
#: ../vnc.html:312
msgid "Send credentials"
msgstr "資格情報を送信"
#: ../vnc.html:323
#: ../vnc.html:321
msgid "Cancel"
msgstr "キャンセル"
#~ msgid "Clear"
#~ msgstr "クリア"
#~ msgid "Password is required"
#~ msgstr "パスワードが必要です"
#~ msgid "viewport drag"
#~ msgstr "ビューポートをドラッグ"
#~ msgid "Active Mouse Button"
#~ msgstr "アクティブなマウスボタン"
#~ msgid "No mousebutton"
#~ msgstr "マウスボタンなし"
#~ msgid "Left mousebutton"
#~ msgstr "左マウスボタン"
#~ msgid "Middle mousebutton"
#~ msgstr "中マウスボタン"
#~ msgid "Right mousebutton"
#~ msgstr "右マウスボタン"
#~ msgid "Send Password"
#~ msgstr "パスワードを送信"

View File

@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Baw Appie <pp121324@gmail.com>, 2018.
#
@ -78,7 +78,7 @@ msgid "Hide/Show the control bar"
msgstr "컨트롤 바 숨기기/보이기"
#: ../vnc.html:108
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "움직이기/드래그 뷰포트"
#: ../vnc.html:108
@ -110,7 +110,7 @@ msgid "Keyboard"
msgstr "키보드"
#: ../vnc.html:126
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "키보드 보이기"
#: ../vnc.html:133
@ -118,7 +118,7 @@ msgid "Extra keys"
msgstr "기타 키들"
#: ../vnc.html:133
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "기타 키들 보이기"
#: ../vnc.html:138
@ -202,19 +202,19 @@ msgid "Settings"
msgstr "설정"
#: ../vnc.html:204
msgid "Shared Mode"
msgid "Shared mode"
msgstr "공유 모드"
#: ../vnc.html:207
msgid "View Only"
msgid "View only"
msgstr "보기 전용"
#: ../vnc.html:211
msgid "Clip to Window"
msgid "Clip to window"
msgstr "창에 클립"
#: ../vnc.html:214
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "스케일링 모드:"
#: ../vnc.html:216
@ -222,11 +222,11 @@ msgid "None"
msgstr "없음"
#: ../vnc.html:217
msgid "Local Scaling"
msgid "Local scaling"
msgstr "로컬 스케일링"
#: ../vnc.html:218
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "원격 크기 조절"
#: ../vnc.html:223
@ -258,11 +258,11 @@ msgid "Path:"
msgstr "위치:"
#: ../vnc.html:251
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "자동 재연결"
#: ../vnc.html:254
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "재연결 지연 시간 (ms)"
#: ../vnc.html:260

View File

@ -1,6 +1,6 @@
# Dutch translations for noVNC package
# Nederlandse vertalingen voor het pakket noVNC.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Loek Janssen <loekjanssen@gmail.com>, 2016.
#
@ -219,11 +219,11 @@ msgid "View Only"
msgstr "Alleen Kijken"
#: ../vnc.html:202
msgid "Clip to Window"
msgid "Clip to window"
msgstr "Randen buiten venster afsnijden"
#: ../vnc.html:205
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Schaalmodus:"
#: ../vnc.html:207
@ -275,7 +275,7 @@ msgid "Reconnect Delay (ms):"
msgstr "Vertraging voor Opnieuw Verbinden (ms):"
#: ../vnc.html:250
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr "Geef stip weer indien geen cursor"
#: ../vnc.html:255

View File

@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The noVNC Authors
# Copyright (C) YEAR The noVNC authors
# This file is distributed under the same license as the noVNC package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
@ -91,7 +91,7 @@ msgid "Drag"
msgstr ""
#: ../vnc.html:74
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr ""
#: ../vnc.html:80
@ -99,7 +99,7 @@ msgid "Keyboard"
msgstr ""
#: ../vnc.html:80
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr ""
#: ../vnc.html:85
@ -107,7 +107,7 @@ msgid "Extra keys"
msgstr ""
#: ../vnc.html:85
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr ""
#: ../vnc.html:90
@ -191,7 +191,7 @@ msgid "Edit clipboard content in the textarea below."
msgstr ""
#: ../vnc.html:143
msgid "Full Screen"
msgid "Full screen"
msgstr ""
#: ../vnc.html:148 ../vnc.html:154
@ -199,19 +199,19 @@ msgid "Settings"
msgstr ""
#: ../vnc.html:158
msgid "Shared Mode"
msgid "Shared mode"
msgstr ""
#: ../vnc.html:161
msgid "View Only"
msgid "View only"
msgstr ""
#: ../vnc.html:165
msgid "Clip to Window"
msgid "Clip to window"
msgstr ""
#: ../vnc.html:168
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr ""
#: ../vnc.html:170
@ -219,11 +219,11 @@ msgid "None"
msgstr ""
#: ../vnc.html:171
msgid "Local Scaling"
msgid "Local scaling"
msgstr ""
#: ../vnc.html:172
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr ""
#: ../vnc.html:177
@ -263,15 +263,15 @@ msgid "Path:"
msgstr ""
#: ../vnc.html:214
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr ""
#: ../vnc.html:217
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr ""
#: ../vnc.html:222
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr ""
#: ../vnc.html:227
@ -329,7 +329,7 @@ msgid "Password:"
msgstr ""
#: ../vnc.html:312
msgid "Send Credentials"
msgid "Send credentials"
msgstr ""
#: ../vnc.html:321

View File

@ -1,5 +1,5 @@
# Polish translations for noVNC package.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Mariusz Jamro <mariusz.jamro@gmail.com>, 2017.
#
@ -108,7 +108,7 @@ msgid "Keyboard"
msgstr "Klawiatura"
#: ../vnc.html:124
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Pokaż klawiaturę"
#: ../vnc.html:131
@ -116,7 +116,7 @@ msgid "Extra keys"
msgstr "Przyciski dodatkowe"
#: ../vnc.html:131
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "Pokaż przyciski dodatkowe"
#: ../vnc.html:136
@ -220,11 +220,11 @@ msgid "None"
msgstr "Brak"
#: ../vnc.html:215
msgid "Local Scaling"
msgid "Local scaling"
msgstr "Skalowanie lokalne"
#: ../vnc.html:216
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Skalowanie zdalne"
#: ../vnc.html:221
@ -256,11 +256,11 @@ msgid "Path:"
msgstr "Ścieżka:"
#: ../vnc.html:249
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Automatycznie wznawiaj połączenie"
#: ../vnc.html:252
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Opóźnienie wznawiania (ms):"
#: ../vnc.html:258

View File

@ -1,7 +1,7 @@
#!/usr/bin/env node
/*
* ps2js: gettext .po to noVNC .js converter
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -17,29 +17,24 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const getopt = require('node-getopt');
const { program } = require('commander');
const fs = require('fs');
const po2json = require("po2json");
const pofile = require("pofile");
const opt = getopt.create([
['h', 'help', 'display this help'],
]).bindHelp().parseSystem();
program
.argument('<input>')
.argument('<output>')
.parse(process.argv);
if (opt.argv.length != 2) {
console.error("Incorrect number of arguments given");
process.exit(1);
}
let data = fs.readFileSync(program.args[0], "utf8");
let po = pofile.parse(data);
const data = po2json.parseFileSync(opt.argv[0]);
const bodyPart = Object.keys(data)
.filter(msgid => msgid !== "")
.filter(msgid => data[msgid][1] !== "")
.map((msgid) => {
const msgstr = data[msgid][1];
return " " + JSON.stringify(msgid) + ": " + JSON.stringify(msgstr);
}).join(",\n");
const bodyPart = po.items
.filter(item => item.msgid !== "")
.filter(item => item.msgstr[0] !== "")
.map(item => " " + JSON.stringify(item.msgid) + ": " + JSON.stringify(item.msgstr[0]))
.join(",\n");
const output = "{\n" + bodyPart + "\n}";
fs.writeFileSync(opt.argv[1], output);
fs.writeFileSync(program.args[1], output);

View File

@ -1,5 +1,5 @@
# Portuguese translations for noVNC package.
# Copyright (C) 2021 The noVNC Authors
# Copyright (C) 2021 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# <liddack@outlook.com>, 2021.
#
@ -83,7 +83,7 @@ msgid "Drag"
msgstr "Arrastar"
#: ../vnc.html:78
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "Mover/arrastar a janela"
#: ../vnc.html:84
@ -91,7 +91,7 @@ msgid "Keyboard"
msgstr "Teclado"
#: ../vnc.html:84
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Mostrar teclado"
#: ../vnc.html:89
@ -99,7 +99,7 @@ msgid "Extra keys"
msgstr "Teclas adicionais"
#: ../vnc.html:89
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "Mostar teclas adicionais"
#: ../vnc.html:94
@ -191,19 +191,19 @@ msgid "Settings"
msgstr "Configurações"
#: ../vnc.html:162
msgid "Shared Mode"
msgid "Shared mode"
msgstr "Modo compartilhado"
#: ../vnc.html:165
msgid "View Only"
msgid "View only"
msgstr "Apenas visualizar"
#: ../vnc.html:169
msgid "Clip to Window"
msgid "Clip to window"
msgstr "Recortar à janela"
#: ../vnc.html:172
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Modo de dimensionamento:"
#: ../vnc.html:174
@ -211,11 +211,11 @@ msgid "None"
msgstr "Nenhum"
#: ../vnc.html:175
msgid "Local Scaling"
msgid "Local scaling"
msgstr "Local"
#: ../vnc.html:176
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Remoto"
#: ../vnc.html:181
@ -255,15 +255,15 @@ msgid "Path:"
msgstr "Caminho:"
#: ../vnc.html:218
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Reconexão automática"
#: ../vnc.html:221
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Atraso da reconexão (ms)"
#: ../vnc.html:226
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr "Mostrar ponto quando não há cursor"
#: ../vnc.html:231
@ -291,7 +291,7 @@ msgid "Password:"
msgstr "Senha:"
#: ../vnc.html:285
msgid "Send Credentials"
msgid "Send credentials"
msgstr "Enviar credenciais"
#: ../vnc.html:295

View File

@ -86,7 +86,7 @@ msgid "Drag"
msgstr "Переместить"
#: ../vnc.html:78
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "Переместить окно"
#: ../vnc.html:84
@ -94,7 +94,7 @@ msgid "Keyboard"
msgstr "Клавиатура"
#: ../vnc.html:84
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "Показать клавиатуру"
#: ../vnc.html:89
@ -194,7 +194,7 @@ msgid "Settings"
msgstr "Настройки"
#: ../vnc.html:162
msgid "Shared Mode"
msgid "Shared mode"
msgstr "Общий режим"
#: ../vnc.html:165
@ -202,11 +202,11 @@ msgid "View Only"
msgstr "Только Просмотр"
#: ../vnc.html:169
msgid "Clip to Window"
msgid "Clip to window"
msgstr "В окно"
#: ../vnc.html:172
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Масштаб:"
#: ../vnc.html:174
@ -214,11 +214,11 @@ msgid "None"
msgstr "Нет"
#: ../vnc.html:175
msgid "Local Scaling"
msgid "Local scaling"
msgstr "Локальный масштаб"
#: ../vnc.html:176
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "Удаленная перенастройка размера"
#: ../vnc.html:181
@ -258,15 +258,15 @@ msgid "Path:"
msgstr "Путь:"
#: ../vnc.html:218
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "Автоматическое переподключение"
#: ../vnc.html:221
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Задержка переподключения (мс):"
#: ../vnc.html:226
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr "Показать точку вместо курсора"
#: ../vnc.html:231

View File

@ -1,6 +1,6 @@
# Swedish translations for noVNC package
# Svenska översättningar för paketet noVNC.
# Copyright (C) 2020 The noVNC Authors
# Copyright (C) 2020 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Samuel Mannehed <samuel@cendio.se>, 2020.
#
@ -195,7 +195,7 @@ msgid "Edit clipboard content in the textarea below."
msgstr "Redigera urklippets innehåll i fältet nedan."
#: ../vnc.html:143
msgid "Full Screen"
msgid "Full screen"
msgstr "Fullskärm"
#: ../vnc.html:148 ../vnc.html:154
@ -215,7 +215,7 @@ msgid "Clip to Window"
msgstr "Begränsa till Fönster"
#: ../vnc.html:168
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "Skalningsläge:"
#: ../vnc.html:170
@ -271,11 +271,11 @@ msgid "Automatic Reconnect"
msgstr "Automatisk Återanslutning"
#: ../vnc.html:217
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "Fördröjning (ms):"
#: ../vnc.html:222
msgid "Show Dot when No Cursor"
msgid "Show dot when no cursor"
msgstr "Visa prick när ingen muspekare finns"
#: ../vnc.html:227

View File

@ -1,6 +1,6 @@
# Turkish translations for noVNC package
# Turkish translation for noVNC.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Ömer ÇAKMAK <farukomercakmak@gmail.com>, 2018.
#
@ -116,7 +116,7 @@ msgid "Extra keys"
msgstr "Ekstra tuşlar"
#: ../vnc.html:131
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "Ekstra tuşları göster"
#: ../vnc.html:136

View File

@ -1,18 +1,18 @@
#!/usr/bin/env node
/*
* xgettext-html: HTML gettext parser
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*/
const getopt = require('node-getopt');
const { program } = require('commander');
const jsdom = require("jsdom");
const fs = require("fs");
const opt = getopt.create([
['o', 'output=FILE', 'write output to specified file'],
['h', 'help', 'display this help'],
]).bindHelp().parseSystem();
program
.argument('<INPUT...>')
.requiredOption('-o, --output <FILE>', 'write output to specified file')
.parse(process.argv);
const strings = {};
@ -87,8 +87,8 @@ function process(elem, locator, enabled) {
}
}
for (let i = 0; i < opt.argv.length; i++) {
const fn = opt.argv[i];
for (let i = 0; i < program.args.length; i++) {
const fn = program.args[i];
const file = fs.readFileSync(fn, "utf8");
const dom = new jsdom.JSDOM(file, { includeNodeLocations: true });
const body = dom.window.document.body;
@ -116,4 +116,4 @@ for (let str in strings) {
output += "\n";
}
fs.writeFileSync(opt.options.output, output);
fs.writeFileSync(program.opts().output, output);

View File

@ -1,5 +1,5 @@
# Simplified Chinese translations for noVNC package.
# Copyright (C) 2020 The noVNC Authors
# Copyright (C) 2020 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Peter Dave Hello <hsu@peterdavehello.org>, 2018.
#
@ -7,278 +7,367 @@ msgid ""
msgstr ""
"Project-Id-Version: noVNC 1.1.0\n"
"Report-Msgid-Bugs-To: novnc@googlegroups.com\n"
"POT-Creation-Date: 2018-01-10 00:53+0800\n"
"PO-Revision-Date: 2020-01-02 13:19+0800\n"
"Last-Translator: CUI Wei <ghostplant@qq.com>\n"
"POT-Creation-Date: 2024-06-03 14:10+0200\n"
"PO-Revision-Date: 2024-11-23 15:29+0800\n"
"Last-Translator: wxtewx <wxtewx@qq.com>\n"
"Language-Team: \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.5\n"
#: ../app/ui.js:430
#: ../app/ui.js:69
msgid ""
"Running without HTTPS is not recommended, crashes or other issues are likely."
msgstr "不建议在没有 HTTPS 的情况下运行,可能会出现崩溃或出现其他问题。"
#: ../app/ui.js:410
msgid "Connecting..."
msgstr "连接中..."
#: ../app/ui.js:438
msgid "Connected (encrypted) to "
msgstr "已连接(已加密)到"
#: ../app/ui.js:440
msgid "Connected (unencrypted) to "
msgstr "已连接(未加密)到"
#: ../app/ui.js:446
#: ../app/ui.js:417
msgid "Disconnecting..."
msgstr "正在断开连接..."
#: ../app/ui.js:450
msgid "Disconnected"
msgstr "已断开连接"
#: ../app/ui.js:1052 ../core/rfb.js:248
msgid "Must set host"
msgstr "必须设置主机"
#: ../app/ui.js:1101
#: ../app/ui.js:423
msgid "Reconnecting..."
msgstr "重新连接中..."
#: ../app/ui.js:1140
msgid "Password is required"
msgstr "请提供密码"
#: ../app/ui.js:428
msgid "Internal error"
msgstr "内部错误"
#: ../core/rfb.js:548
msgid "Disconnect timeout"
msgstr "超时断开"
#: ../app/ui.js:1026
msgid "Must set host"
msgstr "必须设置主机"
#: ../vnc.html:89
#: ../app/ui.js:1052
msgid "Failed to connect to server: "
msgstr "无法连接到服务器:"
#: ../app/ui.js:1118
msgid "Connected (encrypted) to "
msgstr "已连接(已加密)到"
#: ../app/ui.js:1120
msgid "Connected (unencrypted) to "
msgstr "已连接(未加密)到"
#: ../app/ui.js:1143
msgid "Something went wrong, connection is closed"
msgstr "出了点问题,连接已关闭"
#: ../app/ui.js:1146
msgid "Failed to connect to server"
msgstr "无法连接到服务器"
#: ../app/ui.js:1158
msgid "Disconnected"
msgstr "已断开连接"
#: ../app/ui.js:1173
msgid "New connection has been rejected with reason: "
msgstr "新连接被拒绝,原因如下:"
#: ../app/ui.js:1176
msgid "New connection has been rejected"
msgstr "新连接已被拒绝"
#: ../app/ui.js:1242
msgid "Credentials are required"
msgstr "需要凭证"
#: ../vnc.html:55
msgid "noVNC encountered an error:"
msgstr "noVNC 遇到一个错误:"
#: ../vnc.html:99
#: ../vnc.html:65
msgid "Hide/Show the control bar"
msgstr "显示/隐藏控制栏"
#: ../vnc.html:106
msgid "Move/Drag Viewport"
#: ../vnc.html:74
msgid "Drag"
msgstr "拖动"
#: ../vnc.html:74
msgid "Move/Drag viewport"
msgstr "移动/拖动窗口"
#: ../vnc.html:106
msgid "viewport drag"
msgstr "窗口拖动"
#: ../vnc.html:112 ../vnc.html:115 ../vnc.html:118 ../vnc.html:121
msgid "Active Mouse Button"
msgstr "启动鼠标按键"
#: ../vnc.html:112
msgid "No mousebutton"
msgstr "禁用鼠标按键"
#: ../vnc.html:115
msgid "Left mousebutton"
msgstr "鼠标左键"
#: ../vnc.html:118
msgid "Middle mousebutton"
msgstr "鼠标中键"
#: ../vnc.html:121
msgid "Right mousebutton"
msgstr "鼠标右键"
#: ../vnc.html:124
#: ../vnc.html:80
msgid "Keyboard"
msgstr "键盘"
#: ../vnc.html:124
msgid "Show Keyboard"
#: ../vnc.html:80
msgid "Show keyboard"
msgstr "显示键盘"
#: ../vnc.html:131
#: ../vnc.html:85
msgid "Extra keys"
msgstr "额外按键"
#: ../vnc.html:131
msgid "Show Extra Keys"
#: ../vnc.html:85
msgid "Show extra keys"
msgstr "显示额外按键"
#: ../vnc.html:136
#: ../vnc.html:90
msgid "Ctrl"
msgstr "Ctrl"
#: ../vnc.html:136
#: ../vnc.html:90
msgid "Toggle Ctrl"
msgstr "切换 Ctrl"
#: ../vnc.html:136
msgid "Edit clipboard content in the textarea below."
msgstr "在下面的文本区域中编辑剪贴板内容。"
#: ../vnc.html:139
#: ../vnc.html:93
msgid "Alt"
msgstr "Alt"
#: ../vnc.html:139
#: ../vnc.html:93
msgid "Toggle Alt"
msgstr "切换 Alt"
#: ../vnc.html:142
#: ../vnc.html:96
msgid "Toggle Windows"
msgstr "切换窗口"
#: ../vnc.html:96
msgid "Windows"
msgstr "窗口"
#: ../vnc.html:99
msgid "Send Tab"
msgstr "发送 Tab 键"
#: ../vnc.html:142
#: ../vnc.html:99
msgid "Tab"
msgstr "Tab"
#: ../vnc.html:145
#: ../vnc.html:102
msgid "Esc"
msgstr "Esc"
#: ../vnc.html:145
#: ../vnc.html:102
msgid "Send Escape"
msgstr "发送 Escape 键"
#: ../vnc.html:148
#: ../vnc.html:105
msgid "Ctrl+Alt+Del"
msgstr "Ctrl+Alt+Del"
#: ../vnc.html:148
#: ../vnc.html:105
msgid "Send Ctrl-Alt-Del"
msgstr "发送 Ctrl+Alt+Del 键"
#: ../vnc.html:156
#: ../vnc.html:112
msgid "Shutdown/Reboot"
msgstr "关机/重启"
#: ../vnc.html:156
#: ../vnc.html:112
msgid "Shutdown/Reboot..."
msgstr "关机/重启..."
#: ../vnc.html:162
#: ../vnc.html:118
msgid "Power"
msgstr "电源"
#: ../vnc.html:164
#: ../vnc.html:120
msgid "Shutdown"
msgstr "关机"
#: ../vnc.html:165
#: ../vnc.html:121
msgid "Reboot"
msgstr "重启"
#: ../vnc.html:166
#: ../vnc.html:122
msgid "Reset"
msgstr "重置"
#: ../vnc.html:171 ../vnc.html:177
#: ../vnc.html:127 ../vnc.html:133
msgid "Clipboard"
msgstr "剪贴板"
#: ../vnc.html:181
msgid "Clear"
msgstr "清除"
#: ../vnc.html:135
msgid "Edit clipboard content in the textarea below."
msgstr "在下面的文本区域中编辑剪贴板内容。"
#: ../vnc.html:187
msgid "Fullscreen"
#: ../vnc.html:143
msgid "Full screen"
msgstr "全屏"
#: ../vnc.html:192 ../vnc.html:199
#: ../vnc.html:148 ../vnc.html:154
msgid "Settings"
msgstr "设置"
#: ../vnc.html:200
msgid "Encrypt"
msgstr "加密"
#: ../vnc.html:202
msgid "Shared Mode"
#: ../vnc.html:158
msgid "Shared mode"
msgstr "分享模式"
#: ../vnc.html:205
msgid "View Only"
#: ../vnc.html:161
msgid "View only"
msgstr "仅查看"
#: ../vnc.html:209
msgid "Clip to Window"
#: ../vnc.html:165
msgid "Clip to window"
msgstr "限制/裁切窗口大小"
#: ../vnc.html:212
msgid "Scaling Mode:"
#: ../vnc.html:168
msgid "Scaling mode:"
msgstr "缩放模式:"
#: ../vnc.html:214
#: ../vnc.html:170
msgid "None"
msgstr "无"
#: ../vnc.html:215
msgid "Local Scaling"
#: ../vnc.html:171
msgid "Local scaling"
msgstr "本地缩放"
#: ../vnc.html:216
msgid "Local Downscaling"
msgstr "降低本地尺寸"
#: ../vnc.html:217
msgid "Remote Resizing"
#: ../vnc.html:172
msgid "Remote resizing"
msgstr "远程调整大小"
#: ../vnc.html:222
#: ../vnc.html:177
msgid "Advanced"
msgstr "高级"
#: ../vnc.html:225
msgid "Local Cursor"
msgstr "本地光标"
#: ../vnc.html:180
msgid "Quality:"
msgstr "品质:"
#: ../vnc.html:229
#: ../vnc.html:184
msgid "Compression level:"
msgstr "压缩级别:"
#: ../vnc.html:189
msgid "Repeater ID:"
msgstr "中继站 ID"
#: ../vnc.html:233
#: ../vnc.html:193
msgid "WebSocket"
msgstr "WebSocket"
#: ../vnc.html:239
#: ../vnc.html:196
msgid "Encrypt"
msgstr "加密"
#: ../vnc.html:199
msgid "Host:"
msgstr "主机:"
#: ../vnc.html:243
#: ../vnc.html:203
msgid "Port:"
msgstr "端口:"
#: ../vnc.html:247
#: ../vnc.html:207
msgid "Path:"
msgstr "路径:"
#: ../vnc.html:254
msgid "Automatic Reconnect"
#: ../vnc.html:214
msgid "Automatic reconnect"
msgstr "自动重新连接"
#: ../vnc.html:257
msgid "Reconnect Delay (ms):"
#: ../vnc.html:217
msgid "Reconnect delay (ms):"
msgstr "重新连接间隔 (ms)"
#: ../vnc.html:263
#: ../vnc.html:222
msgid "Show dot when no cursor"
msgstr "无光标时显示点"
#: ../vnc.html:227
msgid "Logging:"
msgstr "日志级别:"
#: ../vnc.html:275
#: ../vnc.html:236
msgid "Version:"
msgstr "版本:"
#: ../vnc.html:244
msgid "Disconnect"
msgstr "断开连接"
#: ../vnc.html:294
#: ../vnc.html:267
msgid "Connect"
msgstr "连接"
#: ../vnc.html:276
msgid "Server identity"
msgstr "服务器身份"
#: ../vnc.html:279
msgid "The server has provided the following identifying information:"
msgstr "服务器提供了以下识别信息:"
#: ../vnc.html:283
msgid "Fingerprint:"
msgstr "指纹:"
#: ../vnc.html:286
msgid ""
"Please verify that the information is correct and press \"Approve\". "
"Otherwise press \"Reject\"."
msgstr "请核实信息是否正确,并按 “同意”,否则按 “拒绝”。"
#: ../vnc.html:291
msgid "Approve"
msgstr "同意"
#: ../vnc.html:292
msgid "Reject"
msgstr "拒绝"
#: ../vnc.html:300
msgid "Credentials"
msgstr "凭证"
#: ../vnc.html:304
msgid "Username:"
msgstr "用户名:"
#: ../vnc.html:308
msgid "Password:"
msgstr "密码:"
#: ../vnc.html:318
#: ../vnc.html:312
msgid "Send credentials"
msgstr "发送凭证"
#: ../vnc.html:321
msgid "Cancel"
msgstr "取消"
#: ../vnc.html:334
msgid "Canvas not supported."
msgstr "不支持 Canvas。"
#~ msgid "Password is required"
#~ msgstr "请提供密码"
#~ msgid "Disconnect timeout"
#~ msgstr "超时断开"
#~ msgid "viewport drag"
#~ msgstr "窗口拖动"
#~ msgid "Active Mouse Button"
#~ msgstr "启动鼠标按键"
#~ msgid "No mousebutton"
#~ msgstr "禁用鼠标按键"
#~ msgid "Left mousebutton"
#~ msgstr "鼠标左键"
#~ msgid "Middle mousebutton"
#~ msgstr "鼠标中键"
#~ msgid "Right mousebutton"
#~ msgstr "鼠标右键"
#~ msgid "Clear"
#~ msgstr "清除"
#~ msgid "Local Downscaling"
#~ msgstr "降低本地尺寸"
#~ msgid "Local Cursor"
#~ msgstr "本地光标"
#~ msgid "Canvas not supported."
#~ msgstr "不支持 Canvas。"

View File

@ -1,5 +1,5 @@
# Traditional Chinese translations for noVNC package.
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# This file is distributed under the same license as the noVNC package.
# Peter Dave Hello <hsu@peterdavehello.org>, 2018.
#
@ -77,7 +77,7 @@ msgid "Hide/Show the control bar"
msgstr "顯示/隱藏控制列"
#: ../vnc.html:106
msgid "Move/Drag Viewport"
msgid "Move/Drag viewport"
msgstr "拖放顯示範圍"
#: ../vnc.html:106
@ -109,7 +109,7 @@ msgid "Keyboard"
msgstr "鍵盤"
#: ../vnc.html:124
msgid "Show Keyboard"
msgid "Show keyboard"
msgstr "顯示鍵盤"
#: ../vnc.html:131
@ -117,7 +117,7 @@ msgid "Extra keys"
msgstr "額外按鍵"
#: ../vnc.html:131
msgid "Show Extra Keys"
msgid "Show extra keys"
msgstr "顯示額外按鍵"
#: ../vnc.html:136
@ -201,19 +201,19 @@ msgid "Settings"
msgstr "設定"
#: ../vnc.html:202
msgid "Shared Mode"
msgid "Shared mode"
msgstr "分享模式"
#: ../vnc.html:205
msgid "View Only"
msgid "View only"
msgstr "僅檢視"
#: ../vnc.html:209
msgid "Clip to Window"
msgid "Clip to window"
msgstr "限制/裁切視窗大小"
#: ../vnc.html:212
msgid "Scaling Mode:"
msgid "Scaling mode:"
msgstr "縮放模式:"
#: ../vnc.html:214
@ -221,11 +221,11 @@ msgid "None"
msgstr "無"
#: ../vnc.html:215
msgid "Local Scaling"
msgid "Local scaling"
msgstr "本機縮放"
#: ../vnc.html:216
msgid "Remote Resizing"
msgid "Remote resizing"
msgstr "遠端調整大小"
#: ../vnc.html:221
@ -257,11 +257,11 @@ msgid "Path:"
msgstr "路徑:"
#: ../vnc.html:249
msgid "Automatic Reconnect"
msgid "Automatic reconnect"
msgstr "自動重新連線"
#: ../vnc.html:252
msgid "Reconnect Delay (ms):"
msgid "Reconnect delay (ms):"
msgstr "重新連線間隔 (ms)"
#: ../vnc.html:258

View File

@ -1,6 +1,6 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
import Base64 from '../core/base64.js';
describe('Base64 Tools', function () {
describe('Base64 tools', function () {
"use strict";
const BIN_ARR = new Array(256);

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('CopyRect Decoder', function () {
describe('CopyRect decoder', function () {
let decoder;
let display;

View File

@ -1,7 +1,7 @@
import Base64 from '../core/base64.js';
import Display from '../core/display.js';
describe('Display/Canvas Helper', function () {
describe('Display/Canvas helper', function () {
const checkedData = new Uint8ClampedArray([
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
0x00, 0x00, 0xff, 255, 0x00, 0x00, 0xff, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,

View File

@ -4,6 +4,7 @@ import Display from '../core/display.js';
import { H264Parser } from '../core/decoders/h264.js';
import H264Decoder from '../core/decoders/h264.js';
import Base64 from '../core/base64.js';
import { supportsWebCodecsH264Decode } from '../core/util/browser.js';
import FakeWebSocket from './fake.websocket.js';
@ -29,30 +30,6 @@ const redGreenBlue16x16Video = new Uint8Array(Base64.decode(
'4AA5DRJMnkycJk4TPwAAAAFBiIga8RigADVVHAAGaGOAANtuAAAAAUGIkBr///wRRQABVf8c' +
'AAcho4AAiD4='));
let _haveH264Decode = null;
async function haveH264Decode() {
if (_haveH264Decode !== null) {
return _haveH264Decode;
}
if (!('VideoDecoder' in window)) {
_haveH264Decode = false;
return false;
}
// We'll need to make do with some placeholders here
const config = {
codec: 'avc1.42401f',
codedWidth: 1920,
codedHeight: 1080,
optimizeForLatency: true,
};
_haveH264Decode = await VideoDecoder.isConfigSupported(config);
return _haveH264Decode;
}
function createSolidColorFrameBuffer(color, width, height) {
const r = (color >> 24) & 0xff;
const g = (color >> 16) & 0xff;
@ -131,7 +108,7 @@ function almost(a, b) {
return diff < 5;
}
describe('H.264 Parser', function () {
describe('H.264 parser', function () {
it('should parse constrained baseline video', function () {
let parser = new H264Parser(redGreenBlue16x16Video);
@ -153,11 +130,11 @@ describe('H.264 Parser', function () {
});
});
describe('H.264 Decoder Unit Test', function () {
describe('H.264 decoder unit test', function () {
let decoder;
beforeEach(async function () {
if (!await haveH264Decode()) {
beforeEach(function () {
if (!supportsWebCodecsH264Decode) {
this.skip();
return;
}
@ -204,15 +181,15 @@ describe('H.264 Decoder Unit Test', function () {
});
});
describe('H.264 Decoder Functional Test', function () {
describe('H.264 decoder functional test', function () {
let decoder;
let display;
before(FakeWebSocket.replace);
after(FakeWebSocket.restore);
beforeEach(async function () {
if (!await haveH264Decode()) {
beforeEach(function () {
if (!supportsWebCodecsH264Decode) {
this.skip();
return;
}

View File

@ -36,7 +36,7 @@ function push32(arr, num) {
num & 0xFF);
}
describe('Hextile Decoder', function () {
describe('Hextile decoder', function () {
let decoder;
let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('JPEG Decoder', function () {
describe('JPEG decoder', function () {
let decoder;
let display;

View File

@ -1,6 +1,6 @@
import Keyboard from '../core/input/keyboard.js';
describe('Key Event Handling', function () {
describe('Key event handling', function () {
"use strict";
// The real KeyboardEvent constructor might not work everywhere we
@ -19,7 +19,7 @@ describe('Key Event Handling', function () {
return e;
}
describe('Decode Keyboard Events', function () {
describe('Decode keyboard events', function () {
it('should decode keydown events', function (done) {
const kbd = new Keyboard(document);
kbd.onkeyevent = (keysym, code, down) => {
@ -68,7 +68,7 @@ describe('Key Event Handling', function () {
});
});
describe('Track Key State', function () {
describe('Track key state', function () {
it('should send release using the same keysym as the press', function (done) {
const kbd = new Keyboard(document);
kbd.onkeyevent = (keysym, code, down) => {
@ -101,7 +101,7 @@ describe('Key Event Handling', function () {
expect(kbd.onkeyevent).to.not.have.been.called;
});
describe('Legacy Events', function () {
describe('Legacy events', function () {
it('should track keys using keyCode if no code', function (done) {
const kbd = new Keyboard(document);
kbd.onkeyevent = (keysym, code, down) => {

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('Raw Decoder', function () {
describe('Raw decoder', function () {
let decoder;
let display;

View File

@ -67,7 +67,7 @@ function deflateWithSize(data) {
return new Uint8Array(strm.output.buffer, 0, strm.next_out);
}
describe('Remote Frame Buffer Protocol Client', function () {
describe('Remote Frame Buffer protocol client', function () {
let clock;
let raf;
let fakeResizeObserver = null;
@ -287,7 +287,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Public API Basic Behavior', function () {
describe('Public API basic behavior', function () {
let client;
beforeEach(function () {
client = makeRFB();
@ -730,6 +730,28 @@ describe('Remote Frame Buffer Protocol Client', function () {
container.style.width = '70px';
container.style.height = '80px';
client.scaleViewport = true;
const incoming = [ 0x00, // msg-type=FBU
0x00, // padding
0x00, 0x01, // number of rects = 1
0x00, 0x00, // reason = server initialized
0x00, 0x00, // status = no error
0x00, 0x04, // new width = 4
0x00, 0x04, // new height = 4
0xff, 0xff,
0xfe, 0xcc, // enc = (-308) ExtendedDesktopSize
0x01, // number of screens = 1
0x00, 0x00,
0x00, // padding
0x78, 0x90,
0xab, 0xcd, // screen id = 0
0x00, 0x00, // screen x = 0
0x00, 0x00, // screen y = 0
0x00, 0x04, // screen width = 4
0x00, 0x04, // screen height = 4
0x12, 0x34,
0x56, 0x78]; // screen flags
client._sock._websocket._receiveData(new Uint8Array(incoming));
});
it('should update display scale factor when changing the property', function () {
@ -774,6 +796,28 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(client._display.autoscale).to.have.been.calledWith(40, 50);
});
it('should update the scaling resized back to initial size', function () {
sinon.spy(client._display, "autoscale");
container.style.width = '40px';
container.style.height = '50px';
fakeResizeObserver.fire();
clock.tick(1000);
expect(client._display.autoscale).to.have.been.calledOnce;
expect(client._display.autoscale).to.have.been.calledWith(40, 50);
client._display.autoscale.resetHistory();
container.style.width = '70px';
container.style.height = '80px';
fakeResizeObserver.fire();
clock.tick(1000);
expect(client._display.autoscale).to.have.been.calledOnce;
expect(client._display.autoscale).to.have.been.calledWith(70, 80);
client._display.autoscale.resetHistory();
});
it('should update the scaling when the remote session resizes', function () {
// Simple ExtendedDesktopSize FBU message
const incoming = [ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
@ -941,6 +985,27 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(RFB.messages.setDesktopSize).to.not.have.been.called;
});
it('should request a resize when resized back to initial size', function () {
container.style.width = '40px';
container.style.height = '50px';
fakeResizeObserver.fire();
clock.tick(1000);
expect(RFB.messages.setDesktopSize).to.have.been.calledOnce;
expect(RFB.messages.setDesktopSize).to.have.been.calledWith(
sinon.match.object, 40, 50, 0x7890abcd, 0x12345678);
RFB.messages.setDesktopSize.resetHistory();
container.style.width = '70px';
container.style.height = '80px';
fakeResizeObserver.fire();
clock.tick(1000);
expect(RFB.messages.setDesktopSize).to.have.been.calledOnce;
expect(RFB.messages.setDesktopSize).to.have.been.calledWith(
sinon.match.object, 70, 80, 0x7890abcd, 0x12345678);
});
it('should not resize until the container size is stable', function () {
container.style.width = '20px';
container.style.height = '30px';
@ -1027,7 +1092,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Misc Internals', function () {
describe('Misc internals', function () {
describe('#_fail', function () {
let client;
beforeEach(function () {
@ -1068,7 +1133,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Protocol Initialization States', function () {
describe('Protocol initialization states', function () {
let client;
beforeEach(function () {
client = makeRFB();
@ -1226,7 +1291,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Legacy Authentication', function () {
describe('Legacy authentication', function () {
it('should fail on auth scheme 0 (pre 3.7) with the given message', function () {
const errMsg = "Whoopsies";
const data = [0, 0, 0, 0];
@ -1286,7 +1351,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(callback.args[0][0].detail.clean).to.be.false;
});
describe('VNC Authentication (type 2) Handler', function () {
describe('VNC authentication (type 2) handler', function () {
it('should fire the credentialsrequired event if missing a password', function () {
const spy = sinon.spy();
client.addEventListener("credentialsrequired", spy);
@ -1331,7 +1396,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('RSA-AES Authentication (type 6) Handler', function () {
describe('RSA-AES authentication (type 6) handler', function () {
function fakeGetRandomValues(arr) {
if (arr.length === 16) {
arr.set(new Uint8Array([
@ -1776,7 +1841,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('ARD Authentication (type 30) Handler', function () {
describe('ARD authentication (type 30) handler', function () {
let byteArray = new Uint8Array(Array.from(new Uint8Array(128).keys()));
function fakeGetRandomValues(arr) {
if (arr.length == 128) {
@ -1869,7 +1934,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('MSLogonII Authentication (type 113) Handler', function () {
describe('MSLogonII authentication (type 113) handler', function () {
function fakeGetRandomValues(arr) {
if (arr.length == 8) {
arr.set(new Uint8Array([0, 0, 0, 0, 5, 6, 7, 8]));
@ -1952,7 +2017,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('XVP Authentication (type 22) Handler', function () {
describe('XVP authentication (type 22) handler', function () {
it('should fall through to standard VNC authentication upon completion', function () {
client.addEventListener("credentialsrequired", () => {
client.sendCredentials({ username: 'user',
@ -2001,7 +2066,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('TightVNC Authentication (type 16) Handler', function () {
describe('TightVNC authentication (type 16) handler', function () {
beforeEach(function () {
sendSecurity(16, client);
client._sock._websocket._getSentData(); // skip the security reply
@ -2088,7 +2153,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('VeNCrypt Authentication (type 19) Handler', function () {
describe('VeNCrypt authentication (type 19) handler', function () {
beforeEach(function () {
sendSecurity(19, client);
expect(client._sock).to.have.sent(new Uint8Array([19]));
@ -2171,7 +2236,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Plain Authentication (type 256) Handler', function () {
describe('Plain authentication (type 256) handler', function () {
beforeEach(function () {
sendSecurity(19, client);
expect(client._sock).to.have.sent(new Uint8Array([19]));
@ -2430,7 +2495,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(client._keyboard.grab).to.have.been.calledOnce;
});
describe('Initial Update Request', function () {
describe('Initial update request', function () {
beforeEach(function () {
sinon.spy(RFB.messages, "pixelFormat");
sinon.spy(RFB.messages, "clientEncodings");
@ -2485,7 +2550,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Protocol Message Processing After Completing Initialization', function () {
describe('Protocol message processing after completing initialization', function () {
let client;
beforeEach(function () {
@ -2495,7 +2560,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
client._fbHeight = 20;
});
describe('Framebuffer Update Handling', function () {
describe('Framebuffer update handling', function () {
function sendFbuMsg(rectInfo, rectData, client, rectCnt) {
let data = [];
@ -2576,7 +2641,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
expect(callback.args[0][0].detail.clean).to.be.false;
});
describe('Message Encoding Handlers', function () {
describe('Message encoding handlers', function () {
beforeEach(function () {
// a really small frame
client._fbWidth = 4;
@ -2817,7 +2882,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('the VMware Cursor pseudo-encoding handler', function () {
describe('the VMware cursor pseudo-encoding handler', function () {
beforeEach(function () {
sinon.spy(client._cursor, 'change');
});
@ -3150,7 +3215,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('XVP Message Handling', function () {
describe('XVP message handling', function () {
it('should set the XVP version and fire the callback with the version on XVP_INIT', function () {
const spy = sinon.spy();
client.addEventListener("capabilities", spy);
@ -3172,7 +3237,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Normal Clipboard Handling Receive', function () {
describe('Normal clipboard handling receive', function () {
it('should fire the clipboard callback with the retrieved text on ServerCutText', function () {
const expectedStr = 'cheese!';
const data = [3, 0, 0, 0];
@ -3187,7 +3252,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Extended clipboard Handling', function () {
describe('Extended clipboard handling', function () {
describe('Extended clipboard initialization', function () {
beforeEach(function () {
@ -3222,7 +3287,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
describe('Extended Clipboard Handling Receive', function () {
describe('Extended clipboard handling receive', function () {
beforeEach(function () {
// Send our capabilities
@ -3493,7 +3558,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Asynchronous Events', function () {
describe('Asynchronous events', function () {
let client;
let pointerEvent;
let keyEvent;
@ -3537,7 +3602,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
return res;
}
describe('Mouse Events', function () {
describe('Mouse events', function () {
function sendMouseMoveEvent(x, y) {
let pos = elementToClient(x, y);
let ev;
@ -3663,7 +3728,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
50, 70, 0x0);
});
describe('Event Aggregation', function () {
describe('Event aggregation', function () {
it('should send a single pointer event on mouse movement', function () {
sendMouseMoveEvent(50, 70);
clock.tick(100);
@ -3790,7 +3855,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Wheel Events', function () {
describe('Wheel events', function () {
function sendWheelEvent(x, y, dx, dy, mode=0) {
let pos = elementToClient(x, y);
let ev;
@ -3900,7 +3965,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('Keyboard Events', function () {
describe('Keyboard events', function () {
it('should send a key message on a key press', function () {
let esock = new Websock();
let ews = new FakeWebSocket();
@ -4613,7 +4678,7 @@ describe('Remote Frame Buffer Protocol Client', function () {
});
});
describe('WebSocket Events', function () {
describe('WebSocket events', function () {
// message events
it('should do nothing if we receive an empty message and have nothing in the queue', function () {
sinon.spy(client, "_normalMsg");
@ -4901,7 +4966,7 @@ describe('RFB messages', function () {
sock.attach(websock);
});
describe('Input Events', function () {
describe('Input events', function () {
it('should send correct data for keyboard events', function () {
// FIXME: down should be boolean
RFB.messages.keyEvent(sock, 0x12345678, 0);
@ -4936,7 +5001,7 @@ describe('RFB messages', function () {
});
});
describe('Clipboard Events', function () {
describe('Clipboard events', function () {
it('should send correct data for clipboard events', function () {
RFB.messages.clientCutText(sock, new Uint8Array([ 0x01, 0x23, 0x45, 0x67 ]));
let expected =
@ -4946,7 +5011,7 @@ describe('RFB messages', function () {
});
});
describe('Extended Clipboard Handling Send', function () {
describe('Extended clipboard handling send', function () {
it('should call clientCutText with correct Caps data', function () {
let formats = {
0: 2,
@ -5133,7 +5198,7 @@ describe('RFB messages', function () {
});
});
describe('Screen Layout', function () {
describe('Screen layout', function () {
it('should send correct data for screen layout changes', function () {
RFB.messages.setDesktopSize(sock, 12345, 54321, 0x12345678, 0x90abcdef);
let expected =
@ -5155,7 +5220,7 @@ describe('RFB messages', function () {
});
});
describe('Continuous Updates', function () {
describe('Continuous updates', function () {
it('should send correct data for continuous updates configuration', function () {
// FIXME: enable should be boolean
RFB.messages.enableContinuousUpdates(sock, 0, 12345, 54321, 34343, 18181);
@ -5165,7 +5230,7 @@ describe('RFB messages', function () {
});
});
describe('Pixel Format', function () {
describe('Pixel format', function () {
it('should send correct data for normal depth', function () {
RFB.messages.pixelFormat(sock, 24, true);
let expected =

View File

@ -41,7 +41,7 @@ function push32(arr, num) {
num & 0xFF);
}
describe('RRE Decoder', function () {
describe('RRE decoder', function () {
let decoder;
let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('Tight Decoder', function () {
describe('Tight decoder', function () {
let decoder;
let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('TightPng Decoder', function () {
describe('TightPng decoder', function () {
let decoder;
let display;

View File

@ -535,7 +535,7 @@ describe('Websock', function () {
});
});
describe('WebSocket Receiving', function () {
describe('WebSocket receiving', function () {
let sock;
beforeEach(function () {
sock = new Websock();

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('Zlib Decoder', function () {
describe('Zlib decoder', function () {
let decoder;
let display;

View File

@ -29,7 +29,7 @@ function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
return done;
}
describe('ZRLE Decoder', function () {
describe('ZRLE decoder', function () {
let decoder;
let display;

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>VNC Playback</title>
<title>VNC playback</title>
<script type="module" src="./playback-ui.js"></script>
</head>
<body>

View File

@ -1,7 +1,7 @@
#!/usr/bin/env node
/*
* genkeysymdef: X11 keysymdef.h to JavaScript converter
* Copyright (C) 2018 The noVNC Authors
* Copyright (C) 2018 The noVNC authors
* Licensed under MPL 2.0 (see LICENSE.txt)
*/

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2018 The noVNC Authors
# Copyright (C) 2018 The noVNC authors
# Licensed under MPL 2.0 or any later version (see LICENSE.txt)
usage() {
@ -82,7 +82,7 @@ cleanup() {
fi
}
# Process Arguments
# Process arguments
# Arguments that only apply to chrooter itself
while [ "$*" ]; do

View File

@ -4,7 +4,7 @@
<!--
noVNC example: simple example using default UI
Copyright (C) 2019 The noVNC Authors
Copyright (C) 2019 The noVNC authors
noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
@ -108,7 +108,7 @@
</div>
</div>
<!-- noVNC Control Bar -->
<!-- noVNC control bar -->
<div id="noVNC_control_bar_anchor" class="noVNC_vcenter">
<div id="noVNC_control_bar">
@ -123,18 +123,18 @@
<!-- Drag/Pan the viewport -->
<input type="image" alt="Drag" src="app/images/drag.svg"
id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden"
title="Move/Drag Viewport">
title="Move/Drag viewport">
<!--noVNC Touch Device only buttons-->
<!--noVNC touch device only buttons-->
<div id="noVNC_mobile_buttons">
<input type="image" alt="Keyboard" src="app/images/keyboard.svg"
id="noVNC_keyboard_button" class="noVNC_button" title="Show Keyboard">
id="noVNC_keyboard_button" class="noVNC_button" title="Show keyboard">
</div>
<!-- Extra manual keys -->
<input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg"
id="noVNC_toggle_extra_keys_button" class="noVNC_button"
title="Show Extra Keys">
title="Show extra keys">
<div class="noVNC_vcenter">
<div id="noVNC_modifiers" class="noVNC_panel">
<input type="image" alt="Ctrl" src="app/images/ctrl.svg"
@ -190,9 +190,9 @@
</div>
<!-- Toggle fullscreen -->
<input type="image" alt="Full Screen" src="app/images/fullscreen.svg"
<input type="image" alt="Full screen" src="app/images/fullscreen.svg"
id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden"
title="Full Screen">
title="Full screen">
<!-- Settings -->
<input type="image" alt="Settings" src="app/images/settings.svg"
@ -205,21 +205,21 @@
</div>
<ul>
<li>
<label><input id="noVNC_setting_shared" type="checkbox"> Shared Mode</label>
<label><input id="noVNC_setting_shared" type="checkbox"> Shared mode</label>
</li>
<li>
<label><input id="noVNC_setting_view_only" type="checkbox"> View Only</label>
<label><input id="noVNC_setting_view_only" type="checkbox"> View only</label>
</li>
<li><hr></li>
<li>
<label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label>
<label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to window</label>
</li>
<li>
<label for="noVNC_setting_resize">Scaling Mode:</label>
<label for="noVNC_setting_resize">Scaling mode:</label>
<select id="noVNC_setting_resize" name="vncResize">
<option value="off">None</option>
<option value="scale">Local Scaling</option>
<option value="remote">Remote Resizing</option>
<option value="scale">Local scaling</option>
<option value="remote">Remote resizing</option>
</select>
</li>
<li><hr></li>
@ -261,15 +261,15 @@
</li>
<li><hr></li>
<li>
<label><input id="noVNC_setting_reconnect" type="checkbox"> Automatic Reconnect</label>
<label><input id="noVNC_setting_reconnect" type="checkbox"> Automatic reconnect</label>
</li>
<li>
<label for="noVNC_setting_reconnect_delay">Reconnect Delay (ms):</label>
<label for="noVNC_setting_reconnect_delay">Reconnect delay (ms):</label>
<input id="noVNC_setting_reconnect_delay" type="number">
</li>
<li><hr></li>
<li>
<label><input id="noVNC_setting_show_dot" type="checkbox"> Show Dot when No Cursor</label>
<label><input id="noVNC_setting_show_dot" type="checkbox"> Show dot when no cursor</label>
</li>
<li><hr></li>
<!-- Logging selection dropdown -->
@ -290,7 +290,7 @@
</div>
</div>
<!-- Connection Controls -->
<!-- Connection controls -->
<input type="image" alt="Disconnect" src="app/images/disconnect.svg"
id="noVNC_disconnect_button" class="noVNC_button"
title="Disconnect">
@ -305,7 +305,7 @@
</div>
</div>
<!-- Status Dialog -->
<!-- Status dialog -->
<div id="noVNC_status"></div>
<!-- Connect button -->
@ -320,7 +320,7 @@
</div>
</div>
<!-- Server Key Verification Dialog -->
<!-- Server key verification dialog -->
<div class="noVNC_center noVNC_connect_layer">
<div id="noVNC_verify_server_dlg" class="noVNC_panel"><form>
<div class="noVNC_heading">
@ -344,7 +344,7 @@
</form></div>
</div>
<!-- Password Dialog -->
<!-- Password dialog -->
<div class="noVNC_center noVNC_connect_layer">
<div id="noVNC_credentials_dlg" class="noVNC_panel"><form>
<div class="noVNC_heading">
@ -359,12 +359,12 @@
<input id="noVNC_password_input" type="password">
</div>
<div>
<input id="noVNC_credentials_button" type="submit" value="Send Credentials" class="noVNC_submit">
<input id="noVNC_credentials_button" type="submit" value="Send credentials" class="noVNC_submit">
</div>
</form></div>
</div>
<!-- Transition Screens -->
<!-- Transition screens -->
<div id="noVNC_transition">
<div id="noVNC_transition_text"></div>
<div>

Some files were not shown because too many files have changed in this diff Show More