how to run terminal command on startup - linux

I want to run below commands on startup of linux mint os. which will enable my laptop touchpad two finger scroll.
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Two-Finger Scrolling" 8 1
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 8 1 1
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 32 10
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 32 8

Depending on you WindowManager you could use its autorun feature to run the script.
I know the following does not answer the question, but why don't you configure the synaptics driver in you xorg configuration?
http://www.x.org/releases/X11R7.6/doc/man/man4/synaptics.4.xhtml
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Two-Finger Scrolling" 8 1
Not sure what this is.
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 8 1 1
Option "VertTwoFingerScroll" "boolean"
Enable vertical scrolling when dragging with two fingers anywhere on the touchpad. Property: "Synaptics Two-Finger Scrolling"
Option "HorizTwoFingerScroll" "boolean"
Enable horizontal scrolling when dragging with two fingers anywhere on the touchpad. Property: "Synaptics Two-Finger Scrolling"
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 32 10
Option "EmulateTwoFingerMinZ" "integer"
For touchpads not capable of detecting multiple fingers (Alps), this sets the Z pressure threshold to emulate a two finger press. Property: "Synaptics Two-Finger Pressure"
O
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 32 8
Option "EmulateTwoFingerMinW" "integer"
Some touchpads report a two-finger touch as wide finger. This sets the finger width threshold to emulate a two finger press. This feature works best with (PalmDetect) off. Property: "Synaptics Two-Finger Width"

