Ivan Molodetskikh’s Webpage

Easy Sandboxing on Linux with Bubblewrap

Aug 9, 2026
I show my script for spawning lightweight temporary sandboxes with Bubblewrap.

Using Fedora Silverblue for Compositor Development

Jun 5, 2026
How can you use an immutable distro to develop and test system components? I describe my workflows and argue that it’s even better than a traditional system.

Just How Much Faster Are the GNOME 46 Terminals?

Apr 6, 2024
I use a hardware latency tester to measure how much the VTE-based terminals improved from GNOME 45 to GNOME 46.

Motion Blur for Half-Life Video Recording with Vulkan

Aug 19, 2023

Half-Life and Counter-Strike movement communities frequently record their videos with motion blur. However, doing that fast is not a trivial task.

I talk about what goes into good motion blur and let you play with the blur parameters. I then describe my GPU-accelerated solution for fast recording of these videos, and the technical issues I’ve faced implementing it. I also analyse the performance and overhead of this code on a slow and a fast laptop.

Identity v0.5 and Synchronized Scrolled Windows

Apr 5, 2023
In the new Identity update I added side-by-side comparison for images and videos. To do it, I synchronize together multiple GtkScrolledWindows. However, that’s tricky to implement correctly. This post describes the problems and how to solve them.

GSoC 2021: Overview

Aug 21, 2021
An overview of my summer work to implement a new screenshot UI into GNOME Shell, and demo of the screencast functionality.

GSoC 2021: Screenshots with Pointer

Aug 6, 2021
I show my progress implementing HiDPI and mixed DPI support in the new GNOME Shell screenshot UI. Then I describe my implementation of pointer capture and preview and the various edge cases entailed within.

Fast Half-Life Video Recording with Vulkan

Jul 27, 2021

I describe the inner workings of my new video recording tool in bxt-rs. It can record in-game footage from Half-Life at 1920×1080@60 at up to 3 times faster than real-time on a reasonably powerful PC.

I explain the general principles of specialized video recording tools, show how the bxt-rs video recording integrates into the game loop, and how to share frame buffers between OpenGL and Vulkan. I then talk about how I implemented the color conversion, the video encoding step, and how I optimized the performance by using two threads and correct GPU memory types.

GSoC 2021: Selection Editing and Window Selection

Jul 15, 2021
I show my progress on the GNOME Shell screenshot UI: the new area selection draggable corner handles, an improved opening animation, window selection, X11 support.

GSoC 2021: GNOME Shell Screenshot UI

Jun 29, 2021
Wherein we meet again, for a new GSoC project to add a screenshot UI to GNOME Shell. I show a mock-up of the UI and a video demo of what I have already implemented.