Howto
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).
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.
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.
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.
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
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.
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.)
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.
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.
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.
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.
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.
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.)
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`.
- The
Mod1+Aquery in the target frame. - Dragging and dropping the tab of the window on the target frame.
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.
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:
Are you using the latest version (of Ion3 or Ion2)?
No. Then do so.
Yes. You may proceed to the next step.
Have you applied unsupported patches from elsewhere? (Such as an Xft patch.)
Yes. Remove them and come back again.
No. Next step, please.
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/ion3and then runbacktrace fullin 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.
Is the problem Gnome-related?
Yes. Goodbye.
No. Next step.
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.
Does the problem persist?
No. Problem solved.
Yes. Please report the problem.
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.
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.
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).
Irssi key overlap
Ion's workspace switching keys Alt+n (n=1,2,...) overlap Irssi's
channel switching keys. How can I fix this?
Alt+key(Meta+key, actually) in terminals sendsEscfollowed bykey, so simply use this sequence to switch channels in irssi.- Change the
METAsetting incfg_ion.lua(Ion3) orion-bindings.lua(Ion2) to have Ion use some other key as modifier. See Substituting for the Alt key, and the configuration manual for details.