Depending on which shell you are using (which you've not responded to yet), you could just put these start up commands in a startup script. This is where you would typically personalise your linux/ unix env. See the links below to get the idea...
.bashrc file if you use the bash shell
.profile for bourne shells (e.g. ksh, zsh [and bash again])

Related

How to fix No sound on Ubuntu 18.04? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 9 months ago.
Improve this question
1) I've been using Ubuntu 18.04 with Windows 10 dual boot for some months now. Today suddenly my sound stopped working on Ubunutu. Activities -> Sound menu shows only "Dummy Output". All fine on Windows though.
2) Output of lsmod is:
rohit#rohitUb18043LTS:~$ lsmod | grep snd_
snd_seq_midi 20480 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_seq 69632 2 snd_seq_midi,snd_seq_midi_event
snd_rawmidi 36864 1 snd_seq_midi
snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
snd_soc_dmic 16384 0
snd_hda_codec_realtek 118784 0
snd_hda_codec_generic 81920 1 snd_hda_codec_realtek
ledtrig_audio 16384 2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_soc_hdac_hdmi 32768 0
snd_sof_intel_hda_common 73728 1 sof_pci_dev
snd_soc_hdac_hda 24576 1 snd_sof_intel_hda_common
snd_sof_intel_hda 20480 1 snd_sof_intel_hda_common
snd_sof_intel_byt 24576 1 sof_pci_dev
snd_sof_intel_ipc 20480 1 snd_sof_intel_byt
snd_sof 98304 4 snd_sof_intel_hda_common,snd_sof_intel_byt,snd_sof_intel_ipc,sof_pci_dev
snd_sof_xtensa_dsp 16384 1 sof_pci_dev
snd_hda_ext_core 28672 4 snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_hda
snd_soc_acpi_intel_match 32768 2 snd_sof_intel_hda_common,sof_pci_dev
snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,sof_pci_dev
snd_soc_core 237568 5 snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_soc_dmic
snd_compress 24576 1 snd_soc_core
ac97_bus 16384 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
snd_hda_codec_hdmi 57344 1
snd_hda_intel 53248 2
snd_intel_nhlt 20480 1 snd_hda_intel
snd_hda_codec 131072 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda
snd_hda_core 90112 10 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_hda
snd_hwdep 20480 1 snd_hda_codec
snd_pcm 102400 10 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_core,snd_hda_core,snd_pcm_dmaengine
snd_timer 36864 2 snd_seq,snd_pcm
snd 86016 17 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_soc_core,snd_pcm,snd_rawmidi
rohit#rohitUb18043LTS:~$
3) I installed all updates from Software updater but no luck.
4) No change by using: sudo alsa force-reload
5) Looking around, found this thread: https://askubuntu.com/questions/1059619/sound-card-shown-as-dummy-output-in-ubuntu-18-04 . User says found the "active profile was off" and links to a solution on this forum (https://forums.linuxmint.com/viewtopic.php?t=268499). I am pasting the output of the four commands as per that link:
rohit#rohitUb18043LTS:~$ sudo fuser -v /dev/snd/*
[sudo] password for rohit:
USER PID ACCESS COMMAND
/dev/snd/controlC0: gdm 1505 F.... pulseaudio
rohit 1878 F.... pulseaudio
rohit#rohitUb18043LTS:~$ pacmd list-cards
1 card(s) available.
index: 0
name: <alsa_card.pci-0000_01_00.1>
driver: <module-alsa-card.c>
owner module: 7
properties:
alsa.card = "0"
alsa.card_name = "HDA NVidia"
alsa.long_card_name = "HDA NVidia at 0xb4000000 irq 17"
alsa.driver_name = "snd_hda_intel"
device.bus_path = "pci-0000:01:00.1"
sysfs.path = "/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card0"
device.bus = "pci"
device.vendor.id = "10de"
device.vendor.name = "NVIDIA Corporation"
device.product.id = "0fb9"
device.product.name = "GP107GL High Definition Audio Controller"
device.string = "0"
device.description = "GP107GL High Definition Audio Controller"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
profiles:
output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5400, available: no)
output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 300, available: no)
output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 300, available: no)
off: Off (priority 0, available: unknown)
active profile: <off>
ports:
hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
properties:
device.icon_name = "video-display"
rohit#rohitUb18043LTS:~$ pacmd list-sinks
1 sink(s) available.
* index: 0
name: <auto_null>
driver: <module-null-sink.c>
flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 1000
volume: front-left: 65536 / 100% / 0,00 dB, front-right: 65536 / 100% / 0,00 dB
balance 0,00
base volume: 65536 / 100% / 0,00 dB
volume steps: 65537
muted: no
current latency: 0,00 ms
max request: 344 KiB
max rewind: 344 KiB
monitor source: 0
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
configured latency: 0,00 ms; range is 0,50 .. 2000,00 ms
module: 15
properties:
device.description = "Dummy Output"
device.class = "abstract"
device.icon_name = "audio-card"
rohit#rohitUb18043LTS:~$ pacmd list-sink-inputs
0 sink input(s) available.
rohit#rohitUb18043LTS:~$
6) I tried the suggested command but it says "No such profile".
rohit#rohitUb18043LTS:~$ pacmd set-card-profile alsa_card.pci-0000_01_00.1 output:analog-stereo+input:analog-stereo
No such profile: output:analog-stereo+input:analog-stereo
rohit#rohitUb18043LTS:~$
Please help - how do I proceed?
Similar issue with "Dummy Sound" on Ubuntu 18.04 also with a NVIDIA card. This solved it for me:
Edit /etc/modprobe.d/alsa-base.conf as root and add options snd-hda-intel dmic_detect=0
Edit /etc/modprobe.d/blacklist.conf as root and add blacklist snd_soc_skl at the end of the file.
After making these changes, reboot your system.
More details (and credits): https://www.linuxuprising.com/2018/06/fix-no-sound-dummy-output-issue-in.html
I had the same problem, and tried the solution given by #maartenor without success.
Eventually I got the sound back by upgrading linux kernel to the last HWE stack, for me it was 4.15.0-106-generic to 5.3.0-59-generic.
The command to do this :
$ sudo apt install linux-generic-hwe-18.04
Edit the file /etc/modprobe.d/alsa-base.conf and add the following lines:
options snd-hda-intel dmic_detect=0
options snd-hda-intel model=laptop-amic enable=yes
The first line is to enable the speaker, the second for the internal microphone.
Good luck!
Got this answer from Reddit. Worked like a charm for me!
Link : https://www.reddit.com/r/linuxmint/comments/fltlrl/no_sound_on_acer_swift_3_with_kernel_53/
Try this..
Open your terminal
sudo apt update && sudo apt install alsamixer
run alsamixer in your terminal.
press arrow right til you go to sound option (if headphone go to HEADPHONES bar).
press M to unmute.
press up/down to adjust the volume.
press Esc to exit alsamixer.
Following steps worked very reliably. It does not fix the audio-losing-after-suspend issue permanently, but instantly as a command to run after back from suspend.
Use lspci to get the audio card location (0000:00:1f.3). On my machine,
$ lspci
00:1f.0 ISA bridge: Intel Corporation H110 ...
00:1f.2 Memory controller: Intel ...
00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset ...
00:1f.4 SMBus: Intel Corporation 100 Series/C230 Series Chipset ...
Then, (make sure the directories below exist)
$ echo 1 | sudo tee /sys/bus/pci/devices/0000:00:1f.3/remove
$ echo 1 | sudo tee /sys/bus/pci/rescan
I believe the audio driver/hardware is stuck. So we remove the device driver, and rescan the PCI bus to get audio back.
i found answer above not work on my computer, and i solve this problem by accidient , this is script i use , most same as answer above, but at last, u need mute then unmute auidio. sleep a short moment after command is necessary here if you put script in sh file then excute it , use sh -c is for file redirection for root
REST=0.5
#make sure Audio always actived
sudo sh -c 'echo 1 >/sys/bus/pci/rescan'
sleep $REST
DEVICE_ID=$(lspci -D | grep Audio | awk '{print $1}')
sleep $REST
sudo sh -c 'echo 1 >/sys/bus/pci/devices/0000:00:1f.3/remove'
sleep $REST
sudo sh -c 'echo 1 >/sys/bus/pci/rescan'
sleep $REST
#mute then unmute to restart audio
amixer -D pulse sset Master mute
sleep $REST
amixer -D pulse sset Master unmute

