Is there any way to let Ubuntu ignore lid close events?
Lid events are triggered by the lidbtn
file in /etc/acpi/events/
, which contains two active lines:
event=button[ /]lid
action=/etc/acpi/lid.sh -- comment this out with a # at the beginning
You can ignore lid open/close events by commenting out the second line with a #
and then rebooting.
I'd want to change how it deals with the screen reconfiguration.
You can look at and try to modify the file /etc/acpi/lid.sh
and the functions/commands it references.
BUT (BIG CAVEAT): If your laptop BIOS uses the lid close/open to switch the internal/external video out ports on/off, then this is beyond the OS ACPI event handler's powers.
as I understand, Unity doesn't work with optirun (it seems to be a bug).
That's what I've found here:
HDMI doesn't work with Optimus hybrid graphics chipsets under Linux for most laptops, even if you use Bumblebee, but there is a way to get HDMI to work: by using a separate session.
Using the instructions below, you'll get an LXDE session (you can use XFCE or others, but the instructions below are for LXDE) to show up on the external monitor (which is connected via HDMI), and in this session, all the applications you launch use your laptop's Nvidia graphics card and you can play games, watch movies, etc. The LXDE session runs in the same time as your regular session, so on your laptop's screen you get your regular (main) session. Also, the mouse and keyboard are shared between the two sessions / monitors.
Here's how this looks like:
The first image above is from my laptop's screen (Dell XPS L702X which comes with Nvidia Optimus) while the second image is the separate LXDE session which is also running on my laptop, but is displayed on a TV connected via HDMI. As you can see, the first one is using the Intel graphics chip while the second one uses Nvidia.
However, there are some things to consider when using this:
- the sound won't work (if you know a way to get it to work, please let
us know in the comments!) through HDMI so you'll only get sound
through your laptop's speakers
- you can't move a window from your current desktop to the monitor
connected via HDMI. The only way to run applications on the device
connected via HDMI is to either run it from its session menu, or by
using "export DISPLAY=:8.0" (see the end of the post for more info on
this). The mouse is however, shared between the two desktops.
- when loading the extra session, you may get double indicators / tray
icons on your current (main) session. There is a way around this
though (see the "tips" section at the end of the post)
Get HDMI to work with laptops using the Optimus technology under Ubuntu using Bumblebee and Synergy
Install Bumblebee if you haven't already.
Unity doesn't work with Bumblebee (and I'm not sure if you can run two sessions using the same window manager without them interfering anyway), so you'll need to use a different desktop environment / session, like LXDE, XFCE and so on - use whatever you want. I've used LXDE so using the instructions below, you'll get an LXDE session on the monitor connected via HDMI.
To get the mouse and keyboard working on the external monitor connected via HDMI we'll use Synergy, a tool that lets you share the mouse and keyboard between multiple computers.
Let's install the required packages (LXDE and Synergy):
sudo apt-get install synergy lxde lxde-common
To be able to use Synergy, you'll need to create a configuration file. You can download mine from HERE - copy the file to your home folder and rename it to ".synergy.conf" (notice the dot in front of the filename - that makes the file become hidden).
The file I've provided above should be enough, but if you want to change it, you can read about the Synergy configuration file here.
To start LXDE on the external monitor connected via HDMI, you can use a script which you can download from HERE. Extract the archive, copy the "hdmi" script to your home folder and make it executable using the following command:
chmod +x ~/hdmi
Now, to run the script, use the following command:
~/hdmi
LXDE should now start on the external monitor connected via HDMI. Give it some time (around 10 seconds) and moving your mouse to the left of your screen should make it show up on the HDMI device.
Here's what the script does (this is just an explaination, you don't need to run these commands, just use the above script):
exports the display to the one we're going to use for the HDMI monitor (8):
export DISPLAY=:8.0
runs LXDE with optirun (Bumblebee):
optirun startlxde &
runs the Synergy server in the foreground on the main display (on your laptop's main session) with 127.0.0.1 as the address:
synergys -f -a 127.0.0.1 --display :0 -n ubuntu &
runs the Synergy client in the foreground on the HDMI display and it connects it to the 127.0.0.1 server address:
synergyc -f -n hdmi --display :8 127.0.0.1 &
And finally, it exports the display back to your laptop's (main) display:
export DISPLAY=:0.0
The script also uses some "sleep" commands which add a delay to make sure the commands have enough time to get executed before running the next command.
Best Answer
For 10.10 multi monitor support was rudimentary, as that was focused on netbooks -- if you were giving a presentation and you ran Unity we didn't want the top panel overlaid on your presentation.
For 11.04 and 11.10 the multimonitor support is much better. I'll talk about how my setup works with Nvidia, but I don't have the hardware to comment on ATI and Intel support so hopefully someone will post seperate answers for those.
For 12.04 and 12.10 there is a specification for how to improve multi monitor support in the desktop.
Nvidia Twinview
Each monitor gets a panel with the window controls, the application menu, and then the indicators. When the windows are maximized each window gets integrated into the top panel of each screen. The indicators are cloned so that you're never too far from the system menu.
When the windows are unmaximized the application menu for that app will be displayed on whichever panel the application is on so that you don't have the menu all the way on another screen:
ATI
Using the open source ATI driver with RandR (you setup from Monitor Preferences, see screenshot) then the same result is achieved as with Nvidia Twinview.
Known Issues:
Here is a list of possible combinations of multi monitor setups and their results:
There are some bugs (other than the first, they are generally small aesthetic details):
There's still the potential to improve support further, for example the suggestion in Bug #755357 to allow two global menus to be active at the same time.
See also What's the right terminology for Unity's UI elements?