<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorial</title><link>https://blog.willzhou.com/tag/tutorial/</link><description>Keep Learning</description><language>en</language><atom:link href="https://blog.willzhou.com/tag/tutorial/" rel="alternate" type="text/html"/><item><title>修复Linux下Flameshot在4k/5k屏幕下无法正常截图的问题</title><link>https://blog.willzhou.com/solve-fractional-scaling-issue-for-flameshot/</link><guid isPermaLink="true">https://blog.willzhou.com/solve-fractional-scaling-issue-for-flameshot/</guid><pubDate>Wed, 20 Oct 2021 08:16:42 +0000</pubDate><description>&lt;h2 id="flameshot的高分辨率屏幕bug">Flameshot的高分辨率屏幕bug&lt;/h2>
&lt;p>使用Flameshot期间发现了最新版(v0.10.1 - &lt;a href="https://github.com/flameshot-org/flameshot/commit/4e406ec80f21bd91c8b0ee56d0dab709094a5663">4e406ec&lt;/a>
)在Linux环境下安装了以后没办法正常截图。表现为一旦点截图，屏幕全黑——是直接black screen，屏幕信号消失。狂按ESC后恢复。&lt;/p>
&lt;p>恢复以后再次点截图到是不黑屏了，但是可截图区域只有实际屏幕大小的1.5倍（此处猜测和QT程序在非整数倍缩放有关），而我此刻缩放比例恰恰是设置在了150%&lt;/p>
&lt;h2 id="确认bug">确认Bug&lt;/h2>
&lt;p>Opensource最大的好处就是源码随便看，这个截图程序本来就不大，我看了一下发现大部分和截图操作有关的逻辑都是Qt写的：&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://github.com/flameshot-org/flameshot/blob/master/src/utils/screengrabber.cpp#L8-L12">flameshot/screengrabber.cpp at master · flameshot-org/flameshot&lt;/a>
&lt;/p>
&lt;p>Powerful yet simple to use screenshot software :desktop_computer: :camera_flash: - flameshot/screengrabber.cpp at master · flameshot-org/flameshot&lt;/p>
&lt;p>GitHub · flameshot-org&lt;/p>&lt;/blockquote>
&lt;p>同时我看到open ticket当中也有人反馈类似的问题：&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://github.com/flameshot-org/flameshot/issues/564">Fails when fractional scaling &amp;lt;&amp;gt; 100% · Issue #564 · flameshot-org/flameshot&lt;/a>
&lt;/p>
&lt;p>Ubuntu 19.04 supports fractional scaling on Wayland and Xorg. When using a factor that is not the default (like 150%, for instance on a HiDPI display), and trying to capture a screenshot with flame...&lt;/p>
&lt;p>GitHub · flameshot-org&lt;/p>&lt;/blockquote>
&lt;p>2019年有人提出这个bug开始，这个问题一直都没有被修复。&lt;/p>
&lt;h2 id="修复flameshot的尝试">修复Flameshot的尝试&lt;/h2>
&lt;p>先尝试了设置系统缩放=100%和200%，4K/5K屏幕下Flameshot均能正常使用。基本说明猜测八九不离十是没错的了。&lt;/p>
&lt;p>这个问题的根本原因是Qt对非整数倍缩放支持一直都有问题，Qt 5.6后来加入了DPI awareness去解决这个问题。但是因为各种原因很多软件并没有开启支持：&lt;/p>
&lt;blockquote>
&lt;p>&lt;code>QT_AUTO_SCREEN_SCALE_FACTOR&lt;/code> [boolean] enables automatic scaling, based on the monitor's pixel density. This won't change the size of point-sized fonts, since point is a physical measurement unit. Multiple screens may get different scale factors.&lt;/p>
&lt;p>– Source: &lt;a href="https://doc.qt.io/qt-5/highdpi.html">https://doc.qt.io/qt-5/highdpi.html&lt;/a>
&lt;/p>&lt;/blockquote>
&lt;p>而根据作者的信息我们可以清楚的知道flameshot所用的Qt肯定是&amp;gt;= 5.6的，也就是肯定是支持DPI awareness的。&lt;/p>
&lt;p>&lt;img src="https://blog.willzhou.com/images/2021/10/image-6.png" alt="" loading="lazy" decoding="async">
&lt;/p>
&lt;p>所以只要：&lt;/p>
&lt;pre tabindex="0">&lt;code># 带QT_AUTO_SCREEN_SCALE_FACTOR=1启动
env QT_AUTO_SCREEN_SCALE_FACTOR=1 flameshot
# 测试是否可以正常使用
# 如果一切正常+别的软件没问题问题，可以考虑加到系统.profile文件中
echo &amp;#34;export QT_AUTO_SCREEN_SCALE_FACTOR=1&amp;#34; &amp;gt;&amp;gt; ~/.profile
&lt;/code>&lt;/pre>&lt;p>重启，问题解决。&lt;/p>
&lt;p>文中的截图就是Gnome 40+150%缩放截的，所有功能全部正常。就是稍微有点卡。&lt;/p></description></item></channel></rss>