Debian 9 Dummy Output after resume from suspend (snd_hda_intel codec)

I have an external monitor that I plug-in my Dell laptop after turn it on. The sound works before and after plug it in the Laptop, So the headphone works too, plugin it in and out too. The problem is when I resume Debian after suspend. The sound has gone, and some times when increasing and decreasing volume one of the three options appears in the screen: Headphone unplugged, HDMI output (or something like), or Dummy Output.
I will show now what happens when Dummy Output is displayed and some outputs of commands.
$ lspci | grep Audio
Output:
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
$ lsmod | grep hda
Output:
snd_hda_ext_core 28672 1 snd_soc_skl
snd_hda_intel 36864 0
snd_hda_codec 135168 1 snd_hda_intel
snd_hda_core 90112 4 snd_hda_intel,snd_hda_codec,snd_hda_ext_core,snd_soc_skl
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 110592 6 snd_hda_intel,snd_hda_codec,snd_hda_ext_core,snd_hda_core,snd_soc_skl,snd_soc_core
snd 86016 7 snd_compress,snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timer,snd_soc_core,snd_pcm
$ sudo dmesg | grep snd
Output (when rebooting):
[ 13.341580] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 13.461226] snd_hda_intel 0000:00:1f.3: CORB reset timeout#1, CORBRP = 0
[ 13.462799] snd_hda_intel 0000:00:1f.3: no codecs found!
$ sudo alsactl init
Output:
alsactl: init:1757: No soundcards found...
Complete Alsa Information script:
https://alsa-project.org/db/?f=ff03c7d8dac369fc1211822de963b337c132420c
So it looks like the sound card is there but alsa does not recognize it.
Many forums/sites recommend to blacklist snd_hda_codec_hdmi (that would be the case when the problem is with connecting/desconnecting HDMI for the external monitor), and also put a line:
options snd-hda-intel model=generic
in a file, e.g., /etc/modprobe.d/alsa-base-blacklist.conf.
But it didn't work.
Other sites suggest to disable and enable sound in BIOS. Didn't work.
Can anyone help me solve this forever issue?

How to definitely set mouse speed/acceleration independently of mouse version and type on Linux

