Linux Virtual Display for iPad Pro: Difference between revisions
Jump to navigation
Jump to search
(21 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/10-amdgpu.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/10-amdgpu.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-amdgpu.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-amdgpu.conf >/dev/null | ||
Section "OutputClass" | Section "OutputClass" | ||
Identifier "AMDgpu" | Identifier "AMDgpu" | ||
Line 26: | Line 26: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/10-nvidia.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/10-nvidia.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-nvidia.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-nvidia.conf >/dev/null | ||
Section "OutputClass" | Section "OutputClass" | ||
Identifier "nvidia" | Identifier "nvidia" | ||
Line 42: | Line 42: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/10-quirks.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/10-quirks.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-quirks.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-quirks.conf >/dev/null | ||
# Collection of quirks and blacklist/whitelists for specific devices. | # Collection of quirks and blacklist/whitelists for specific devices. | ||
Line 89: | Line 89: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/10-radeon.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/10-radeon.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-radeon.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-radeon.conf >/dev/null | ||
Section "OutputClass" | Section "OutputClass" | ||
Identifier "Radeon" | Identifier "Radeon" | ||
Line 103: | Line 103: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/11-nvidia-offload.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/11-nvidia-offload.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/11-nvidia-offload.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/11-nvidia-offload.conf >/dev/null | ||
# DO NOT EDIT. AUTOMATICALLY GENERATED BY gpu-manager | # DO NOT EDIT. AUTOMATICALLY GENERATED BY gpu-manager | ||
Line 118: | Line 118: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/20-intel.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/20-intel.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/20-intel.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/20-intel.conf >/dev/null | ||
Section "Device" | Section "Device" | ||
Identifier "intelgpu0" | Identifier "intelgpu0" | ||
Driver "intel" | Driver "intel" | ||
Option "VirtualHeads" "2" | Option "VirtualHeads" "2" | ||
EndSection | |||
EOF | |||
fi | |||
</source> | |||
===30-virtscreen.conf=== | |||
---- | |||
<source lang='bash'> | |||
if [[ ! -e /usr/share/X11/xorg.conf.d/30-virtscreen.conf ]];then | |||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/30-virtscreen.conf >/dev/null | |||
# nvidia/nouveau/amdgpu device should be configured first before Intel GPU | |||
Section "Device" | |||
Identifier "nvidiagpu0" | |||
Driver "nvidia" # Because you are using Nvidia proprietary driver. Change to "nouveau" if you are using open source nouveau driver | |||
EndSection | |||
# Then configure intel internal GPU | |||
Section "Device" | |||
Identifier "intelgpu0" | |||
Driver "intel" | |||
# You may put Option "VirtualHeads" "1" here but it seem you don't need to put this for Ubuntu 18.04. | |||
EndSection | EndSection | ||
EOF | EOF | ||
Line 132: | Line 153: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/40-libinput.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/40-libinput.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/40-libinput.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/40-libinput.conf >/dev/null | ||
# Match on all types of devices but joysticks | # Match on all types of devices but joysticks | ||
# | # | ||
Line 193: | Line 214: | ||
<source lang='bash'> | <source lang='bash'> | ||
if [[ ! -e /usr/share/X11/xorg.conf.d/70-wacom.conf ]];then | if [[ ! -e /usr/share/X11/xorg.conf.d/70-wacom.conf ]];then | ||
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/70-wacom.conf | cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/70-wacom.conf >/dev/null | ||
# Some of the below input classes appear 3x times, once for each of | # Some of the below input classes appear 3x times, once for each of | ||
# "tablet", "touchscreen", and "touchpad" to ensure that the Wacom | # "tablet", "touchscreen", and "touchpad" to ensure that the Wacom | ||
Line 356: | Line 377: | ||
---- | ---- | ||
|- | |- | ||
| valign="top" | | |||
sudo lspci -t | |||
sudo lspci -v | less | |||
sudo glxinfo -B | less | |||
sudo lshw -short | |||
sudo lshw -C system | |||
sudo lshw -C display | |||
sudo lshw -C input | less | |||
sudo lshw -C memory| less | |||
| valign="top" | | | valign="top" | | ||
sudo dmidecode -t | sudo dmidecode -t | ||
sudo dmidecode -t 1 | sudo dmidecode -t 1 | ||
sudo dmidecode -t 2 | |||
sudo dmidecode -t 3 | sudo dmidecode -t 3 | ||
| | sudo dmidecode | less | ||
sudo dmidecode | grep 'SKU Number' | sudo dmidecode | grep 'SKU Number' | ||
sudo dmidecode -s system-product-name | sudo dmidecode -s system-product-name | ||
sudo dmidecode -s system-serial-number | sudo dmidecode -s system-serial-number | ||
|- | |||
| colspan="2" | | |||
---- | |||
|- | |||
| colspan="2" | | |||
cvt 1600 1200 60 | |||
'''virtual display mode description:''' | |||
cvt 1600 1200 60 | sed -n "s/^.*Modeline\s*\".*\"\s*//p" | |||
'''virtual display mode name based on resolution:''' | |||
cvt 1600 1200 60 | sed -n "s/^.*Modeline\s*\"\(.*\)\".*/\1/p" | |||
|- | |||
| colspan="2" | | |||
---- | |||
|- | |||
| colspan="2" | | |||
<source lang='bash'> | |||
x11vnc -storepasswd | |||
:' | |||
Enter VNC password: | |||
Verify password: | |||
Write password to /home/chorke/.vnc/passwd? [y]/n y | |||
Password written to: /home/chorke/.vnc/passwd | |||
' | |||
/usr/bin/x11vnc -auth guess -forever -loop -noxdamage\ | |||
-repeat -rfbauth /home/chorke/.vnc/passwd -rfbport 5900 -shared | |||
</source> | |||
|- | |- | ||
Line 375: | Line 439: | ||
| valign="top" | | | valign="top" | | ||
sudo apt install --reinstall x11-common | |||
sudo systemctl start x11-common.service | |||
|- | |||
| colspan="2" | | |||
---- | |||
|- | |||
| valign="top" | | |||
xdpyinfo|grep -oP 'dimensions:\s+\K\S+' | |||
xdpyinfo|grep -oP 'dimensions:\s+\K\S+'|cut -d 'x' -f1 | |||
xdpyinfo|grep -oP 'dimensions:\s+\K\S+'|cut -d 'x' -f2 | |||
| valign="top" | | |||
xrandr --current|grep '*'|uniq|awk '{print $1}' | |||
xrandr --current|grep '*'|uniq|awk '{print $1}'|cut -d 'x' -f1 | |||
xrandr --current|grep '*'|uniq|awk '{print $1}'|cut -d 'x' -f2 | |||
|} | |} | ||
Line 393: | Line 473: | ||
| valign="top" | | | valign="top" | | ||
* [https://support.apple.com/kb/SP814?locale=en_US iPad Pro » 11-inch » 2nd Gen » Specifications] | |||
* [https://www.reddit.com/r/gnome/comments/uz5as7/gnome_has_made_it_super_simple_to_extend_your/ Gnome Remote Extended Virtual Monitor] | * [https://www.reddit.com/r/gnome/comments/uz5as7/gnome_has_made_it_super_simple_to_extend_your/ Gnome Remote Extended Virtual Monitor] | ||
* [https://bitsoftomorrow.medium.com/share-your-linux-screen-over-ipad-for-free-77afbf267357 Use iPad as a 2nd Display for Ubuntu] | * [https://bitsoftomorrow.medium.com/share-your-linux-screen-over-ipad-for-free-77afbf267357 Use iPad as a 2nd Display for Ubuntu] | ||
* [https://kbumsik.io/using-ipad-as-a-2nd-monitor-on-linux Use iPad as a 2nd monitor on Linux] | * [https://kbumsik.io/using-ipad-as-a-2nd-monitor-on-linux Use iPad as a 2nd monitor on Linux] | ||
* [https://askubuntu.com/questions/685761/ X11vnc Service is not Running] | |||
* [https://github.com/kbumsik/VirtScreen/issues/16#issuecomment-439669153 VIRTUAL1 option not available] | * [https://github.com/kbumsik/VirtScreen/issues/16#issuecomment-439669153 VIRTUAL1 option not available] | ||
* [https://github.com/dianariyanto/virtual-display-linux Linux Remote Virtual Display] | * [https://github.com/dianariyanto/virtual-display-linux Linux Remote Virtual Display] | ||
* [https://unix.stackexchange.com/questions/378373/ Add VIRTUAL output to Xorg] | * [https://unix.stackexchange.com/questions/378373/ Add VIRTUAL output to Xorg] | ||
* [https://wiki.archlinux.org/title/xorg Arch Linux » Xorg » X11] | |||
* [https://askubuntu.com/questions/804946/ Unmask <code>systemctl</code>] | |||
| valign="top" | | | valign="top" | | ||
* [https://askubuntu.com/questions/1084476/ <code>xrandr</code> Not Showing All Ports & Resolutions] | |||
* [https://github.com/kbumsik/VirtScreen/issues/16#issuecomment-865128729 VIRTUAL1 option for AMD Ryzen & Radeon] | |||
* [https://askubuntu.com/questions/584688/ Bash Get the Monitor Resolution] | |||
* [https://help.ubuntu.com/community/VNC/Servers Ubuntu » VNC » Servers] | |||
* [[X11VNC]] | |||
|- | |- |
Latest revision as of 07:59, 1 December 2023
Gnome Remote
sudo ufw allow 5900/tcp sudo ufw status verbose systemctl --user restart gnome-remote-desktop.service systemctl --user status gnome-remote-desktop.service gsettings set org.gnome.desktop.remote-desktop.rdp screen-share-mode extend
Linux Display Driver
10-amdgpu.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/10-amdgpu.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-amdgpu.conf >/dev/null
Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "amdgpu"
EndSection
EOF
fi
10-nvidia.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/10-nvidia.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-nvidia.conf >/dev/null
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection
EOF
fi
10-quirks.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/10-quirks.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-quirks.conf >/dev/null
# Collection of quirks and blacklist/whitelists for specific devices.
# Accelerometer device, posts data through ABS_X/ABS_Y, making X unusable
# http://bugs.freedesktop.org/show_bug.cgi?id=22442
Section "InputClass"
Identifier "ThinkPad HDAPS accelerometer blacklist"
MatchProduct "ThinkPad HDAPS accelerometer data"
Option "Ignore" "on"
EndSection
# https://bugzilla.redhat.com/show_bug.cgi?id=523914
# Mouse does not move in PV Xen guest
# Explicitly tell evdev to not ignore the absolute axes.
Section "InputClass"
Identifier "Xen Virtual Pointer axis blacklist"
MatchProduct "Xen Virtual Pointer"
Option "IgnoreAbsoluteAxes" "off"
Option "IgnoreRelativeAxes" "off"
EndSection
# https://bugs.freedesktop.org/show_bug.cgi?id=55867
# Bug 55867 - Doesn't know how to tag XI_TRACKBALL
Section "InputClass"
Identifier "Tag trackballs as XI_TRACKBALL"
MatchProduct "trackball"
MatchDriver "evdev"
Option "TypeName" "TRACKBALL"
EndSection
# https://bugs.freedesktop.org/show_bug.cgi?id=62831
# Bug 62831 - Mionix Naos 5000 mouse detected incorrectly
Section "InputClass"
Identifier "Tag Mionix Naos 5000 mouse XI_MOUSE"
MatchProduct "La-VIEW Technology Naos 5000 Mouse"
MatchDriver "evdev"
Option "TypeName" "MOUSE"
EndSection
EOF
fi
10-radeon.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/10-radeon.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/10-radeon.conf >/dev/null
Section "OutputClass"
Identifier "Radeon"
MatchDriver "radeon"
Driver "radeon"
EndSection
EOF
fi
11-nvidia-offload.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/11-nvidia-offload.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/11-nvidia-offload.conf >/dev/null
# DO NOT EDIT. AUTOMATICALLY GENERATED BY gpu-manager
Section "ServerLayout"
Identifier "layout"
Option "AllowNVIDIAGPUScreens"
EndSection
EOF
fi
20-intel.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/20-intel.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/20-intel.conf >/dev/null
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
EOF
fi
30-virtscreen.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/30-virtscreen.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/30-virtscreen.conf >/dev/null
# nvidia/nouveau/amdgpu device should be configured first before Intel GPU
Section "Device"
Identifier "nvidiagpu0"
Driver "nvidia" # Because you are using Nvidia proprietary driver. Change to "nouveau" if you are using open source nouveau driver
EndSection
# Then configure intel internal GPU
Section "Device"
Identifier "intelgpu0"
Driver "intel"
# You may put Option "VirtualHeads" "1" here but it seem you don't need to put this for Ubuntu 18.04.
EndSection
EOF
fi
40-libinput.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/40-libinput.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/40-libinput.conf >/dev/null
# Match on all types of devices but joysticks
#
# If you want to configure your devices, do not copy this file.
# Instead, use a config snippet that contains something like this:
#
# Section "InputClass"
# Identifier "something or other"
# MatchDriver "libinput"
#
# MatchIsTouchpad "on"
# ... other Match directives ...
# Option "someoption" "value"
# EndSection
#
# This applies the option any libinput device also matched by the other
# directives. See the xorg.conf(5) man page for more info on
# matching devices.
Section "InputClass"
Identifier "libinput pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
EOF
fi
70-wacom.conf
if [[ ! -e /usr/share/X11/xorg.conf.d/70-wacom.conf ]];then
cat << EOF | sudo tee /usr/share/X11/xorg.conf.d/70-wacom.conf >/dev/null
# Some of the below input classes appear 3x times, once for each of
# "tablet", "touchscreen", and "touchpad" to ensure that the Wacom
# driver is not accidentally bound to other types of hardware that
# Wacom has made which are not handled by the wacom driver (e.g the
# Wacom Bluetooth Keyboard)
#
# https://sourceforge.net/p/linuxwacom/bugs/294/
Section "InputClass"
Identifier "Wacom USB tablet class"
MatchUSBID "056a:*"
MatchDevicePath "/dev/input/event*"
MatchIsTablet "true"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom USB touchscreen class"
MatchUSBID "056a:*"
MatchDevicePath "/dev/input/event*"
MatchIsTouchscreen "true"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom USB touchpad class"
MatchUSBID "056a:*"
MatchDevicePath "/dev/input/event*"
MatchIsTouchpad "true"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom tablet class"
MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
MatchDevicePath "/dev/input/event*"
MatchIsTablet "true"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom touchscreen class"
MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
MatchDevicePath "/dev/input/event*"
MatchIsTouchscreen "true"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom touchpad class"
MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
MatchDevicePath "/dev/input/event*"
MatchIsTouchpad "true"
Driver "wacom"
EndSection
# Serial Wacom devices should always be one of tablet, touchscreen, or
# touchpad so we can safely get away with just one match section in
# these cases
Section "InputClass"
Identifier "Wacom PnP device class"
MatchPnPID "WACf*|WCOM*|WACM*|FUJ02e5|FUJ02e7|FUJ02e9"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom serial class"
MatchProduct "Serial Wacom Tablet"
Driver "wacom"
EndSection
Section "InputClass"
Identifier "Wacom serial class identifiers"
MatchProduct "WACf|FUJ02e5|FUJ02e7|FUJ02e9"
Driver "wacom"
EndSection
# Hanwang tablets
Section "InputClass"
Identifier "Hanwang class"
MatchProduct "Hanwang"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection
# Waltop tablets
Section "InputClass"
Identifier "Waltop class"
MatchProduct "WALTOP"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection
# N-Trig Duosense Electromagnetic Digitizer
Section "InputClass"
Identifier "Wacom N-Trig class"
MatchProduct "HID 1b96:0001|N-Trig Pen|N-Trig DuoSense"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
Option "Button2" "3"
EndSection
# Dell Canvas 27 (touch part is an Advanced Silicon, pen part a Wacom)
Section "InputClass"
Identifier "Dell Canvas 27 Touch"
MatchUSBID "2575:0204"
MatchDevicePath "/dev/input/event*"
MatchIsTouchscreen "true"
Driver "wacom"
EndSection
# Surface Go
Section "InputClass"
Identifier "SurfaceGo Touch"
MatchProduct "ELAN9038:00 04F3:261A"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection
# Nuvision Solo 10 Draw (Supports Surface Pens)
Section "InputClass"
Identifier "Nuvision Solo 10 Draw"
MatchProduct "04F3200A:00 04F3:22F7"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection
EOF
fi
Knowledge
lsblk lscpu lsusb free -h sudo lshw ufw status ufw status verbose systemctl status ufw apt list --installed |
sudo ufw allow http sudo ufw allow OpenSSH sudo ufw allow 5900/tcp sudo ss -tulpn | grep LISTEN sudo ss -tulwn | grep LISTEN sudo ss -tulpn | grep LISTEN | grep sshd sudo ss -tulpn | grep LISTEN | grep redis sudo ss -tulpn | grep LISTEN | grep gnome sudo ss -tulpn | grep LISTEN | grep apache |
| |
sudo lspci -t sudo lspci -v | less sudo glxinfo -B | less sudo lshw -short sudo lshw -C system sudo lshw -C display sudo lshw -C input | less sudo lshw -C memory| less |
sudo dmidecode -t sudo dmidecode -t 1 sudo dmidecode -t 2 sudo dmidecode -t 3 sudo dmidecode | less sudo dmidecode | grep 'SKU Number' sudo dmidecode -s system-product-name sudo dmidecode -s system-serial-number |
| |
cvt 1600 1200 60 virtual display mode description: cvt 1600 1200 60 | sed -n "s/^.*Modeline\s*\".*\"\s*//p" virtual display mode name based on resolution: cvt 1600 1200 60 | sed -n "s/^.*Modeline\s*\"\(.*\)\".*/\1/p" | |
| |
x11vnc -storepasswd
:'
Enter VNC password:
Verify password:
Write password to /home/chorke/.vnc/passwd? [y]/n y
Password written to: /home/chorke/.vnc/passwd
'
/usr/bin/x11vnc -auth guess -forever -loop -noxdamage\
-repeat -rfbauth /home/chorke/.vnc/passwd -rfbport 5900 -shared
| |
| |
display server is wayland|xorg(x11) echo ${XDG_SESSION_TYPE} |
sudo apt install --reinstall x11-common sudo systemctl start x11-common.service |
| |
xdpyinfo|grep -oP 'dimensions:\s+\K\S+' xdpyinfo|grep -oP 'dimensions:\s+\K\S+'|cut -d 'x' -f1 xdpyinfo|grep -oP 'dimensions:\s+\K\S+'|cut -d 'x' -f2 |
xrandr --current|grep '*'|uniq|awk '{print $1}' xrandr --current|grep '*'|uniq|awk '{print $1}'|cut -d 'x' -f1 xrandr --current|grep '*'|uniq|awk '{print $1}'|cut -d 'x' -f2 |