Ion / FAQ / Howto

Howto

2008-04-28 16:20 UTC

Fullscreen windows

I put a window in fullscreen mode, and switched to another workspace. Now the window is gone when I return to the first workspace!

Ion makes all fullscreen windows essentially new workspaces on their own; workspaces and fullscreen windows within a screen behave quite analogously to windows within a frame. You will find your window as the last workspace (unless you have created new workspaces or put other windows in fullscreen mode in the meanwhile). You may go to it with the workspace cycling keys (Mod1+comma/period), the numerical selection keys (Mod1+0...9), through the focus history menu (Mod1+K K), or by name with the client query (Mod1+G).

2007-12-29 15:30 UTC

Default layout

How to get the old single-frame layout as default?

Either create a modified version of cfg_layouts.lua for your needs, or do

ioncore.deflayout("default", ioncore.getlayout("full"))

after loading the default layouts, e.g. at the end of cfg_ion.lua.

2007-11-25 11:44 UTC

Hiding the tab-bar

How do I hide the tab-bar?

In Ion3, assuming you have a suitably configured style in use, such as one of stock ones, enter the following in the Mod1+F3 Lua code query to disable the tab-bar for an active tiled frame:

_:set_mode('tiled-alt')

To display the tab-bar again, use

_:set_mode('tiled')

To make hidden tab-bar the default, you should reverse the display settings in the style in use. You should also modify the style to change the tab-bar display settings for other types of frames (transients, floats). For more information, see the configuration and scripting reference manual.

2007-11-07 07:28 UTC

Rearranging workspaces

How do I rearrange workspaces?

The mechanism is the same as that of rearranging client windows (or nested workspaces) within frames. While the latter operation is bound to Mod1+K comma/period, the former operation is not presently bound anywhere, as it is thought to be used quite seldom. Adding the following snippet in your cfg_ion.lua should provide the menu items.

defctxmenu("WScreen", "Screen", {
    menuentry("Move workspace right",   "WMPlex.inc_index(_, _sub)"),
    menuentry("Move workspace left",    "WMPlex.dec_index(_, _sub)"),
})

Alternatively, you may try simply entering something like local m=ioncore.find_manager(_, "WGroupWS"); m:manager():inc_index(m) in the Mod1+F3 Lua code query.

2006-09-30 08:58 UTC

SSH ports

Can Ion's (F4) SSH query complete the port or username I use on a host?

Just use ~/.ssh/config to configure SSH to always use those username and port by default:

    Host foobar
    User bazquk
    Port 1234
2006-09-30 08:58 UTC

Black XTerm borders

How do I disable the black borders XTerm/Rxvt/etc. has?

XTerms and other terminal emulators and programs with a size granularity greater than one pixel, do not usually exactly fit into Ion's frames. Therefore some extra space is left around them. As all the stock styles have black frame background colour, this border is black. It should not be a problem with black-backgrounded terminal emulators, but if you use some other background colour in your terminal emulators, just change Ion's colour scheme to use another colour. Alternatively, you could set the ignore_resizeinc winprop to true, as by the glorious ICCCM, Ion does not have to respect this size granularity. Unfortunately, XTerm at least handles this particularly badly: instead of adding its own borders of the right colour, it thinks it has extra character cells. But these are too small to display the characters fully. No, it is not possible (reliably enough) for Ion to find out the background colour of the terminal window.

2006-08-11 20:41 UTC

Floating workspace

How do I create a workspace of “floating” frames?

The F9 goto/create workspace query will ask you for the type or layout of the new workspace, when you enter the name of a non-existent one. Choose “WFloatWS” or “empty” depending on the version. (Releases between ion-3ds-20061015 and ion-3ds-20061223, inclusive, temporarily did not have this feature, and “new-empty-workspace” from the Mod1+M context menu had to be used instead.)

2006-08-11 20:41 UTC

Click-to-focus

How can I switch to click-to-focus model / I don't want windows to receive focus when the pointer enters them. How do I disable this?

Ion only supports the sloppy focus model, and there are no plans to support other focus models.

2006-08-11 20:41 UTC

Remote restart

Can I restart Ion remotely? Sending it SIGHUP kills it.

Try SIGUSR1. Ion should not restart with SIGHUP as it is not a daemon, and may have a controlling tty depending on how it has been started.

2006-08-11 20:41 UTC

Forwarding key events

How do I send a key that Ion has grabbed to an application?

The quote_next function, bound by default to Mod1+K Q, might work, or it might not. Terminal emulators tend to disallow “SendEvents” by default, and these must be allowed before this feature will work. quote_next also will send the key to the main client window, not any subwindow within that might have been focused before the Mod1+K Q grab was initiated, but which information is no longer available in this binding handler.

Alternatively, with Ion3, use the switch_bindings script from the scripts repository to temporarily ungrab most of Ion's bindings.

2006-08-11 20:41 UTC

Custom tricks

How can I have Ion perform this particular action I have in mind?