the problem is that the speed and acceleration of my mouse is too high and the system setting (Ubuntu) is completely useless so I need an external tool/trick to adjust it.
So, how to slow down definitely the mouse at startup without doing the command manually?
The xinput list's output is:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SYN1B7E:01 06CB:2970 UNKNOWN id=14 [slave pointer (2)]
⎜ ↳ MOSART Semi. 2.4G Keyboard Mouse id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ CHICONY USB Keyboard id=10 [slave keyboard (3)]
↳ HD WebCam id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
↳ Acer WMI hotkeys id=16 [slave keyboard (3)]
↳ MOSART Semi. 2.4G Keyboard Mouse id=11 [slave keyboard (3)]
Now, at startup I setted this command:
xinput --set-prop "pointer:MOSART Semi. 2.4G Keyboard Mouse" "libinput Accel Speed" -0.7
but with appareantly no reason, at some time the mouse come back to its initial speed value...
Also, sometimes at startup the command does not work.
My aim is simple to have a mouse with always the same acceptable speed!
Thanks!
To set the speed, use this:
xinput --set-prop device_id_or_name "Device Accel Constant Deceleration" number
In your case:
xinput --set-prop "MOSART Semi. 2.4G Keyboard Mouse" "Device Accel Constant Deceleration" -0.7
Save the above in a file as ~/.xprofile.
Use THIS script. It will do all the hard work for you.
https://github.com/rubo77/mouse-speed
Alternatively you could run something like xset mouse 10 0
Or you could create an Xorg config /etc/X11/xorg.conf.d/acceleration.conf
Section "InputClass"
Identifier "Mouse"
MatchIsPointer "yes"
# set the following to 1 1 0 respectively to disable acceleration.
Option "AccelerationNumerator" "2"
Option "AccelerationDenominator" "1"
Option "AccelerationThreshold" "4"
EndSection
The following settings is working fine in my linux.
First get the pointer id using following command:
$ xinput --list
Then replace $id with pointer id
$ xinput set-prop $id 'libinput Accel Speed' 0.65
$ xinput set-prop $id 'libinput Accel Profiles Available' 1, 1
$ xinput set-prop $id 'libinput Accel Profile Enabled' 1, 0
$ xinput set-prop $id 'Coordinate Transformation Matrix' 0.3125, 0, 0, 0, 0.2, 0, 0, 0, 1.16
$ xset mouse 15/1 15
You can create a bash script to do the hard work for you, and then call it automatically via udev rules every time the mouse gets connected to any USB port.
1st STEP) Get the idVendor and idProduct from your mouse
1. Connect the mouse to any usb port
2. Launch the terminal and execute the command below to list the details of your usb devices
lsusb
You'll get an output similar to this
Bus 001 Device 074: ID 1038:1300 SteelSeries ApS
After "ID" and before ":" is the idVendor.
After ":" and before the name of the mouse is the idProduct.
2nd STEP) Create a bash script (fixMouse.sh) to do the hard work for us
1. Launch the terminal and execute the command below to create and edit a file named fixMouse.sh under /usr/local/bin/
sudo nano /usr/local/bin/fixMouse.sh
Insert the following code and save the file
MOUSE_ID=$(xinput --list --short | grep MOSART | cut -d "=" -f2 | cut -c 1-2)
if [ ! -z "$MOUSE_ID" ]
then
PROP_ID=$(xinput --list-props "$MOUSE_ID" | grep 'Accel Speed' | cut -d "(" -f2 | cut -c 1-3 | tail -2 | head -1)
fi
if [ ! -z "$MOUSE_ID" ]
then
xinput --set-prop "$MOUSE_ID" "$PROP_ID" -1
fi
3rd STEP) Create a .rules file under /etc/udev/rules.d
1. Launch the terminal and execute the command below to create a mouse.rules file
nano /etc/udev/rules.d/mouse.rules
2. Insert the code below, changing the values accordingly, and save the file.
> ACTION=="bind", SUBSYSTEM=="usb", ENV{DISPLAY}=":0.0",
> ENV{XAUTHORITY}="/home/<your-user-name>/.Xauthority",
> ATTRS{idVendor}=="<your-mouse-idVendor>",
> ATTRS{idProduct}=="<your-mouse-idProduct>",
> RUN+="/usr/local/bin/fixMouse.sh"
4th STEP) Making the changes permanent for debian based distros with Gnome
(for other DMs please take a look at https://askubuntu.com/questions/48321)
1. Launch the terminal and execute the command below to go to the autostart folder
cd ~/.config/autostart
Note: If that doesn't work, create the directory with the following command
mkdir ~/.config/autostart && cd ~/.config/autostart
2. Execute the command below to create a file named fixMouse.desktop
nano fixMouse.desktop
3. Add the following content
[Desktop Entry]
Type=Application
Exec=/usr/local/bin/fixMouse.sh
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[en_US]=fixMouse
Comment[en_US]=fixes Mouse sensitivity issue after startup
X-GNOME-Autostart-Delay=0
4. Execute the following command to give execution permission to fixMouse.desktop
chmod +x fixMouse.desktop
5th STEP) Reboot your system
Note: I was able to reproduce the 4th STEP on a Debian distro with Cinnamon, without any errors.

