I have a copy of Debian Gnome, installed from live medium then upgraded to testing. I've decided to change my default X environment from GDM to i3 for reasons of productivity. This lead me to wanting to change my default runlevel from 5 to 3, and then configure runlevel 3 to run i3, in the event that I wanted to run GNOME3 again for whatever reason.

I haven't quite figured out how to do this. Systemd manuals reccommend changing graphical.target to something else. So I searched through systemd folders for a file named graphical.target, so that I could configure my own custom target, say, i3.target, but I couldn't find it. So then I found that in Debian, a large portion of Systemd's startup scripts are actually just called from /etc/init.d as sysvinit scripts. And some Upstart scripts are called too. But now I have no idea what graphical.target calls, so I can't create a custom startup script to launch i3.

So, I think my question is as to how to create a custom target in Systemd. But it's a bit more general than that, I'm pretty confused on the whole Systemd/Sysvinit/Upstart situation as a whole.

  • You can install any of them. By default it uses systemd.
    – peterh
    Mar 12, 2015 at 23:44
  • This question isn't really fit for QA format. To find out "how to configure it", please go and read systemd's manuals and documentation.
    – intelfx
    Mar 13, 2015 at 0:12
  • Isn't level 3 for a non-graphical multi-user environment? Why not configure your default window manager and start i3 in level 5?
    – captcha
    Mar 13, 2015 at 0:59
  • 1
    @captcha, you are thinking redhat. Debian's standard configuration does not differentiate runlevels 2-5 to allow them to be configured per local policy.
    – hildred
    Mar 13, 2015 at 14:40

2 Answers 2


You are looking for the wrong solution. You are really wondering how to be able to use different window managers. Runlevels are not the answer.

When you start the machine and see the graphical login screen, this is called the display manager. In the case of gnome, this display manager is called gdm. This DM and the other major ones knows how to start just about any desktop environment or window manager.

If you have gnome and i3 installed, there should be an option on your login screen to choose which one to start when you login.

No need to mess with runlevels or init systems, just install the graphical environments you want (you can install them all at the same time) and choose which one you want when you log in.

enter image description here

In this example of gdm, if you click on "session" at the bottom of the screen, you can choose what graphical environment to use for that login session (the default is the last one you used). If you don't see this option, you can configure gdm from within gnome to show it.


In previous versions of Debian you could install any of the three major init systems, but your default was system v. With jessie the default has changed to systemd, and here is the radical change, you can install all of them at the same time and choose between them at boot time. Unfortunately I have to agree with casey that this will not necessarily solve your problem, as that is more closely related to window managers and display managers.

First let us introduce the idea of the session manager. If you want to when you log in have the windows that were open when you logged out open, that is the responsibility of the session manager. The session manager also runs your window manager and anything else you want running when you log in. The session manager is typically tied to your windowing system, gnome and kde each have their own session manager. If your choice of windowing system does not use a session manager, the window manager will act as the session manager.

The session manager is started by the session script which is started by the display manager, which is started by the system startup system. Most display managers allow you to have the user choose the session manager either by choosing between multiple session scripts or passing options to the session script, and letting the session script worry about the details.

If this sounds a little more complicated than you want to mess with, there is a package called choosewm that will do what you want real simply. It is a meta session manager, that is when you log in you can choose which session manager you want to run.

You must log in to answer this question.

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