How to vertically split widescreen into two virtual workspaces on Ubuntu/Gnome?

65

Solution 1

you can use 'fakexinerama' for achieving what you want:

 Fake Xinerama is a replacement libXinerama library that instead 
 of querying the XServer reads ~/.fakexinerama and provides fake 
 information about Xinerama screens based on this file. It can be 
 used to fake a Xinerama setup even on computers with just one monitor
 or to fake Xinerama setup other than one specified in the XServer 
 configuration (e.g. making one screen smaller when using two same 
 screens). It's probably only useful for developers.

Solution 2

To expand on akira's tip above on using Lubos Lunak's "fake xinerama", here's exactly how I made it work for me:

  1. I downloaded this Xinerama.c file from the Fake Xinerama site.
  2. I opened a terminal, and navigated to the folder folder where I saved Xinerama.c.
  3. I executed:
    gcc -O2 -Wall Xinerama.c -fPIC -o libXinerama.so.1.0.0 -shared
  4. I opened up nautilus (the gnome file explorer) as root, by typing Alt-F2 and then:
    gksu nautilus
  5. I navigated to /usr/lib, found libXinerama.so.1.0.0 and made a back up copy of it.
  6. I copied the libXinerama.so.1.0.0 from my download directory into the /usr/lib directory, overriding the copy there (which I had just backed up in step 5, so I could undo this later if need be.) To keep things clear it was helpful to note that the file size of the "fake" version was bigger (12.6 kb) than the "real" version I was replacing (8.6 kb).
  7. I created a new text file called .fakexinerama in my /home/dave directory and put this in it: (based on my 1440x900 physical screen size)
    2
    0 0 720 900
    720 0 720 900

Fake Xinerama lets you define any kind of virtual screen set up you want, but I just want a vertical split screen. To achieve that on your monitor, X by Y pixels in size, looking at my file example, just replace 720 with X/2 and replace 900 with Y.

That's it. I logged out and back in, and was up and running.

Thanks again to Lubos Lunak for creating this mod and to akira for pointing me at it.

Solution 3

There is now a new project called FakeXRandR that works really straight forward.

This is a tool to cheat an X11 server to believe that there are more monitors than there actually are. It hooks into libXRandR and libXinerama and replaces certain, configurable monitor configurations with multiple virtual monitors. A tool that comes with this package can be used to configure how monitors are split.

Solution 4

This can be done in XRandR 1.5 without additional software. While neither fakexinerama nor FakeXRandR have worked for me on Xubuntu, this solution has finally split the screen into two.

To split the monitor do the following:

  1. Enter xrandr into the terminal to check the output name and current resolution of the display you want to split.
    On my system the result was:

    Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
    HDMI1 disconnected (normal left inverted right x axis y axis)
    HDMI2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm
       1920x1080     60.00*+  50.00    59.94
       1920x1080i    60.00    50.00    59.94  
       1600x900      60.00  
       1280x1024     75.02    60.02  
       1152x864      75.00  
       1280x720      60.00    50.00    59.94  
       1024x768      75.08    60.00  
       800x600       75.00    60.32  
       720x576       50.00  
       720x576i      50.00
       720x480       60.00    59.94
       720x480i      60.00    59.94
       640x480       75.00    60.00    59.94
       720x400       70.08
    VGA1 disconnected (normal left inverted right x axis y axis)
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    

    We can see that my monitor is connected to HDMI2 and the resolution is set to 1920x1080.

  2. Add 2 virtual monitors with the xrandr --setmonitor command ensuring that they overlap with your physical display and are placed next to each other. The syntax of the command is (without quotes):

    xrandr --setmonitor "monitor_name" "width_px"/"width_mm"x"height_px"/"height_mm"+"x_offset_px"+"y_offset_px" "output_name" 
    

    For my system it was:

    xrandr --setmonitor HDMI2~1 960/254x1080/286+0+0 HDMI2
    xrandr --setmonitor HDMI2~2 960/255x1080/286+960+0 none
    
  3. While the above has already configured the virtual monitors on my system the changes haven't been applied until I have executed (it seems to refresh xrandr):

    xrandr --fb 1921x1080
    xrandr --fb 1920x1080
    

To persist the changes after reboot you would want to execute these commands when you login. You can do so by appending the commands at the end of your ~/.profile file.

Solution 5

I came across an article on omgubuntu that gives a pretty easy way to mimic the Windows Snap functionality in Ubuntu/Gnome using the Compiz control panel. This Windows Snap leaves me with one widescreen desktop, but windows themselves can be easily docked to fill either half screen. (That's not exactly what I was looking for originally, but still pretty handy.)

Share:
65

Related videos on Youtube

Alexander Schmidt
Author by

Alexander Schmidt

Updated on September 17, 2022

Comments

  • Alexander Schmidt
    Alexander Schmidt over 1 year

    I added a link-type with Forward=Task and Reverse=User Story using a Dependency. I uploaded this to my collection successfully.

    Now I delete the link type and upload the template successfully again.

    When I now want to create a new link type containing "Task" as Forward I get the error:

    TF201006: The link type NEWNAME conflicts with link type OLDNAME. The name Task is already being used. (type ProvisionValidationException)

    I don't see how to remove the OLDNAME.xml on my TFS because I don't know, where those uploaded templates are stored. Obviously the ProcessEditor will leave those files even if you remove a link type.

    • kynan
      kynan about 12 years
      If you're using compiz you may find the grid plugin more straightforward, see my answer below.
  • David
    David about 14 years
    Thanks, this works perfectly, and better than I'd hoped actually. My docks, panel bars, and floating windows span the physical screen, but maximized and "full screen" apps (including my vmware guest instances) politely keep to their half of the screen. I'm pretty new to linux, so hacking at my display settings felt a bit risky, but there's not really much work involved. I'm documenting my exact steps for other linux amateurs (like myself) in an additional answer below.
  • Kyle Brandt
    Kyle Brandt almost 14 years
    This helped me out a lot with a three head display. Xinerama is pretty slow with three desktop so using this allowed me to put two of them in twinview without the annoying maximize to both issue and have the third as a separate X screen joined to the twinview with Xinerama. Thanks for taking the time to write out the steps David!
  • Maxime
    Maxime over 10 years
    Link is broken. Any idea where I could find this software?
  • nert
    nert about 6 years
    It's is good that it exists right in xrandr, great. But it makes only the left side of my monitor usable, the right part doesn't show anything. And I get no error shown. -- Oh, it looks like Awesome WM doesn't support the monitors, but uses the outputs only. So you need support in the WM as well.
  • nert
    nert about 6 years
    Oh, nevermind, awesome has support for xrandr's monitors, it just didn't work for me. But awesome can do this by itself: awesomewm.org/apidoc/classes/screen.html#screen:fake_add
  • JAponte
    JAponte over 5 years
    I used fakexrandr successfully once in a while. Unfortunately my screen turns scrambled when I have xorg.conf (which I need for a custom resolution for my ultrawide monitor). I'm forced to delete the fakexrandr config, restart X and reconfigure fakexrandr.