how to use inittab to auto-restart a PHP programme?

Seems it has a respawn parameter,
But I haven't figured out how to use it.
Such as
mine:234:respawn:/usr/local/bin/myscript
See this page for a good explanation
http://aplawrence.com/Unixart/startup.html
A more verbose example:
# Level to run in
id:2:initdefault:
# Boot-time system configuration/initialization script.
si::sysinit:/etc/rc.sysinit
# What to do in single-user mode.
~:S:wait:/sbin/sulogin
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
l0:0:wait:/etc/rc 0
l1:1:wait:/etc/rc 1
l2:2:wait:/etc/rc 2
l3:3:wait:/etc/rc 3
l4:4:wait:/etc/rc 4
l5:5:wait:/etc/rc 5
l6:6:wait:/etc/rc 6
# What to do at the "3 finger salute".
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# Runlevel 2,3: getty on virtual consoles
# Runlevel 3: mgetty on terminal (ttyS0) and modem (ttyS1)
1:23:respawn:/sbin/mingetty tty1
2:23:respawn:/sbin/mingetty tty2
3:23:respawn:/sbin/mingetty tty3
4:23:respawn:/sbin/mingetty tty4
S0:3:respawn:/sbin/agetty ttyS0 9600 vt100-nav
S1:3:respawn:/sbin/mgetty -x0 -D ttyS1

