Compare commits

..

13 Commits

Author SHA1 Message Date
Heiko Becker
fa2d8275c7 GIT_SILENT Update Appstream for new release 2022-10-30 22:24:27 +01:00
Heiko Becker
fd23dabec7 GIT_SILENT Upgrade release service version to 22.08.3. 2022-10-30 21:42:49 +01:00
l10n daemon script
ca9ae9937b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-10-19 03:22:28 +00:00
l10n daemon script
4f64899557 GIT_SILENT made messages (after extraction) 2022-10-19 02:35:44 +00:00
Heiko Becker
0e8fc32ff8 GIT_SILENT Update Appstream for new release 2022-10-10 22:24:00 +02:00
Heiko Becker
4b1e20fbd3 GIT_SILENT Upgrade release service version to 22.08.2. 2022-10-10 21:38:41 +02:00
Heiko Becker
de4dcbbcc6 GIT_SILENT Update Appstream for new release 2022-09-03 00:35:40 +02:00
Heiko Becker
ba0edf0b6f GIT_SILENT Upgrade release service version to 22.08.1. 2022-09-02 23:48:32 +02:00
Albert Astals Cid
7f26fdecab GIT_SILENT Update Appstream for new release 2022-08-11 00:13:45 +02:00
Albert Astals Cid
aa73ae5dc2 GIT_SILENT Upgrade release service version to 22.08.0. 2022-08-10 22:54:35 +02:00
l10n daemon script
eab4bda53b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-08-05 02:43:44 +00:00
Heiko Becker
9d9cfd2ce0 GIT_SILENT Upgrade release service version to 22.07.90. 2022-08-04 01:04:12 +02:00
Albert Astals Cid
06e6cba751 GIT_SILENT Upgrade release service version to 22.07.80. 2022-07-13 00:42:37 +02:00
24 changed files with 85 additions and 59 deletions

View File

@@ -2,13 +2,13 @@ cmake_minimum_required(VERSION 3.16)
# KDE Application Version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "22")
set (RELEASE_SERVICE_VERSION_MINOR "11")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set (RELEASE_SERVICE_VERSION_MINOR "08")
set (RELEASE_SERVICE_VERSION_MICRO "3")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(krfb VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION 5.15.2)
set(QT_MIN_VERSION 5.15.0)
set(KF5_MIN_VERSION 5.91.0)
find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED)
@@ -21,7 +21,6 @@ include(ECMInstallIcons)
include(ECMAddAppIcon)
include(ECMSetupVersion)
include(ECMQtDeclareLoggingCategory)
include(ECMDeprecationSettings)
include(FeatureSummary)
include(CheckIncludeFile)
@@ -61,11 +60,22 @@ if(WIN32)
set(CMAKE_REQUIRED_INCLUDES ${KDEWIN32_INCLUDES})
endif(WIN32)
ecm_set_disabled_deprecation_versions(
QT 5.15.2
KF 5.91
add_definitions(
-DQT_DEPRECATED_WARNINGS
-DQT_USE_QSTRINGBUILDER
-DQT_NO_CAST_TO_ASCII
-DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_FROM_BYTEARRAY
-DQT_STRICT_ITERATORS
-DQT_NO_URL_CAST_FROM_STRING
-DQT_NO_SIGNALS_SLOTS_KEYWORDS
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
)
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f02)
add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055A00)
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} )
find_package(LibVNCServer REQUIRED)

View File

@@ -961,8 +961,8 @@ PWFrameBuffer::Private::~Private()
}
}
PWFrameBuffer::PWFrameBuffer(QObject *parent)
: FrameBuffer (parent),
PWFrameBuffer::PWFrameBuffer(WId winid, QObject *parent)
: FrameBuffer (winid, parent),
d(new Private(this))
{
fb = nullptr;

View File

@@ -30,7 +30,7 @@ public:
};
using Streams = QList<Stream>;
PWFrameBuffer(QObject *parent = nullptr);
PWFrameBuffer(WId winid, QObject *parent = nullptr);
virtual ~PWFrameBuffer() override;
void initDBus();

View File

