diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3b42f1b100c8d52874a1ac9f14ffebb3bcd1e145..01506c8be45806bdb474ce3bda6ea85d610af0ed 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -5,6 +5,7 @@
         "string": "cpp",
         "string_view": "cpp",
         "ranges": "cpp",
-        "thread": "cpp"
+        "thread": "cpp",
+        "xstring": "cpp"
     }
 }
\ No newline at end of file
diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index a54d991f11c751335c39a020c012d57a398dded6..a72008c537fe8f1106147b5510ed3b03d857b640 100644
--- a/src/constant/JamiStrings.qml
+++ b/src/constant/JamiStrings.qml
@@ -176,6 +176,8 @@ Item {
     property string selectFPS: qsTr("Select video frame rate (frames per second)")
     property string enableHWAccel: qsTr("Enable hardware acceleration")
     property string previewUnavailable: qsTr("Preview unavailable")
+    property string screenSharing: qsTr("Screen Sharing")
+    property string selectScreenSharingFPS: qsTr("Select screen sharing frame rate (frames per second)")
 
     // BackupKeyPage
     property string  backupAccountInfos: qsTr("Your account only exists on this device. " +
diff --git a/src/settingsview/components/SettingsComboBox.qml b/src/settingsview/components/SettingsComboBox.qml
index ed0aa2467e923be993752d1ce6e0b45a5c14e385..63a4f7b76b02d039becb0f2ebf3d0cdc9010222b 100644
--- a/src/settingsview/components/SettingsComboBox.qml
+++ b/src/settingsview/components/SettingsComboBox.qml
@@ -35,6 +35,7 @@ RowLayout {
     property alias enabled: comboBoxOfLayout.enabled
     property alias fontPointSize: comboBoxOfLayout.font.pointSize
     property alias modelIndex: comboBoxOfLayout.currentIndex
+    property alias modelSize: comboBoxOfLayout.count
 
     property int heightOfLayout: 30
     property int widthOfComboBox: 50
diff --git a/src/settingsview/components/VideoSettings.qml b/src/settingsview/components/VideoSettings.qml
index 50fd6649b0293a96759a50a678e910297c36753b..34076e66f224a469d3cf883d54c0dde34ce58d5c 100644
--- a/src/settingsview/components/VideoSettings.qml
+++ b/src/settingsview/components/VideoSettings.qml
@@ -120,6 +120,7 @@ ColumnLayout {
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         enabled: VideoDevices.listSize !== 0
+        opacity: enabled ? 1.0 : 0.5
 
         fontPointSize: JamiTheme.settingsFontSize
         widthOfComboBox: itemWidth
@@ -147,6 +148,7 @@ ColumnLayout {
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         enabled: VideoDevices.listSize !== 0
+        opacity: enabled ? 1.0 : 0.5
 
         widthOfComboBox: itemWidth
         fontPointSize: JamiTheme.settingsFontSize
@@ -168,6 +170,7 @@ ColumnLayout {
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         enabled: VideoDevices.listSize !== 0
+        opacity: enabled ? 1.0 : 0.5
 
         widthOfComboBox: itemWidth
         fontPointSize: JamiTheme.settingsFontSize
@@ -200,6 +203,8 @@ ColumnLayout {
     Rectangle {
         id: rectBox
 
+        visible: VideoDevices.listSize !== 0
+
         Layout.alignment: Qt.AlignHCenter
         Layout.preferredHeight: width * aspectRatio
 
@@ -217,7 +222,6 @@ ColumnLayout {
 
             lrcInstance: LRCInstance
 
-            visible: VideoDevices.listSize !== 0
             layer.enabled: true
             layer.effect: OpacityMask {
                 maskSource: rectBox
@@ -240,4 +244,44 @@ ColumnLayout {
         horizontalAlignment: Text.AlignHCenter
         verticalAlignment: Text.AlignVCenter
     }
+
+    ElidedTextLabel {
+        id: screenSharingSetTitle
+        visible: screenSharingFPSComboBoxSetting.modelSize > 0
+        Layout.fillWidth: true
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
+
+        eText: JamiStrings.screenSharing
+        fontSize: JamiTheme.headerFontSize
+        maxWidth: itemWidth * 2
+    }
+
+    SettingsComboBox {
+        id: screenSharingFPSComboBoxSetting
+
+        visible: modelSize > 0
+
+        Layout.fillWidth: true
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
+        Layout.leftMargin: JamiTheme.preferredMarginSize
+        Layout.bottomMargin: JamiTheme.preferredMarginSize
+
+        widthOfComboBox: itemWidth
+        fontPointSize: JamiTheme.settingsFontSize
+
+        tipText: JamiStrings.selectScreenSharingFPS
+        labelText: JamiStrings.fps
+        currentSelectionText: VideoDevices.screenSharingDefaultFps.toString()
+        placeholderText: VideoDevices.screenSharingDefaultFps.toString()
+        comboModel: ListModel { id: screenSharingFpsModel }
+        role: "FPS"
+        Component.onCompleted: {
+            var elements = VideoDevices.getScreenSharingFpsModel()
+            for (var item in elements) {
+                screenSharingFpsModel.append({"FPS": elements[item]})
+            }
+        }
+
+        onActivated: VideoDevices.setDisplayFPS(screenSharingFpsModel.get(modelIndex).FPS)
+    }
 }
diff --git a/src/videodevices.cpp b/src/videodevices.cpp
index 94cb0bbe623256aa797eb580cf0dd3426caebea9..e4d1d5dd5475669bf2526ed853a3149e7b6823f8 100644
--- a/src/videodevices.cpp
+++ b/src/videodevices.cpp
@@ -206,6 +206,14 @@ VideoDevices::VideoDevices(LRCInstance* lrcInstance, QObject* parent)
             this,
             &VideoDevices::onVideoDeviceEvent);
 
+    auto displaySettings = lrcInstance_->avModel().getDeviceSettings(DEVICE_DESKTOP);
+
+    auto desktopfpsSource = lrcInstance_->avModel().getDeviceCapabilities(DEVICE_DESKTOP);
+    if (desktopfpsSource.contains(CHANNEL_DEFAULT) && !desktopfpsSource[CHANNEL_DEFAULT].empty()) {
+        desktopfpsSourceModel_ = desktopfpsSource[CHANNEL_DEFAULT][0].second;
+        if (desktopfpsSourceModel_.indexOf(displaySettings.rate) >= 0)
+            set_screenSharingDefaultFps(displaySettings.rate);
+    }
     updateData();
 }
 
@@ -305,6 +313,22 @@ VideoDevices::setDefaultDeviceFps(int index)
     updateData();
 }
 
+void
+VideoDevices::setDisplayFPS(const QString& fps)
+{
+    auto settings = lrcInstance_->avModel().getDeviceSettings(DEVICE_DESKTOP);
+    settings.id = DEVICE_DESKTOP;
+    settings.rate = fps.toInt();
+    lrcInstance_->avModel().setDeviceSettings(settings);
+    set_screenSharingDefaultFps(fps.toInt());
+}
+
+QVariant
+VideoDevices::getScreenSharingFpsModel()
+{
+    return QVariant::fromValue(desktopfpsSourceModel_.toList());
+}
+
 void
 VideoDevices::updateData()
 {
@@ -315,7 +339,7 @@ VideoDevices::updateData()
         auto defaultDeviceSettings = lrcInstance_->avModel().getDeviceSettings(defaultDevice);
         auto defaultDeviceCap = lrcInstance_->avModel().getDeviceCapabilities(defaultDevice);
         auto currentResRateList = defaultDeviceCap[defaultDeviceSettings.channel.isEmpty()
-                                                       ? "default"
+                                                       ? CHANNEL_DEFAULT
                                                        : defaultDeviceSettings.channel];
         lrc::api::video::FrameratesList fpsList;
 
diff --git a/src/videodevices.h b/src/videodevices.h
index e6adab00902e8d841a1e46adc69a2b9960e9d200..3ac428491a3f2a7bf7f582f5fa5cdf2061ee71c1 100644
--- a/src/videodevices.h
+++ b/src/videodevices.h
@@ -153,6 +153,7 @@ class VideoDevices : public QObject
     QML_RO_PROPERTY(QString, defaultName)
     QML_RO_PROPERTY(QString, defaultRes)
     QML_RO_PROPERTY(int, defaultFps)
+    QML_PROPERTY(int, screenSharingDefaultFps)
 
 public:
     explicit VideoDevices(LRCInstance* lrcInstance, QObject* parent = nullptr);
@@ -166,10 +167,12 @@ public:
 
     Q_INVOKABLE QVariant fpsFilterModel();
     Q_INVOKABLE QVariant fpsSourceModel();
+    Q_INVOKABLE QVariant getScreenSharingFpsModel();
 
     Q_INVOKABLE void setDefaultDevice(int index, bool useSourceModel = false);
     Q_INVOKABLE void setDefaultDeviceRes(int index);
     Q_INVOKABLE void setDefaultDeviceFps(int index);
+    Q_INVOKABLE void setDisplayFPS(const QString& fps);
 
     const lrc::api::video::ResRateList& get_defaultResRateList();
     void set_defaultResRateList(lrc::api::video::ResRateList resRateList);
@@ -202,4 +205,8 @@ private:
 
     lrc::api::video::ResRateList defaultResRateList_;
     lrc::api::video::FrameratesList defaultFpsList_;
+    lrc::api::video::FrameratesList desktopfpsSourceModel_;
+
+    constexpr static const char DEVICE_DESKTOP[] = "desktop";
+    constexpr static const char CHANNEL_DEFAULT[] = "default";
 };