37

My new laptop has a big 16:9 screen, and I'm finding it hard to fully utilize it during the 95% of the time that I'm not watching HD movies on it.

I'd like to set it up as a kind of virtual dual screen by splitting the physical screen into two workspaces. I know I could arrange my windows manually, but I'd like to be able to maximize a window and have it only consume half the monitor, and have its pop up dialogs centered on its half-screen, that sort of thing.

Is there some kind of plug in available to do this?

1
  • If you're using compiz you may find the grid plugin more straightforward, see my answer below.
    – kynan
    May 5, 2012 at 13:03

8 Answers 8

26

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.
2
  • 1
    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.
    – David
    Mar 2, 2010 at 9:30
  • 3
    Link is broken. Any idea where I could find this software?
    – Maxime
    Dec 19, 2013 at 11:34
19

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.

1
  • 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! Jul 4, 2010 at 15:17
9

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.

1
  • 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.
    – JAponte
    Feb 9, 2019 at 21:13
6

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.

2
  • 1
    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
    Feb 22, 2018 at 15:40
  • 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
    – nert
    Feb 22, 2018 at 16:16
1

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.)

1

I have been using a solution to this exact questions for quite some years using a triplehead2go. That device will merge up to 3 monitors and report one huge monitor to X.

Here is how to split that huge monitor into virtual workspaces in xorg.conf:

Section "Device"
    # ... your other settings above
    Option         "TwinViewXineramaInfoOverride" "1280x1024+0+0, 1280x1024+1280+1, 1280x1024+2560+0"
EndSection

And if you are using the latest nvidia drivers, those drivers provide their own xinerama extension which seems to ignore the above setting so you must add the following in that device section:

Option         "NoTwinViewXineramaInfo" "true"
0

I'm fairly sure you can do this by tweaking your X config file, but I wouldn't just because I'd probably break my display config. If you try this, be very careful, backup you display config & make sure you have an alternative login you can use in case you have to fix your display.

You might get more satisfaction out of a tiling window manager like xmonad, or even running compiz to control how windows open, close & tile.

0

If you're using compiz you may find its grid plugin an easier and more flexible solution. You can configure it to tile a window over the left/right half of the screen when dragging it against the edge.

That is the Window Snapping feature described in the article David links to. Moreover you can configure shortcuts and make a window occupy the top/bottom half or a quarter of the screen.

Xinerama causes a notable performance hit (since it replicates X actions across all the Xinerama screens) and doesn't work well with composite window managers.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .