<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Przemek Grondek Blog]]></title><description><![CDATA[Random tech thing]]></description><link>https://blog.grondek.pl/</link><image><url>https://blog.grondek.pl/favicon.png</url><title>Przemek Grondek Blog</title><link>https://blog.grondek.pl/</link></image><generator>Ghost 5.62</generator><lastBuildDate>Wed, 15 Apr 2026 18:38:22 GMT</lastBuildDate><atom:link href="https://blog.grondek.pl/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Using any tablet as additional display]]></title><description><![CDATA[<p>Sometime you need additional display and it would be handy to use other device as second (or third) monitor. If you have apple devices you can use Apple Sidecar but it only works with Macbooks and iPads. There is option to use any display (tablet, TV or even another laptop)</p>]]></description><link>https://blog.grondek.pl/using-any-tablet-as-display/</link><guid isPermaLink="false">63c21a0f69b7030001681fb6</guid><category><![CDATA[linux]]></category><dc:creator><![CDATA[Przemek Grondek]]></dc:creator><pubDate>Fri, 22 Jul 2022 12:20:01 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1616016048007-9315ac44c696?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDI1fHx0YWJsZXR8ZW58MHx8fHwxNjU3NTcxMDEw&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1616016048007-9315ac44c696?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDI1fHx0YWJsZXR8ZW58MHx8fHwxNjU3NTcxMDEw&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" alt="Using any tablet as additional display"><p>Sometime you need additional display and it would be handy to use other device as second (or third) monitor. If you have apple devices you can use Apple Sidecar but it only works with Macbooks and iPads. There is option to use any display (tablet, TV or even another laptop) as additional display. Only requirement is to have network access to your computer. It works best in same LAN network but you can use it trough internet but your mileage may vary.</p><h2 id="setup-display-on-linux">Setup Display on Linux</h2><p>First we need to find disconnected monitor that we can manually enable it. In this example I have <code>HDMI-A-0</code> output available.</p><!--kg-card-begin: markdown--><pre><code>$ xrandr -q |grep disconnected
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
</code></pre>
<!--kg-card-end: markdown--><p>If you don&apos;t have any empty outputs you could try to use virtual display but I didn&apos;t try it.</p><h3 id="setup-resolution">Setup resolution</h3><p>If you have resolution that is already defined by your other monitor you can just add it to your disconnected input. To list available modes run <code>xrand</code></p><!--kg-card-begin: markdown--><pre><code>$ xrandr
Screen 0: minimum 320 x 200, current 5360 x 1440, maximum 16384 x 16384
DisplayPort-0 connected primary 3440x1440+0+0 (normal left inverted right x axis y axis) 800mm x 335mm
   3440x1440     59.94 +  74.98*   29.99
   2560x1440     59.95
   1720x1440     59.98
   1920x1200     59.94
   1920x1080     60.00    60.00    50.00    59.94
   1600x1200     59.94
   1680x1050     59.95
   1280x1024     75.02    60.02
   1440x900      59.89
   1280x960      60.00
   1280x800      59.81
   1152x864      75.00
   1280x720      60.00    50.00    59.94
   1440x576      50.00
   1024x768      75.03    70.07    60.00
   1440x480      60.00    59.94
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   720x576       50.00
   720x480       60.00    59.94
   640x480       75.00    72.81    66.67    60.00    59.94
   720x400       70.08
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
</code></pre>
<!--kg-card-end: markdown--><p>To add 1920x1080 resolution run:</p><!--kg-card-begin: markdown--><pre><code>$ xrandr --addmode HDMI-A-0 1920x1080
</code></pre>
<!--kg-card-end: markdown--><h3 id="custom-resolution">Custom resolution</h3><p>If your tablet has weird resolution you can setup custom resolution for pixel perfect output. To add custom resolution we need to add custom modeline for this input. Firs we generate modeline by using <code>cvt</code> command. In this example I&apos;m using resolution of iPad Pro 11&apos; 2384x1668 with 60 Hz refresh rate</p><!--kg-card-begin: markdown--><pre><code>$ cvt -h
usage: cvt [-v|--verbose] [-r|--reduced] X Y [refresh]
...
$ cvt 2384 1668 60
# 2384x1668 59.94 Hz (CVT) hsync: 103.63 kHz; pclk: 338.25 MHz
Modeline &quot;2384x1668_60.00&quot;  338.25  2384 2568 2824 3264  1668 1671 1681 1729 -hsync +vsync
</code></pre>
<!--kg-card-end: markdown--><p>To add new dummy mode, we need to copy modeline output from <code>cvt</code> command and add new mode to our output</p><!--kg-card-begin: markdown--><pre><code>$ xrandr --newmode &quot;2384x1668_60.00&quot;  338.02  2384 2560 2824 3264  1668 1669 1672 1726 -hsync +vsync
$ xrandr --addmode HDMI-A-0 2384x1668_60.00
</code></pre>
<!--kg-card-end: markdown--><h3 id="scaling">Scaling</h3><p>If you need to set scaling 2 times run command:</p><!--kg-card-begin: markdown--><pre><code>$ xrandr --output HDMI-A-0 --scale 0.5x0.5
</code></pre>
<!--kg-card-end: markdown--><h3 id="enable-display">Enable display</h3><p>To enable display (in my case below monitor connected via DisplayPort-0):</p><!--kg-card-begin: markdown--><pre><code>$ xrandr --output HDMI-A-0 --mode 2384x1668_60.00 --below DisplayPort-0
</code></pre>
<!--kg-card-end: markdown--><h3 id="setup-display-on-windows">Setup display on Windows</h3><p>You cannot setup dummy display output on Windows, your only option is to buy HDMI dummy and set it up as a &quot;normal&quot; display.</p><figure class="kg-card kg-image-card"><img src="https://blog.grondek.pl/content/images/2022/07/HDMI-Dummy.jpg" class="kg-image" alt="Using any tablet as additional display" loading="lazy" width="970" height="728" srcset="https://blog.grondek.pl/content/images/size/w600/2022/07/HDMI-Dummy.jpg 600w, https://blog.grondek.pl/content/images/2022/07/HDMI-Dummy.jpg 970w" sizes="(min-width: 720px) 720px"></figure><h2 id="stream-display">Stream display</h2><p>To stream display I will be using <a href="https://github.com/pavlobu/deskreen?ref=blog.grondek.pl">Deskreen</a>, its a free open source software that doesn&apos;t have noticeable delay. </p><p>After starting application you have url and QR code to connect to your machine</p><figure class="kg-card kg-image-card"><img src="https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-23-51.png" class="kg-image" alt="Using any tablet as additional display" loading="lazy" width="1118" height="710" srcset="https://blog.grondek.pl/content/images/size/w600/2022/07/Screenshot-from-2022-07-11-23-23-51.png 600w, https://blog.grondek.pl/content/images/size/w1000/2022/07/Screenshot-from-2022-07-11-23-23-51.png 1000w, https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-23-51.png 1118w" sizes="(min-width: 720px) 720px"></figure><p>After connecting from tablet you will get dialog option to confirm connection</p><figure class="kg-card kg-image-card"><img src="https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-25-48.png" class="kg-image" alt="Using any tablet as additional display" loading="lazy" width="1118" height="710" srcset="https://blog.grondek.pl/content/images/size/w600/2022/07/Screenshot-from-2022-07-11-23-25-48.png 600w, https://blog.grondek.pl/content/images/size/w1000/2022/07/Screenshot-from-2022-07-11-23-25-48.png 1000w, https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-25-48.png 1118w" sizes="(min-width: 720px) 720px"></figure><p>After that select entire screen</p><figure class="kg-card kg-image-card"><img src="https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-26-00.png" class="kg-image" alt="Using any tablet as additional display" loading="lazy" width="1118" height="710" srcset="https://blog.grondek.pl/content/images/size/w600/2022/07/Screenshot-from-2022-07-11-23-26-00.png 600w, https://blog.grondek.pl/content/images/size/w1000/2022/07/Screenshot-from-2022-07-11-23-26-00.png 1000w, https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-26-00.png 1118w" sizes="(min-width: 720px) 720px"></figure><p>And choose your dummy display, here it is Screen 3</p><figure class="kg-card kg-image-card"><img src="https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-48-49.png" class="kg-image" alt="Using any tablet as additional display" loading="lazy" width="1107" height="701" srcset="https://blog.grondek.pl/content/images/size/w600/2022/07/Screenshot-from-2022-07-11-23-48-49.png 600w, https://blog.grondek.pl/content/images/size/w1000/2022/07/Screenshot-from-2022-07-11-23-48-49.png 1000w, https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-48-49.png 1107w" sizes="(min-width: 720px) 720px"></figure><p>And last step is to confirm that everything is correct</p><figure class="kg-card kg-image-card"><img src="https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-26-26.png" class="kg-image" alt="Using any tablet as additional display" loading="lazy" width="1118" height="710" srcset="https://blog.grondek.pl/content/images/size/w600/2022/07/Screenshot-from-2022-07-11-23-26-26.png 600w, https://blog.grondek.pl/content/images/size/w1000/2022/07/Screenshot-from-2022-07-11-23-26-26.png 1000w, https://blog.grondek.pl/content/images/2022/07/Screenshot-from-2022-07-11-23-26-26.png 1118w" sizes="(min-width: 720px) 720px"></figure><p>Now you should have desktop display on your tablet</p><figure class="kg-card kg-video-card"><div class="kg-video-container"><video src="https://blog.grondek.pl/content/media/2022/07/output2.webm" poster="https://img.spacergif.org/v1/3840x2160/0a/spacer.png" width="3840" height="2160" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://blog.grondek.pl/content/images/2022/07/media-thumbnail-ember790.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><h2 id="issues">Issues</h2><h3 id="flickering">Flickering</h3><p>If you have an issue with flickering display caused by scaling you can set scaling to <code>0.9999</code>, this doesn&apos;t change your screen scaling but fixes issues. To change scaling for output <code>DisplayPort-0</code> run command:</p><!--kg-card-begin: markdown--><pre><code>xrandr --output DisplayPort-0 --scale 0.9999x0.9999
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>