Ion2 and Ion3: The Configuration manual should help you find a solution to your problem. Use the Index or List of functions to search for what you have in mind.

Ion1: Read doc/functions.txt carefully. If what you have in mind is not found there, it probably isn't possible in that version of Ion.

2006-08-11 20:41 UTC

Initial window placement

Wouldn't it make more sense if windows were attached to the frame where the program was started from instead of the current frame?

Indeed it would. There's just no generally viable way to do this without application support. The FDO startup notification specification does in principle provide a framework for this. Unfortunately, few of the good old applications of interest to the good Ion user, support it. Thus there has been little interest in implementing the support in Ion. If you would like to do so, however, your help is appreciated; more information may be obtained from the author, or the mailing list and its archives.

There does, however, also exist an old LD_PRELOAD hack, that could do the job in a limited number of cases. It may or may not work with present versions of Ion.

2006-08-11 20:41 UTC

Urgency flag

Is it possible to externally set the urgency flag for an xterm (or other closely-related terminal emulator)?

Yes. See this urgent.c for a simple example of setting the flag from a program running in the terminal. (The WINDOWID environment variable gives the X window id of the xterm.)

2006-08-11 20:41 UTC

Moving windows

How do I move windows between workspaces?

You do this as you would move windows between frames on the same workspace: 1. Tagging: tag the window with Mod1+T, go to the target frame, and

attach tagged windows with `Mod1+K A`.
  1. The Mod1+A query in the target frame.
  2. Dragging and dropping the tab of the window on the target frame.
2006-08-11 20:41 UTC

Startup programs

How do I specify programs to run when Ion starts up?

Start them from .xinitrc, .xsession or whatever file you started Ion from depending on your configuration.

How do I get these programs to show up in the frames they were previously in?

Short answer: you can't. Without session management support from both the applications and the WM it is not otherwise possible to uniquely identify windows and programs between sessions. Few applications and even fewer that should be of any interest to Ion users properly support session management. While there is a session management module for Ion1, Ion2 doesn't have one.

Long answer: In Ion2, it is possible to use winprops to map window classes to certain frames. This, however, will not work for individual windows and will affect programs started while Ion is running. See the section on winprops in the configuration manual for details on setting up the winprops.

2006-08-11 20:41 UTC

Reporting bugs

How to report bugs and other potential problems?

Problems should be reported on the mailing list, directly to me (tuomov), or on the IRC channel, if you are patient enough to wait for somebody to respond. Always mention the version of Ion you are using, and anything else you consider relevant. To solve certain common problems, and for more specific information needed in some other cases, use the following chart:

  1. Are you using the latest version (of Ion3 or Ion2)?

    No. Then do so.

    Yes. You may proceed to the next step.

  2. Have you applied unsupported patches from elsewhere? (Such as an Xft patch.)

    Yes. Remove them and come back again.

    No. Next step, please.

  3. Does Ion die with a segmentation fault?

    Yes. Obtain a backtrace from gdb and send it along with other relevant detail. You must have compiled Ion with debugging symbols (default in development releases). If you have enabled core dumps, simply run gdb -core the_core_file path_to/bin/ion3 and then run backtrace full in gdb. If you have not enabled coredumps, you have the options of running Ion from within gdb, enabling coredumps (ulimit -c 10000, for example, before starting Ion), or trying to attach gdb to the process before it dumps core, and trying to reproduce the problem.

    No. Go to next step.

  4. Is the problem Gnome-related?

    Yes. Goodbye.

    No. Next step.

  5. Did you run any Gnome software in your session (especially gdm or gnome-settings-daemon)?

    No. Please report the problem.

    Yes. Remove all Gnome software from your system. Then go to next step.

  6. Does the problem persist?

    No. Problem solved.

    Yes. Please report the problem.

2006-08-11 20:41 UTC

Saving layout

How do I save workspace and frame layout?

Ion does it automatically for you when you exit it cleanly. (Shutting down X with Ctrl+Alt+Backspace is not a clean exit!) You can also save the layout manually during session from the F12 menu by choosing session/save.

2006-08-11 20:41 UTC

Background image

How do I change the background image in Ion?

That is not a feature a window manager should have! There are dozens of excellent specialised programs that can you can use to set the background, for example, the display -window root command of ImageMagick.

2006-08-11 20:41 UTC

Closing workspaces

How do I close workspaces I don't need anymore?

Press Mod1+C enough many times to close anything on the workspace, and in case of a WFloatWS, one last time to close the workspace itself. (Tiled WIonWSs are destroyed automatically when the last frame is destroyed).

2006-08-11 20:41 UTC

Irssi key overlap

Ion's workspace switching keys Alt+n (n=1,2,...) overlap Irssi's channel switching keys. How can I fix this?

  1. Alt+key (Meta+key, actually) in terminals sends Esc followed by key, so simply use this sequence to switch channels in irssi.
  2. Change the META setting in cfg_ion.lua (Ion3) or ion-bindings.lua (Ion2) to have Ion use some other key as modifier. See Substituting for the Alt key, and the configuration manual for details.