13

I'm trying to use Kazam to take videos of the screen. It always records the 1/4 of top left of my screen, no matter what I do. No matter if I select the entire screen, a window or select a piece of the screen to record.

I guess it has to do with scaling. I use scaling in my ubuntu because it's a 4k monitor. Is there a way to overcome this?

Poperton
  • 1,283

2 Answers2

3

Indeed, has to do with the scaling configuration of your monitor. I also have a 4K and I need to use 200% scaling.

This patch solves the issue, it's very simple to apply. I tested it on Ubuntu 22.04.1 and it works perfectly.

1

Found the same issue on the kazam github https://github.com/hzbd/kazam/pull/47.

@sllorente prepared the path for 1 file only (instead of 2) which fixes the issue, see https://bugs.launchpad.net/kazam/+bug/1283424/comments/13

The patch can be downloaded from 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:
    

FYI the file can be patched with the command

sudo patch /usr/lib/python3/dist-packages/kazam/backend/prefs.py < ~/Desktop/kazam-1.4.5.diff
anonymous2
  • 4,325
svonidze
  • 111