4

After installing kazam screen casting software, it is not launching.

I am using Ubuntu 17.04.

Update: enter image description here

    /usr/bin/kazam:32: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk
/usr/lib/python3/dist-packages/kazam/frontend/window_area.py:30: PyGIWarning: Wnck was imported without specifying a version first. Use gi.require_version('Wnck', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11
/usr/lib/python3/dist-packages/kazam/backend/gstreamer.py:35: PyGIWarning: Gst was imported without specifying a version first. Use gi.require_version('Gst', '1.0') before import to ensure that the right version gets loaded.
  from gi.repository import GObject, Gst
/usr/lib/python3/dist-packages/kazam/frontend/indicator.py:148: PyGIWarning: AppIndicator3 was imported without specifying a version first. Use gi.require_version('AppIndicator3', '0.1') before import to ensure that the right version gets loaded.
  from gi.repository import AppIndicator3
/usr/lib/python3/dist-packages/kazam/frontend/indicator.py:97: PyGIWarning: Keybinder was imported without specifying a version first. Use gi.require_version('Keybinder', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Keybinder
Segmentation fault (core dumped)
Sourav Ghosh
  • 401
  • 4
  • 13
Gaurab Kumar
  • 171
  • 1
  • 1
  • 8
  • Did you search for the problem? Try this search: https://www.google.ch/search?q=PyGIWarning+kazam. The first hit leads to this: https://github.com/sconts/kazam/issues/4 Can you walk on from there? – Tomáš Pospíšek Dec 02 '17 at 10:59
  • Open a shell and type kazam [Enter]. What happens when you do that? – Tomáš Pospíšek Dec 01 '17 at 20:44
  • see the updated ques – Gaurab Kumar Dec 01 '17 at 20:48
  • can you transform that into text, so it becomes copy/pastable and searchable? – Tomáš Pospíšek Dec 01 '17 at 20:51
  • Those are just warnings and will not cause an application to crash. It should be fixed though by the Kazam developers by just doing what it says: add gi.require_version(lib, version) for each warning. I think it's best to ask on the Kazam GitHub page about this issue, they should walk you through on how to debug that segfault. – Timo Dec 03 '17 at 08:42
  • 1
    You may need to follow this process: http://mednis.info/use-girequire_versiongtk-30-before-import.html in usr/bin/kazam file Update: In Kubuntu 18.04, I had to remove the last version of Kazam and install the old one using the official apt repository – Raul Fernando Fandiño Olaya Mar 20 '20 at 16:48

5 Answers5

5

Simply installing python3-xlib solved your particular Segmentation Fault issue with Kazam, but you may have noticed there are still several PyGI warnings about importing "without specifying a version first".

Since this question is google's #1 on such warnings (that's how I stumbled here), this is how to change the code to prevent such warnings, as described by the warnings themselves.

Instead of:

from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11, Gst, AppIndicator3

Which emits several warnings:

__main__:1: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
__main__:1: PyGIWarning: Wnck was imported without specifying a version first. Use gi.require_version('Wnck', '3.0') before import to ensure that the right version gets loaded.
__main__:1: PyGIWarning: Gst was imported without specifying a version first. Use gi.require_version('Gst', '1.0') before import to ensure that the right version gets loaded.
__main__:1: PyGIWarning: AppIndicator3 was imported without specifying a version first. Use gi.require_version('AppIndicator3', '0.1') before import to ensure that the right version gets loaded.

Use this, according to official PyGOobject Documentation:

import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Wnck', '3.0')
gi.require_version('Gst', '1.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11, Gst, AppIndicator3

Apparently not all gi's submodules require specifying a version.

Or alternatively you can require all versions in a single statement using the require_versions() function (note the plural), which takes a single dictionary of modules and their respective versions:

import gi
gi.require_versions({
    'Gtk':  '3.0',
    'Wnck': '3.0',
    'Gst':  '1.0',
    'AppIndicator3': '0.1',
})
from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11, Gst, AppIndicator3

This function is not listed in official docs, but it was added in PyGObject 3.21.0 released in 2016.

MestreLion
  • 20,086
4

The problem with this segmentation fault is in Kazam hotkeys bindings. Maybe the system cannot give some keybingings to Kazam, thus we get an exception.

The rough solution is to remove Kazam’s global keybingings:

  1. Open the file:
    /usr/lib/python3/dist-packages/kazam/frontend/indicator.py

  2. Find these strings (about line 100 or so):

    Keybinder.bind("<Super><Ctrl>R", self.cb_hotkeys, "start-request")
    Keybinder.bind("<Super><Ctrl>F", self.cb_hotkeys, "stop-request")
    Keybinder.bind("<Super><Ctrl>P", self.cb_hotkeys, "pause-request")
    Keybinder.bind("<Super><Ctrl>W", self.cb_hotkeys, "show-request")
    Keybinder.bind("<Super><Ctrl>Q", self.cb_hotkeys, "quit-request")
    
  3. Comment them out:

    #Keybinder.bind("<Super><Ctrl>R", self.cb_hotkeys, "start-request")
    #Keybinder.bind("<Super><Ctrl>F", self.cb_hotkeys, "stop-request")
    #Keybinder.bind("<Super><Ctrl>P", self.cb_hotkeys, "pause-request")
    #Keybinder.bind("<Super><Ctrl>W", self.cb_hotkeys, "show-request")
    #Keybinder.bind("<Super><Ctrl>Q", self.cb_hotkeys, "quit-request")
    
  4. Save the file.

  5. Run Kazam.

  6. You’re awesome.

After that, you cannot use those hotkeys though, but at least Kazam will work.

3

Solved: I just needed to install python3-xlib:

sudo apt-get update
sudo apt-get install python3-xlib
Gaurab Kumar
  • 171
  • 1
  • 1
  • 8
2

On Ubuntu 20.04, I had better luck with a GitHub fork. Here are the steps:

By default, this installs in /usr/local/bin/kazam, which should already be on your PATH.

For me, this local kazam also appeared as a launcher with icons. However, these may be left over from the Ubuntu package or from the PPA above.

If you have a problem selecting the microphone, use this command post-install (using the appropriate python version):

sudo sed -i 's/time.clock/time.perf_counter/g' python3.8/dist-packages/kazam/pulseaudio/pulseaudio.py

Andrew Olney
  • 141
  • 3
  • using sudo python3 setup.py install directly to the source is not good practice. Because you must remove dependencies one by one. – Aldy Dec 09 '20 at 23:25
1

You can just simply use:

pip install --upgrade --force-reinstall kazam
FWO
  • 21