Kazam всегда записывает только 1/4 экрана
Я пытаюсь использовать Kazam, чтобы снимать видео с экрана. Он всегда записывает 1/4 верхнего левого угла моего экрана, независимо от того, что я делаю. Неважно, если я выберу весь экран, окно или выбрать часть экрана для записи.
Я думаю, это связано с масштабированием. Я использую масштабирование в своей Ubuntu, потому что это 4k монитор. Есть ли способ преодолеть это?
2 ответа
Действительно, это связано с конфигурацией масштабирования вашего монитора. В моем случае у меня также есть 4K, и мне нужно использовать масштабирование 200%.
Этот патч решает проблему, его очень просто применить. Я протестировал его на Ubuntu 22.04.1, и он отлично работает.
Нашел ту же проблему на гитхабе kazam https://github.com/hzbd/kazam/pull/47 .
@sllorente подготовил путь только для 1 файла (вместо 2), что устраняет проблему, см. https://bugs.launchpad.net/kazam/+bug/1283424/comments/13 .
Патч можно скачать с https://bugs.launchpad.net/kazam/+bug/1283424/+attachment/5499618/+files/kazam-1.4.5-patch .
--- kazam-1.4.5/backend/prefs.py 2014-08-18 18:48:36.000000000 +0200
+++ kazam/backend/prefs.py 2021-05-23 15:30:44.876596507 +0200
@@ -312,22 +312,31 @@
self.default_screen = Gdk.Screen.get_default()
self.logger.debug("Found {0} monitor(s).".format(self.default_screen.get_n_monitors()))
+ combined_width = 0
+ combined_height = 0
for i in range(self.default_screen.get_n_monitors()):
rect = self.default_screen.get_monitor_geometry(i)
- self.logger.debug(" Monitor {0} - X: {1}, Y: {2}, W: {3}, H: {4}".format(i,
+ scale = self.default_screen.get_monitor_scale_factor(i)
+
+ self.logger.debug(" Monitor {0} - X: {1}, Y: {2}, W: {3}, H: {4}, scale: {5}".format(i,
rect.x,
rect.y,
rect.width,
- rect.height))
- self.screens.append({"x": rect.x,
- "y": rect.y,
- "width": rect.width,
- "height": rect.height})
+ rect.height,
+ scale))
+ self.screens.append({"x": rect.x * scale,
+ "y": rect.y * scale,
+ "width": rect.width * scale,
+ "height": rect.height * scale,
+ "scale": scale})
+
+ combined_width = combined_width + rect.width * scale
+ combined_height = combined_height + rect.height *scale
if self.default_screen.get_n_monitors() > 1:
self.combined_screen = {"x": 0, "y": 0,
- "width": self.default_screen.get_width(),
- "height": self.default_screen.get_height()}
+ "width": combined_width,
+ "height": combined_height}
self.logger.debug(" Combined screen - X: 0, Y: 0, W: {0}, H: {1}".format(self.default_screen.get_width(),
self.default_screen.get_height()))
else:
К вашему сведению файл можно пропатчить командой
sudo patch /usr/lib/python3/dist-packages/kazam/backend/prefs.py < ~/Desktop/kazam-1.4.5.diff