Solution 1:

I took this from an answer at superuser please give them an upvote if it helps you,

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.

See that question for more detail.

Solution 2:

You can also take a look at the FakeXRandR project.

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

There is also a nice graphical editor to quickly split your display in as many region / dipsosition you want :

screeshot

Solution 3:

This can be done in XRandR 1.5 without additional software albeit it's undocumented at the moment (at least I could not find a documentation for this). 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.