@@ -30,9 +30,11 @@ PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &ar
}
FrameBuffer *PWFrameBufferPlugin::frameBuffer(const QVariantMap &args)
FrameBuffer *PWFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
{
auto pwfb = new PWFrameBuffer;
//NOTE WId is irrelevant in Wayland
auto pwfb = new PWFrameBuffer(id);
if (args.contains(QLatin1String("name"))) {
pwfb->startVirtualMonitor(args[QStringLiteral("name")].toString(), args[QStringLiteral("resolution")].toSize(), args[QStringLiteral("scale")].toDouble());
} else {

View File

@@ -34,7 +34,7 @@ class PWFrameBufferPlugin: public FrameBufferPlugin
public:
PWFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(const QVariantMap &args) override;
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
private:
Q_DISABLE_COPY(PWFrameBufferPlugin)

View File

@@ -24,7 +24,6 @@ target_link_libraries (krfb_framebuffer_qt
Qt5::Core
Qt5::Gui
KF5::CoreAddons
Qt::GuiPrivate
krfbprivate
)

View File

@@ -13,20 +13,17 @@
#include <QRegion>
#include <QPixmap>
#include <QBitmap>
#include <QApplication>
#include <QGuiApplication>
#include <QScreen>
#include <qpa/qplatformnativeinterface.h>
const int UPDATE_TIME = 500;
QtFrameBuffer::QtFrameBuffer(QObject *parent)
: FrameBuffer(parent)
QtFrameBuffer::QtFrameBuffer(WId id, QObject *parent)
: FrameBuffer(id, parent)
{
QScreen *screen = QGuiApplication::primaryScreen();
QPlatformNativeInterface* native = qApp->platformNativeInterface();
if (screen) {
win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), screen));
primaryScreen = screen;
fbImage = screen->grabWindow(win).toImage();
fb = new char[fbImage.sizeInBytes()];

View File

@@ -22,7 +22,7 @@ class QtFrameBuffer : public FrameBuffer
{
Q_OBJECT
public:
explicit QtFrameBuffer(QObject *parent = nullptr);
explicit QtFrameBuffer(WId id, QObject *parent = nullptr);
~QtFrameBuffer() override;
@@ -38,7 +38,6 @@ public Q_SLOTS:
void updateFrameBuffer();
private:
WId win;
QImage fbImage;
QTimer *t;
QScreen *primaryScreen;

View File

@@ -31,10 +31,10 @@ QtFrameBufferPlugin::QtFrameBufferPlugin(QObject *parent, const QVariantList &ar
{
}
FrameBuffer *QtFrameBufferPlugin::frameBuffer(const QVariantMap &args)
FrameBuffer *QtFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
{
Q_UNUSED(args);
return new QtFrameBuffer;
return new QtFrameBuffer(id);
}
#include "qtframebufferplugin.moc"

View File

@@ -34,7 +34,7 @@ class QtFrameBufferPlugin : public FrameBufferPlugin
public:
QtFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(const QVariantMap &args) override;
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
private:
Q_DISABLE_COPY(QtFrameBufferPlugin)

View File

@@ -20,7 +20,6 @@ add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS})
target_link_libraries (krfb_framebuffer_xcb
Qt5::Core
Qt5::Gui
Qt::GuiPrivate
XCB::XCB
XCB::RENDER
XCB::SHAPE

View File

@@ -19,11 +19,10 @@
#include <sys/shm.h>
#include <QX11Info>
#include <QApplication>
#include <QCoreApplication>
#include <QGuiApplication>
#include <QScreen>
#include <QAbstractNativeEventFilter>
#include <qpa/qplatformnativeinterface.h>
class KrfbXCBEventFilter: public QAbstractNativeEventFilter
@@ -131,7 +130,6 @@ public:
bool running;
QRect area; // capture area, primary monitor coordinates
WId win;
};
@@ -146,8 +144,8 @@ static xcb_screen_t *get_xcb_screen(xcb_connection_t *conn, int screen_num) {
XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
FrameBuffer(parent), d(new XCBFrameBuffer::P)
XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent):
FrameBuffer(winid, parent), d(new XCBFrameBuffer::P)
{
d->running = false;
d->damage = XCB_NONE;
@@ -164,8 +162,6 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
QScreen *primaryScreen = QGuiApplication::primaryScreen();
if (primaryScreen) {
QPlatformNativeInterface* native = qApp->platformNativeInterface();
d->win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), primaryScreen));
qreal scaleFactor = primaryScreen->devicePixelRatio();
d->area = { primaryScreen->geometry().topLeft() * scaleFactor,
primaryScreen->geometry().bottomRight() * scaleFactor };
@@ -181,7 +177,7 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
}
d->framebufferImage = xcb_image_get(QX11Info::connection(),
d->win,
this->win,
d->area.left(),
d->area.top(),
d->area.width(),
@@ -250,7 +246,7 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
// will return 1 on success (yes!)
int shmget_res = xcb_image_shm_get(
QX11Info::connection(),
d->win,
this->win,
d->updateTile,
d->shminfo,
d->area.left(), // x
@@ -558,7 +554,7 @@ QList<QRect> XCBFrameBuffer::modifiedTiles() {
// translate whe coordinates
xcb_shm_get_image_cookie_t sgi_cookie = xcb_shm_get_image(
QX11Info::connection(),
d->win,
this->win,
d->area.left() + r.left(),
d->area.top() + r.top(),
r.width(),
@@ -613,7 +609,7 @@ QList<QRect> XCBFrameBuffer::modifiedTiles() {
// need function that copies pixels from one image to another
xcb_image_t *damagedImage = xcb_image_get(
QX11Info::connection(),
d->win,
this->win,
r.left(),
r.top(),
r.width(),
@@ -653,7 +649,7 @@ void XCBFrameBuffer::startMonitor() {
d->running = true;
d->damage = xcb_generate_id(QX11Info::connection());
xcb_damage_create(QX11Info::connection(), d->damage, d->win,
xcb_damage_create(QX11Info::connection(), d->damage, this->win,
XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES);
// (currently) we do not call xcb_damage_subtract() EVER, because

View File

@@ -22,7 +22,7 @@ class XCBFrameBuffer: public FrameBuffer
{
Q_OBJECT
public:
explicit XCBFrameBuffer(QObject *parent = nullptr);
explicit XCBFrameBuffer(WId winid, QObject *parent = nullptr);
~XCBFrameBuffer() override;
public:

View File

@@ -29,10 +29,10 @@ XCBFrameBufferPlugin::XCBFrameBufferPlugin(QObject *parent, const QVariantList &
{
}
FrameBuffer *XCBFrameBufferPlugin::frameBuffer(const QVariantMap &args)
FrameBuffer *XCBFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
{
Q_UNUSED(args);
return new XCBFrameBuffer;
return new XCBFrameBuffer(id);
}
#include "xcb_framebufferplugin.moc"

View File

@@ -34,7 +34,7 @@ class XCBFrameBufferPlugin: public FrameBufferPlugin
public:
XCBFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(const QVariantMap &args) override;
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
private:
Q_DISABLE_COPY(XCBFrameBufferPlugin)

View File

@@ -13,8 +13,8 @@
#include <QCursor>
FrameBuffer::FrameBuffer(QObject *parent)
: QObject(parent)
FrameBuffer::FrameBuffer(WId id, QObject *parent)
: QObject(parent), win(id)
{
}

View File

@@ -29,7 +29,7 @@ class KRFBPRIVATE_EXPORT FrameBuffer : public QObject
{
Q_OBJECT
public:
explicit FrameBuffer(QObject *parent = nullptr);
explicit FrameBuffer(WId id, QObject *parent = nullptr);
~FrameBuffer() override;
@@ -52,6 +52,7 @@ Q_SIGNALS:
void frameBufferChanged();
protected:
WId win;
char *fb = nullptr;
QList<QRect> tiles;

View File

@@ -81,7 +81,7 @@ QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVaria
if (it.key() == KrfbConfig::preferredFrameBufferPlugin()) {
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(id, args));
if (frameBuffer) {
m_frameBuffers.insert(id, frameBuffer.toWeakRef());

View File

@@ -37,7 +37,7 @@ public:
explicit FrameBufferPlugin(QObject *parent, const QVariantList &args);
~FrameBufferPlugin() override;
virtual FrameBuffer *frameBuffer(const QVariantMap &args) = 0;
virtual FrameBuffer *frameBuffer(WId id, const QVariantMap &args) = 0;
};
#endif // Header guard

View File

@@ -33,6 +33,7 @@ Comment[id]=Desktop Sharing
Comment[is]=Skjáborðamiðlun
Comment[it]=Condivisione del desktop
Comment[ja]=デスクトップ共有
Comment[ka]=სამუშაო მაგიდის გაზიარება
Comment[kk]=Үстелді ортақтастыру
Comment[km]=ការ​ចែក​រំលែក​ផ្ទែ​តុ
Comment[ko]=데스크톱 공유
@@ -101,6 +102,7 @@ Name[id]=Pengguna Menyetujui Koneksi
Name[is]=Notandi samþykkir tengingar
Name[it]=L'utente accetta la connessione
Name[ja]=ユーザが接続を許可
Name[ka]=მომხმარებელი დაეთანხმა მიერთებას
Name[kk]=Пайдаланушы қосылымды қабылдайды
Name[km]=អ្នក​ប្រើ​ទទួល​យក​ការ​ត​ភ្ជាប់
Name[ko]=사용자가 연결을 수락함
@@ -165,6 +167,7 @@ Comment[id]=Pengguna menyetujui koneksi
Comment[is]=Notandi samþykkir tengingu
Comment[it]=L'utente accetta la connessione
Comment[ja]=ユーザが接続を許可
Comment[ka]=მომხმარებელი დაეთანხმა მიერთებას
Comment[kk]=Пайдаланушы қосылымды қабылдайды
Comment[km]=អ្នក​ប្រើ​ទទួល​យក​ការ​ត​ភ្ជាប់
Comment[ko]=사용자가 연결을 수락함
@@ -234,6 +237,7 @@ Name[id]=Pengguna Menampik Koneksi
Name[is]=Notandi hafnar tengingum
Name[it]=L'utente rifiuta la connessione
Name[ja]=ユーザが接続を拒否
Name[ka]=მომხმარებელმა უარყო მიერთებას
Name[kk]=Пайдаланушы қосылымдан бас тартады
Name[km]=អ្នក​ប្រើ​បដិសេធ​ការ​ត​ភ្ជាប់
Name[ko]=사용자가 연결을 거부함
@@ -298,6 +302,7 @@ Comment[id]=Pengguna menampik koneksi
Comment[is]=Notandi hafnar tengingu
Comment[it]=L'utente rifiuta la connessione
Comment[ja]=ユーザが接続を拒否
Comment[ka]=მომხმარებელმა უარყო მიერთებას
Comment[kk]=Пайдаланушы қосылымды қабылдамайды
Comment[km]=អ្នក​ប្រើ​បដិសេធ​ការ​ត​ភ្ជាប់
Comment[ko]=사용자가 연결을 거부함
@@ -367,6 +372,7 @@ Name[id]=Koneksi Ditutup
Name[is]=Tengingu lokað
Name[it]=Connessione chiusa
Name[ja]=接続切断
Name[ka]=კავშირი დაიხურა
Name[kk]=Қосылымдан жабылды
Name[km]=បាន​បិទ​ការ​ត​ភ្ជាប់
Name[ko]=연결이 닫힘
@@ -434,6 +440,7 @@ Comment[id]=Koneksi ditutup
Comment[is]=Tengingu lokað
Comment[it]=Connessione chiusa
Comment[ja]=接続が閉じられました
Comment[ka]=კავშირი დახურულია
Comment[kk]=Қосылым жабылды
Comment[km]=បាន​បិទ​ការ​ត​ភ្ជាប់
Comment[ko]=연결이 닫힘
@@ -506,6 +513,7 @@ Name[id]=Sandi Tidak Absah
Name[is]=Ógilt lykilorð
Name[it]=Password non valida
Name[ja]=無効なパスワード
Name[ka]=არასწორი პაროლი
Name[kk]=Жарамсыз паролі
Name[km]=ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ
Name[ko]=잘못된 암호
@@ -573,6 +581,7 @@ Comment[id]=Sandi tidak absah
Comment[is]=Lykilorð ógilt
Comment[it]=Password non valida
Comment[ja]=無効なパスワード
Comment[ka]=არასწორი პაროლი
Comment[kk]=Паролі дұрыс емес
Comment[km]=ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ
Comment[ko]=잘못된 암호
@@ -648,6 +657,7 @@ Name[id]=Undangan Sandi Tidak Absah
Name[is]=Ógild lykilorðsboð
Name[it]=Password di invito non valida
Name[ja]=招待に対する無効なパスワード
Name[ka]=არასწორი პაროლის მოსაწვევები
Name[kk]=Жарамсыз паролімен шақыру
Name[km]=ការ​អញ្ជើញ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ
Name[ko]=잘못된 암호 초대장
@@ -1041,6 +1051,7 @@ Name[id]=Terlalu Banyak Koneksi
Name[is]=Of margar tengingar
Name[it]=Troppe connessioni
Name[ja]=多すぎる接続
Name[ka]=მეტისმეტად ბევრი მიერთება
Name[kk]=Тым көп қосылым
Name[km]=ការ​តភ្ជាប់​ច្រើន​ពេក
Name[ko]=너무 많은 연결
@@ -1105,6 +1116,7 @@ Comment[id]=Sibuk, koneksi ditampik
Comment[is]=Uptekinn, tengingu hafnað
Comment[it]=Occupato, connessione rifiutata
Comment[ja]=ビジーです、接続を拒否しました
Comment[ka]=დაკავებულია, დაკავშირება უარყოფილია
Comment[kk]=Бос емес, қосылым болмады
Comment[km]=រវល់ បដិសេធ​ការ​ត​ភ្ជាប់
Comment[ko]=바쁨, 연결 거부됨
@@ -1175,6 +1187,7 @@ Name[id]=Koneksi Tak Terduga
Name[is]=Óvænt Tenging
Name[it]=Connessione inattesa
Name[ja]=予期しない接続
Name[ka]=მოულოდნელი შეერთება
Name[kk]=Күтпеген қосылым
Name[km]=ការ​តភ្ជាប់​ដែល​មិន​បាន​រំពឹង​ទុក
Name[ko]=예상하지 않은 연결

View File

@@ -33,7 +33,7 @@
#include <QSet>
#include <QNetworkInterface>
#include <QHostInfo>
#include <QMessageBox>
class TCP: public QWidget, public Ui::TCP
{
@@ -219,16 +219,16 @@ void MainWindow::passwordChanged(const QString& password)
void MainWindow::aboutConnectionAddress()
{
QMessageBox::about(this,
i18n("KDE Desktop Sharing"),
i18n("This field contains the address of your computer and the port number, separated by a colon.\n\nThe address is just a hint - you can use any address that can reach your computer.\n\nDesktop Sharing tries to guess your address from your network configuration, but does not always succeed in doing so.\n\nIf your computer is behind a firewall it may have a different address or be unreachable for other computers."));
KMessageBox::about(this,
i18n("This field contains the address of your computer and the port number, separated by a colon.\n\nThe address is just a hint - you can use any address that can reach your computer.\n\nDesktop Sharing tries to guess your address from your network configuration, but does not always succeed in doing so.\n\nIf your computer is behind a firewall it may have a different address or be unreachable for other computers."),
i18n("KDE Desktop Sharing"));
}
void MainWindow::aboutUnattendedMode()
{
QMessageBox::about(this,
i18n("KDE Desktop Sharing"),
i18n("Any remote user with normal desktop sharing password will have to be authenticated.\n\nIf unattended access is on, and the remote user provides unattended mode password, desktop sharing access will be granted without explicit confirmation."));
KMessageBox::about(this,
i18n("Any remote user with normal desktop sharing password will have to be authenticated.\n\nIf unattended access is on, and the remote user provides unattended mode password, desktop sharing access will be granted without explicit confirmation."),
i18n("KDE Desktop Sharing"));
}
void MainWindow::showConfiguration()

View File

@@ -20,6 +20,7 @@
<name xml:lang="ia">Krfb</name>
<name xml:lang="id">Krfb</name>
<name xml:lang="it">Krfb</name>
<name xml:lang="ka">Krfb</name>
<name xml:lang="ko">Krfb</name>
<name xml:lang="nl">Krfb</name>
<name xml:lang="nn">Krfb</name>
@@ -56,6 +57,7 @@
<summary xml:lang="ia">Compartir tu scriptorio a un altere computator via VNC</summary>
<summary xml:lang="id">Bagikan desktopmu ke komputer lainnya via VNC</summary>
<summary xml:lang="it">Condividi il desktop con un altro computer tramite VNC</summary>
<summary xml:lang="ka">სამუშაო მაგიდის გაზიარება Krfb-სთან ერთად VNC-სთან ერთად</summary>
<summary xml:lang="ko">내 데스크톱을 VNC로 다른 컴퓨터와 공유</summary>
<summary xml:lang="nl">Uw bureaublad delen naar een andere computer via VNC</summary>
<summary xml:lang="nn">Del skrivebordet med ei anna maskin via VNC</summary>
@@ -132,6 +134,7 @@
<caption xml:lang="ia">Compartir scriptorio con Krfb</caption>
<caption xml:lang="id">Berbagi desktop dengan Krfb</caption>
<caption xml:lang="it">Condivisone del desktop con Krfb</caption>
<caption xml:lang="ka">სამუშაო მაგიდის გაზიარება Krfb-სთან ერთად</caption>
<caption xml:lang="ko">Krfb로 데스크톱 공유</caption>
<caption xml:lang="nl">Bureaublad delen met Krfb</caption>
<caption xml:lang="nn">Skrivebordsdeling med Krfb</caption>
@@ -156,9 +159,9 @@
</provides>
<project_group>KDE</project_group>
<releases>
<release version="22.04.3" date="2022-07-07"/>
<release version="22.04.2" date="2022-06-09"/>
<release version="22.04.1" date="2022-05-12"/>
<release version="22.04.0" date="2022-04-21"/>
<release version="22.08.3" date="2022-11-03"/>
<release version="22.08.2" date="2022-10-13"/>
<release version="22.08.1" date="2022-09-08"/>
<release version="22.08.0" date="2022-08-18"/>
</releases>
</component>

View File

@@ -37,6 +37,7 @@ Name[id]=Krfb
Name[is]=Krfb
Name[it]=Krfb
Name[ja]=Krfb
Name[ka]=Krfb
Name[kk]=Krfb
Name[km]=Krfb
Name[ko]=Krfb
@@ -89,6 +90,7 @@ GenericName[fi]=Työpöydän jakaminen (VNC)
GenericName[fr]=Partage de bureaux (VNC)
GenericName[ia]=Compartir de scriptorio (VNC)
GenericName[it]=Condivisione del desktop (VNC)
GenericName[ka]=სამუშაო მაგიდის გაზიარება(VNC).
GenericName[ko]=데스크톱 공유(VNC)
GenericName[nl]=Bureaublad delen (VNC)
GenericName[nn]=Skrivebordsdeling (VNC)
@@ -137,6 +139,7 @@ Comment[id]=Desktop Sharing
Comment[is]=Skjáborðamiðlun
Comment[it]=Condivisione del desktop
Comment[ja]=デスクトップ共有
Comment[ka]=სამუშაო მაგიდის გაზიარება
Comment[kk]=Үстелді ортақтастыру
Comment[km]=ការ​ចែក​រំលែក​ផ្ទែ​តុ
Comment[ko]=데스크톱 공유

View File

@@ -11,10 +11,12 @@ Name[cs]=Virtuální monitor KRFB
Name[el]=Εικονική οθόνη του KRFB
Name[en_GB]=KRFBs Virtual Monitor
Name[es]=Monitor virtual de KRFB
Name[eu]=KRFBren alegiazko monitorea
Name[fi]=KRFB:n virtuaalinäyttö
Name[fr]=Moniteur virtuel « Krfb »
Name[ia]=Virtual Monitor de KRFB
Name[it]=Monitor virtuale di KRFB
Name[ka]=KRFB-
Name[ko]=KRFBs
Name[nl]=Virtuele monitor van KRFB
Name[pl]=Monitor wirtualny KRFB
@@ -36,10 +38,12 @@ Comment[cs]=Vzdálený virtuální monitor
Comment[el]=Απομακρυσμένη εικονική οθόνη
Comment[en_GB]=Remote Virtual Monitor
Comment[es]=Monitor virtual remoto
Comment[eu]=Urruneko alegiazko monitorea
Comment[fi]=Virtuaalinen etänäyttö
Comment[fr]=Moniteur virtuel distant
Comment[ia]=Monitor Virtual Remote
Comment[it]=Monitor virtuale remoto
Comment[ka]=
Comment[ko]=
Comment[nl]=Virtual Monitor op afstand
Comment[pl]=Zdalny monitor wirtualny