Changing the resolution of a VNC session in linux [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 4 years ago.
Improve this question
I use VNC to connect to a Linux workstation at work. At work I have a 20" monitor that runs at 1600x1200, while at home I use my laptop with its resolution of 1440x900.
If I set the vncserver to run at 1440x900 I miss out on a lot of space on my monitor, whereas if I set it to run at 1600x1200 it doesn't fit on the laptop's screen, and I have to scroll it all the time.
Is there any good way to resize a VNC session on the fly?
My VNC server is RealVNC E4.x (I don't remember the exact version) running on SuSE64.
Real VNC server 4.4 includes support for Xrandr, which allows resizing the VNC. Start the server with:
vncserver -geometry 1600x1200 -randr 1600x1200,1440x900,1024x768
Then resize with:
xrandr -s 1600x1200
xrandr -s 1440x900
xrandr -s 1024x768
Found out that the vnc4server (4.1.1) shipped with Ubuntu (10.04) is patched to also support changing the resolution on the fly via xrandr. Unfortunately the feature was hard to find because it is undocumented. So here it is...
Start the server with multiple 'geometry' instances, like:
vnc4server -geometry 1280x1024 -geometry 800x600
From a terminal in a vncviewer (with: 'allow dymanic desktop resizing' enabled) use xrandr to view the available modes:
xrandr
to change the resulution, for example use:
xrandr -s 800x600
Thats it.
I'm running TigerVNC on my Linux server, which has basic randr support.
I just start vncserver without any -randr or multiple -geometry options.
When I run xrandr in a terminal, it displays all the available screen resolutions:
bash> xrandr
SZ: Pixels Physical Refresh
0 1920 x 1200 ( 271mm x 203mm ) 60
1 1920 x 1080 ( 271mm x 203mm ) 60
2 1600 x 1200 ( 271mm x 203mm ) 60
3 1680 x 1050 ( 271mm x 203mm ) 60
4 1400 x 1050 ( 271mm x 203mm ) 60
5 1360 x 768 ( 271mm x 203mm ) 60
6 1280 x 1024 ( 271mm x 203mm ) 60
7 1280 x 960 ( 271mm x 203mm ) 60
8 1280 x 800 ( 271mm x 203mm ) 60
9 1280 x 720 ( 271mm x 203mm ) 60
*10 1024 x 768 ( 271mm x 203mm ) *60
11 800 x 600 ( 271mm x 203mm ) 60
12 640 x 480 ( 271mm x 203mm ) 60
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none
I can then easily switch to another resolution (f.e. switch to 1360x768):
bash> xrandr -s 5
I'm using TightVnc viewer as the client and it automatically adapts to the new resolution.
As this question comes up first on Google I thought I'd share a solution using TigerVNC which is the default these days.
xrandr allows selecting the display modes (a.k.a resolutions) however
due to modelines being hard
coded
any additional modeline such as "2560x1600" or "1600x900" would need to
be added into the
code. I
think the developers who wrote the code are much smarter and the hard
coded list is just a sample of values. It leads to the conclusion that
there must be a way to add custom modelines and man xrandr confirms
it.
With that background if the goal is to share a VNC session between two
computers with the above resolutions and assuming that the VNC server is
the computer with the resolution of "1600x900":
Start a VNC session with a geometry matching the physical display:
$ vncserver -geometry 1600x900 :1
On the "2560x1600" computer start the VNC viewer (I prefer
Remmina) and connect to the remote VNC
session:
host:5901
Once inside the VNC session start up a terminal window.
Confirm that the new geometry is available in the VNC session:
$ xrandr
Screen 0: minimum 32 x 32, current 1600 x 900, maximum 32768 x 32768
VNC-0 connected 1600x900+0+0 0mm x 0mm
1600x900 60.00 +
1920x1200 60.00
1920x1080 60.00
1600x1200 60.00
1680x1050 60.00
1400x1050 60.00
1360x768 60.00
1280x1024 60.00
1280x960 60.00
1280x800 60.00
1280x720 60.00
1024x768 60.00
800x600 60.00
640x480 60.00
and you'll notice the screen being quite small.
List the modeline (see xrandr article in ArchLinux wiki) for
the "2560x1600" resolution:
$ cvt 2560 1600
# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
Modeline "2560x1600_60.00" 348.50 2560 2760 3032 3504 1600 1603 1609 1658 -hsync +vsync
or if the monitor is old get the GTF timings:
$ gtf 2560 1600 60
# 2560x1600 # 60.00 Hz (GTF) hsync: 99.36 kHz; pclk: 348.16 MHz
Modeline "2560x1600_60.00" 348.16 2560 2752 3032 3504 1600 1601 1604 1656 -HSync +Vsync
Add the new modeline to the current VNC session:
$ xrandr --newmode "2560x1600_60.00" 348.16 2560 2752 3032 3504 1600 1601 1604 1656 -HSync +Vsync
In the above xrandr output look for the display name on the second
line:
VNC-0 connected 1600x900+0+0 0mm x 0mm
Bind the new modeline to the current VNC virtual monitor:
$ xrandr --addmode VNC-0 "2560x1600_60.00"
Use it:
$ xrandr -s "2560x1600_60.00"
I think your best best is to run the VNC server with a different geometry on a different port. I would try based on the man page
$vncserver :0 -geometry 1600x1200
$vncserver :1 -geometry 1440x900
Then you can connect from work to one port and from home to another.
Edit: Then use xmove to move windows between the two x-servers.
Interestingly no one answered this. In TigerVNC, when you are logged into the session. Go to System > Preference > Display from the top menu bar ( I was using Cent OS as my remote Server). Click on the resolution drop down, there are various settings available including 1080p. Select the one that you like. It will change on the fly.
Make sure you Apply the new setting when a dialog is prompted. Otherwise it will revert back to the previous setting just like in Windows
Guys this is really simple.
login via ssh into your pi
execute
vncserver -geometry 1200x1600
This will generate a new session :1
connect with your vnc client at ipaddress:1
Thats it.
Adding to Nathan's (accepted) answer:
I wanted to cycle through the list of resolutions but didnt see anything for it:
function vncNextRes()
{
xrandr -s $(($(xrandr | grep '^*'|sed 's#^\*\([0-9]*\).*$#\1#')+1)) > /dev/null 2>&1 || \
xrandr -s 0
}
It gets the current index, steps to the next one and cycles back to 0 on error (i.e. end)
EDIT
Modified to match a later version of xrandr ("*" is on end of line and no leading resolution identifier).
function vncNextRes()
{
xrandr -s $(($(xrandr 2>/dev/null | grep -n '\* *$'| sed 's#:.*##')-2)) || \
xrandr -s 0
}
Solution by #omiday worked for me in Xvnc TigerVNC 1.1.0, so I condensed it into a single bash function vncsize x y. Use it like this: vncsize 1400 1000. It works for any VNC output name, "default" or "VNC-0".
function vncsize {
local x=$1 y=$2
local mode
if mode=$(cvt "$x" "$y" 2>/dev/null)
then
if [[ $mode =~ "Modeline (.*)$" ]]
then
local newMode=${BASH_REMATCH[1]//\"/}
local modeName=${newMode%% *}
local newSize=( ${modeName//[\"x_]/ } )
local screen=$(xrandr -q|grep connected|cut -d' ' -f1)
xrandr --newmode $newMode
xrandr --addmode "$screen" "$modeName"
xrandr --size "${newSize[0]}x${newSize[1]}" &&
return 0
else
echo "Unable to parse modeline for ($x $y) from $mode"
return 2
fi
else
echo "\`$x $y' is not a valid X Y pair"
return 1
fi
}
Perhaps the most ignorant answer I've posted but here goes: Use TigerVNC client/viewer and check 'Resize remote session to local window' under Screen tab of options.
I don't know what the $%## TigerVNC client tells remote vncserver or xrandr or Xvnc or gnome or ... but it resizes when I change the TigerVNC Client window.
My setup:
Tiger VNC Server running on CentOS 6. Hosting GNOME desktop. (Works with RHEL 6.6 too)
Windows some version with Tiger VNC Client.
With this the resolution changes to fit the size of the client window no matter what it is, and it's not zooming, it's actual resolution change (I can see the new resolution in xrandr output).
I tried all I could to add a new resolution to the xrandr, but to no avail, always end up with 'xrandr: Failed to get size of gamma for output default' error.
Versions with which it works for me right now (although I've not had issues with ANY versions in the past, I just install the latest using yum install gnome-* tigervnc-server and works fine):
OS: RHEL 6.6 (Santiago)
VNC Server:
Name : tigervnc-server
Arch : x86_64
Version : 1.1.0
Release : 16.el6
# May be this is relevant..
$ xrandr --version
xrandr program version 1.4.0
Server reports RandR version 1.4
$
# I start the server using vncserver -geometry 800x600
# Xvnc is started by vncserver with following args:
/usr/bin/Xvnc :1 -desktop plabb13.sgdcelab.sabre.com:1 (sg219898) -auth /login/sg219898/.Xauthority
-geometry 800x600 -rfbwait 30000 -rfbauth /login/sg219898/.vnc/passwd -rfbport 5901 -fp catalogue:/e
tc/X11/fontpath.d -pn
# I'm running GNOME (installed using sudo yum install gnome-*)
Name : gnome-desktop
Arch : x86_64
Version : 2.28.2
Release : 11.el6
Name : gnome-session
Arch : x86_64
Version : 2.28.0
Release : 22.el6
Connect using Tiger 32-bit VNC Client v1.3.1 on Windows 7.
I'm not sure about linux, but under windows, tightvnc will detect and adapt to resolution changes on the server.
So you should be able to VNC into the workstation, do the equivalent of right-click on desktop, properties, set resolution to whatever, and have your client vnc window resize itself accordingly.
On the other hand, if there's a way to
move an existing window from one
X-server to another, that might solve
the problem.
I think you can use xmove to move windows between two separate x-servers. So if it works, this should at least give you a way to do what you want albeit not as easily as changing the resolution.
As far as I know there's no way to change the client's resolution just using VNC, as it is just a "monitor mirroring" application.
TightVNC however (which is a VNC client and server application) can resize the screen on the client side, i.e. making everything a little smaller (similar to image resizing techniques in graphics programs). That should work if you don't use too small font sizes. VNC should theoretically be compatible between different VNC applications.
I have a simple idea, something like this:
#!/bin/sh
echo `xrandr --current | grep current | awk '{print $8}'` >> RES1
echo `xrandr --current | grep current | awk '{print $10}'` >> RES2
cat RES2 | sed -i 's/,//g' RES2
P1RES=$(cat RES1)
P2RES=$(cat RES2)
rm RES1 RES2
echo "$P1RES"'x'"$P2RES" >> RES
RES=$(cat RES)
# Play The Game
# Finish The Game with Lower Resolution
xrandr -s $RES
Well, I need a better solution for all display devices under Linux and Similars S.O
I think that depends on your window manager.
I'm a windows user, so this might be a wrong guess, but: Isn't there something called X-Server running on linux machines - at least on ones that might be interesting targets for VNC - that you can connect to with "X-Clients"?
VNC just takes everything that's on the screen and "tunnels it through your network". If I'm not totally wrong then the "X" protocol should give you the chance to use your client's desktop resolution.
Give X-Server on Wikipedia a try, that might give you a rough overview.

Resources