Skip to content

[X11] My cursor is not captured in game #274

@Telokis

Description

@Telokis

Describe the bug
Cursor not captured in game. In either Factorio (through Steam) or Minecraft (through PrismLauncher).
I didn't try any other game yet. They both show properly in OBS but with no cursor.

System (please complete the following information):

  • OS: Linux Mint 22.2
  • GPU: NVIDIA 3080Ti
  • Mesa version: How to check?
  • obs-vkcapture version: Commit 65c83d0ba3e8d554684aad83975372b7c507753b (Wed Sep 17 17:34:51 2025 +0200)

OBS log:

13:02:42.123: Using EGL/X11
13:02:42.123: CPU Name: AMD Ryzen 9 7950X 16-Core Processor
13:02:42.123: CPU Speed: 4938.433MHz
13:02:42.123: Physical Cores: 16, Logical Cores: 32
13:02:42.123: Physical Memory: 31222MB Total, 9272MB Free
13:02:42.124: Kernel Version: Linux 6.8.0-87-generic
13:02:42.124: Distribution: "Linux Mint" "22.2"
13:02:42.124: Desktop Environment: X-Cinnamon (cinnamon)
13:02:42.124: Session Type: x11
13:02:42.124: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.21.1
13:02:42.125: Qt Version: 6.4.2 (runtime), 6.4.2 (compiled)
13:02:42.125: Portable mode: false
13:02:42.161: OBS 30.0.2.1-3build1 (linux)
13:02:42.161: ---------------------------------
13:02:42.166: ---------------------------------
13:02:42.166: audio settings reset:
13:02:42.166: 	samples per sec: 48000
13:02:42.166: 	speakers:        2
13:02:42.166: 	max buffering:   960 milliseconds
13:02:42.166: 	buffering type:  dynamically increasing
13:02:42.167: ---------------------------------
13:02:42.167: Initializing OpenGL...
13:02:42.315: Loading up OpenGL on adapter NVIDIA Corporation NVIDIA GeForce RTX 3080 Ti/PCIe/SSE2
13:02:42.315: OpenGL loaded successfully, version 3.3.0 NVIDIA 580.95.05, shading language 3.30 NVIDIA via Cg compiler
13:02:42.333: ---------------------------------
13:02:42.333: video settings reset:
13:02:42.333: 	base resolution:   2560x1440
13:02:42.333: 	output resolution: 1920x1080
13:02:42.333: 	downscale filter:  Bicubic
13:02:42.333: 	fps:               60/1
13:02:42.333: 	format:            NV12
13:02:42.333: 	YUV mode:          Rec. 709/Partial
13:02:42.333: NV12 texture support not available
13:02:42.333: P010 texture support not available
13:02:42.369: Audio monitoring device:
13:02:42.369: 	name: Default
13:02:42.369: 	id: default
13:02:42.369: ---------------------------------
13:02:42.378: Failed to load 'en-US' text for module: 'decklink-captions.so'
13:02:42.385: Failed to load 'en-US' text for module: 'decklink-output-ui.so'
13:02:42.393: A DeckLink iterator could not be created.  The DeckLink drivers may not be installed
13:02:42.393: Failed to initialize module 'decklink.so'
13:02:42.459: [pipewire] No captures available
13:02:42.485: [linux-vkcapture] plugin loaded successfully (version 1.5.3)
13:02:42.528: NVENC supported
13:02:42.528: VAAPI: Failed to initialize display in vaapi_device_h264_supported
13:02:42.563: VAAPI: API version 1.20
13:02:42.564: FFmpeg VAAPI H264 encoding supported
13:02:42.564: VAAPI: Failed to initialize display in vaapi_device_hevc_supported
13:02:42.571: FFmpeg VAAPI HEVC encoding supported
13:02:42.611: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.3.4 | RPC Version: 1)
13:02:42.611: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.4.2 | Qt version (run-time): 6.4.2
13:02:42.611: [obs-websocket] [obs_module_load] Linked ASIO Version: 102801
13:02:42.615: [obs-websocket] [obs_module_load] Module loaded.
13:02:42.651: [vlc-video]: VLC 3.0.20 Vetinari found, VLC video source enabled
13:02:42.651: ---------------------------------
13:02:42.651:   Loaded Modules:
13:02:42.651:     vlc-video.so
13:02:42.651:     text-freetype2.so
13:02:42.651:     rtmp-services.so
13:02:42.651:     obs-x264.so
13:02:42.651:     obs-websocket.so
13:02:42.651:     obs-transitions.so
13:02:42.651:     obs-outputs.so
13:02:42.651:     obs-filters.so
13:02:42.651:     obs-ffmpeg.so
13:02:42.651:     linux-vkcapture.so
13:02:42.651:     linux-v4l2.so
13:02:42.651:     linux-pulseaudio.so
13:02:42.651:     linux-pipewire.so
13:02:42.651:     linux-jack.so
13:02:42.651:     linux-capture.so
13:02:42.651:     linux-alsa.so
13:02:42.651:     image-source.so
13:02:42.651:     frontend-tools.so
13:02:42.651:     decklink-output-ui.so
13:02:42.651:     decklink-captions.so
13:02:42.651: ---------------------------------
13:02:42.651: [obs-websocket] [obs_module_post_load] WebSocket server is enabled, starting...
13:02:42.652: [obs-websocket] [WebSocketServer::Start] Not locked to IPv4 bindings
13:02:42.652: [obs-websocket] [WebSocketServer::ServerRunner] IO thread started.
13:02:42.654: [obs-websocket] [WebSocketServer::Start] Server started successfully on port 4455. Possible connect address: 127.0.0.1
13:02:42.655: QWidget::setTabOrder: 'first' and 'second' must be in the same window
13:02:42.655: ==== Startup complete ===============================================
13:02:42.699: All scene data cleared
13:02:42.700: ------------------------------------------------
13:02:42.703: pulse-input: Server name: 'PulseAudio (on PipeWire 1.0.5) 15.0.0'
13:02:42.703: pulse-input: Audio format: s24le, 48000 Hz, 2 channels
13:02:42.703: pulse-input: Sample format s24le not supported by OBS,using float32le instead for recording
13:02:42.703: pulse-input: Started recording from 'alsa_input.usb-Generic_USB_Audio-00.HiFi_7_1__hw_Audio_2__source' (default)
13:02:42.703: [Loaded global audio device]: 'Mic/Aux'
13:02:42.703: pulse-input: Server name: 'PulseAudio (on PipeWire 1.0.5) 15.0.0'
13:02:42.703: pulse-input: Audio format: float32le, 48000 Hz, 2 channels
13:02:42.703: pulse-input: Started recording from 'discord_sink.monitor'
13:02:42.703: pulse-input: Server name: 'PulseAudio (on PipeWire 1.0.5) 15.0.0'
13:02:42.703: pulse-input: Audio format: float32le, 48000 Hz, 2 channels
13:02:42.703: pulse-input: Started recording from 'game_sink.monitor'
13:02:42.704: pulse-input: Server name: 'PulseAudio (on PipeWire 1.0.5) 15.0.0'
13:02:42.704: pulse-input: Audio format: float32le, 48000 Hz, 2 channels
13:02:42.704: pulse-input: Started recording from 'default_sink.monitor' (default)
13:02:42.704: v4l2-input: Start capture from /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_95780FAF-video-index0
13:02:42.765: v4l2-input: Input: 0
13:02:42.769: v4l2-input: Resolution: 640x480
13:02:42.769: v4l2-input: Pixelformat: YUYV
13:02:42.769: v4l2-input: Linesize: 1280 Bytes
13:02:42.769: v4l2-input: Framerate: 30.00 fps
13:02:42.769: v4l2-input: /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_95780FAF-video-index0: select timeout set to 166666 (5x frame periods)
13:02:42.772: Switched to scene 'Main'
13:02:42.772: ------------------------------------------------
13:02:42.772: Loaded scenes:
13:02:42.772: - scene 'Main':
13:02:42.772:     - source: 'Audio' (group)
13:02:42.772:         - source: 'Audio - Discord' (pulse_output_capture)
13:02:42.772:         - source: 'Audio - Game' (pulse_output_capture)
13:02:42.772:         - source: 'Audio - Misc' (pulse_output_capture)
13:02:42.772:     - source: 'Game Capture' (vkcapture-source)
13:02:42.772:     - source: 'Camera' (v4l2_input)
13:02:42.772: ------------------------------------------------
13:02:43.297: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Audio - Misc)
13:02:43.297: 
13:02:49.206: adding 64 milliseconds of audio buffering, total audio buffering is now 85 milliseconds (source: Audio - Game)

Game log:

Paste game terminal output here.
Make sure to set OBS_VKCAPTURE_QUIET=0 environment variable.

It's a Steam game, I not sure how to launch it through the terminal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions