mirror of https://github.com/0intro/wmii
295 lines
14 KiB
TeX
295 lines
14 KiB
TeX
\chapter{Getting Started}
|
||
|
||
This section will walk you through your first \wmii\ startup.
|
||
For your first experience, we recommend running \wmii\ in its
|
||
own X session, so you can easily switch back to a more
|
||
comfortable environment if you get lost. Though you may start
|
||
\wmii\ from a session manager in your day to day use, these
|
||
instructions will use |xinit|. To begin with, copy this file
|
||
to your home directory, so we can open it in your new X session.
|
||
Then setup your |~/.xinitrc| as follows:
|
||
|
||
\begin{code}
|
||
cd
|
||
|
||
# Start a PDF viewer with this guide. Use any viewer
|
||
# you're comfortable with.
|
||
xpdf wmii.pdf &
|
||
|
||
# Launch wmii
|
||
exec wmii
|
||
|
||
# That was easy.
|
||
\end{code}
|
||
|
||
Before you run |xinit|, make sure you know how to switch
|
||
between terminals. Depending on your system, your current X
|
||
session is probably on terminal 5 or 7. You should be able to
|
||
switch between your terminals by pressing
|
||
Ctrl-Alt-F$\langle n\rangle$. Assuming that your current X
|
||
session is on terminal 7, you should be able to switch between
|
||
it and your new session by pressing Ctrl-Alt-F7 and Ctrl-Alt-F8.
|
||
Now you should be ready to start \wmii. When you run the
|
||
following command, you should be presented with a new X session
|
||
running wmii and a PDF viewer showing this document.
|
||
|
||
\begin{code}
|
||
xinit
|
||
\end{code}
|
||
|
||
When you're there, find this page in the new PDF viewer and
|
||
continue.
|
||
|
||
\section{Your First Steps}
|
||
|
||
If everything went according to plan, you should be viewing this
|
||
from a nearly empty \wmii\ session. We're going to be using the
|
||
keyboard a lot, so let's start with a convention for key
|
||
notation. We'll be using the key modifiers Control, Alt, Shift,
|
||
and Meta\footnote{The Windows$^{\mbox{\tiny®}}$ key on most
|
||
keyboards. The Penguin key on the more tongue in cheek
|
||
varieties.}, which we'll specify as C-, A-, S-, and M-,
|
||
respectively. So, <C-S-a> means pressing ‘|a|’ while holding
|
||
|Control| and |Shift|. We'll also express mouse clicks this
|
||
way, with <M-Mouse1> signifying a press of the right mouse
|
||
button, with the Meta key depressed. Buttons 4 and 5 are the up
|
||
and down scroll wheel directions, respectively.
|
||
|
||
\subsection{Floating Mode}
|
||
|
||
Beginning with what's familiar to most users, we'll first explore
|
||
floating mode. First, we need to select the floating layer.
|
||
Press <M-Space>. You should see the titlebar of this window
|
||
change color. Now, press <M-Return> to launch a terminal.
|
||
The easiest way to drag the terminal around is to press and hold
|
||
<M-Mouse1> over the window and simply drag the window
|
||
around. You should be able to drag the window anywhere onscreen
|
||
without ever releasing the mouse button. As you drag near the
|
||
screen edges, you should notice a snap. If you try to drag the
|
||
window fully off-screen, you'll find it constrained so that a
|
||
portion always remains visible. Now, release the window and move
|
||
the mouse toward one of its corners. Press and hold
|
||
<M-Mouse3>\footnote{The right button.}. As you drag the
|
||
mouse around, you should see the window resized accordingly.
|
||
|
||
To move the window without the modifier key, move the pointer
|
||
over the layout box to the left of its titlebar. You should see
|
||
the cursor change. Now, simply click and drag. To resize it,
|
||
move the pointer toward the window's edge until you see the
|
||
cursor change, and again, click and drag. Now, to close the
|
||
window, move the mouse over the windows titlebar, press and hold
|
||
<Mouse3>, select |Delete|, and release it. You should
|
||
see this window's titlebar return to its original color,
|
||
indicating that it's regained focus.
|
||
|
||
\subsection{Managed Mode}
|
||
|
||
Now, for the fun part. We'll start exploring managed mode by
|
||
looking at the basics of columns. In the default configuration,
|
||
columns have three modes:
|
||
|
||
\begin{description}
|
||
\item[Stack] <M-s> The default mode for new columns. Only one window
|
||
is fully visible per column at once. The others only display
|
||
their title bars. When new windows are added to the column,
|
||
the active window collapses, and the new one takes its
|
||
place. Whenever a collapsed client is selected, the active
|
||
window is collapsed to take its place.
|
||
\item[Max] <M-m> Like stack mode, but the titlebars of collapsed
|
||
clients are hidden.
|
||
\item[Default] <M-d> Multiple uncollapsed windows may be visible at
|
||
once. New windows split the space with the other uncollapsed
|
||
windows in their vicinity. Windows may still be collapsed by
|
||
shrinking them to the size of their titlebars. At this
|
||
point, the behavior of a stack of collapsed and uncollapsed
|
||
clients is similar to that of stack mode.
|
||
\end{description}
|
||
|
||
Before we open any new windows in managed mode, we need to
|
||
explore the column modes a bit. Column modes are activated with
|
||
the key bindings listed above. This column should be in stack
|
||
mode now. Watch the right side of the titlebar as you press
|
||
<M-m> to enter max mode. You should see an indicator appear.
|
||
This tells you the number of hidden windows directly above and
|
||
below the current window, and its position in that stack. Press
|
||
<M-d> to enter default mode. Now we're ready to open another
|
||
client. Press <M-Return> to launch another terminal. Now,
|
||
press <M-S-l> to move the terminal to a new column to the
|
||
right of this one. Once it's there, press <M-Return> two
|
||
more times to launch two more terminals. Now that you have more
|
||
than one window in a column, cycle through the three column
|
||
modes again until they seem familiar.
|
||
|
||
\subsection{Keyboard Navigation}
|
||
|
||
To begin, switch back to default mode. The basic keyboard
|
||
navigation keys, <M-h>, <M-j>, <M-k>, and <M-l>,
|
||
derive from vi, and represent moving left, down, up, and right
|
||
respectively. Try selecting each of the four windows currently
|
||
visible on screen. Notice that navigation wraps from one side of
|
||
the screen to the other, and from the top to the bottom. Now,
|
||
return to the write column, switch to stack mode, and select
|
||
each of the three terminals again. Do the same in max mode,
|
||
paying careful attention to the indicator to the right of the
|
||
titlebar.
|
||
|
||
Now that you can select windows, you'll want to move them
|
||
around. To move a window, just add the Shift key to the
|
||
direction keys. So, to move a window left, instead of <M-h>,
|
||
type <M-S-h>. Now, experiment with moving windows, just as
|
||
you did with navigating them, in each of the three column modes.
|
||
Once you're comfortable with that, move a window to the floating
|
||
layer. Since we toggled between the floating and managed layers
|
||
with <M-Space>, we'll move windows between them with
|
||
<M-S-Space>. Try moving some windows back and forth until it
|
||
becomes familiar. Now, move several windows to the floating
|
||
layer and try switching between them with the keyboard. You'll
|
||
notice that <M-h> and <M-l> don't function in the
|
||
floating layer. This is for both historical and logistical
|
||
reasons. <M-j> and <M-k> cycle through floating windows
|
||
in order of their most recent use.
|
||
|
||
\subsection{Mouse Navigation}
|
||
|
||
\wmii\ uses the “sloppy focus” model, which is to say, it focuses
|
||
windows when the mouse enters them and when you click them. It
|
||
focuses windows only when you select them with the keyboard,
|
||
click their titlebars, or press click them with <M-Mouse2>.
|
||
Collapsed windows may be opened with the mouse by clicking their
|
||
titlebars. Moving and resizing floating windows should be
|
||
largely familiar, and has already been covered. The same can't
|
||
be said for managed windows.
|
||
|
||
Let's begin working with the mouse in the managed layer. Return
|
||
to a layout with this document in a column on the left, and
|
||
three terminals in a column to the right. Switch the right
|
||
column to default mode. Now, bring the mouse to the top of the
|
||
third terminal's titlebar until you see a resize cursor. Click
|
||
and drag the titlebar to the very top of the screen. Now, move
|
||
the cursor to the top of the second terminal's titlebar and drag
|
||
it to the very bottom of the screen. Press <M-d> to restore the
|
||
terminals to their original sizes. Now, click and hold the
|
||
layout box of the second terminal. Drag it to the middle of the
|
||
terminal's window and release. Click and hold the layout box of
|
||
the third terminal and drag it to the middle of the first
|
||
terminal's window. Finally, drag the first terminal's layout box
|
||
to halfway down this window. <M-Mouse1> works to the same
|
||
effect as dragging the layout box, but allows you to click
|
||
anywhere in the window.
|
||
|
||
Now that you've seen the basics of moving and dragging windows,
|
||
let's move on to columns. Click and drag the border between the
|
||
two columns. If that's a difficult target to click, there's a
|
||
triangle at the top of the division between the two columns that
|
||
you can click and drag as well. If that's still too hard a
|
||
target, try using <M-Mouse3>, which works anywhere and provides
|
||
much richer functionality.
|
||
|
||
\subsection{Window Focus and Selection}
|
||
|
||
For the purposes of keyboard navigation, \wmii\ keeps track of
|
||
which window is currently selected, and confers its titlebar a
|
||
different color scheme from the other windows. This window is
|
||
the basis of relative motion commands, such as “select the
|
||
window to the left”, and the target of commands such as “close
|
||
this window”. Normally, the selected window is the same as the
|
||
focused window, i.e., the window that receives keyboard events.
|
||
Some applications, however, present strange corner cases.
|
||
|
||
\begin{description}
|
||
\item[Focused, selected window] This is the normal case of a
|
||
window which is both selected and has the keyboard focus.
|
||
\titlebar{selected}
|
||
\item[Unfocused, unselected window] This is the normal case for an
|
||
unselected window which does not have the keyboard focus.
|
||
\titlebar{unselected}
|
||
\item[Unfocused, selected window] This is the first unusual
|
||
case. This is the selected window, for the purposes of
|
||
keyboard navigation, but it does not receive keyboard events.
|
||
A good example is an onscreen keyboard, which will receive
|
||
mouse clicks and translate them to keyboard events, but
|
||
won't absorb those keyboard events itself. Other examples
|
||
include any window whilst another (such as \wimenu) has
|
||
grabbed the keyboard.
|
||
\titlebar{unfocused}
|
||
\item[Focused, unselected window] This is the second unusual
|
||
focus case. The window has the keyboard focus, but for the
|
||
purposes of keyboard navigation, it is not considered
|
||
selected. In the case of an onscreen keyboard, this is the
|
||
window which will receive the generated events. In the case
|
||
of a keyboard grab, the will likely be the window holding
|
||
the grab.
|
||
\titlebar{focused}
|
||
\end{description}
|
||
|
||
\section{Running Programs}
|
||
|
||
You've already seen the convenient key binding to launch a
|
||
terminal, but what about other programs? To get a menu of all of
|
||
the executables in your path, type <M-p>. This should replace
|
||
the bar at the bottom of the screen with a prompt, followed by a
|
||
string of completions. Start typing the name of a program that
|
||
you want to open. You can press <Tab> and <S-Tab> to cycle
|
||
through the completions, or you can just press <Return> to
|
||
select the first one. If you want to execute a more complex
|
||
command, just type it out and press <Return>. If you want to
|
||
recall that command later, use \wimenu's history. Start typing
|
||
the command you want and then press <C-p> until you come to it.
|
||
|
||
When you're done with a program, you'll probably want an easy
|
||
way to close it. The first way is to ask the program to close
|
||
itself. Since that can be tedious (and sometimes impossible),
|
||
\wmii\ provides other ways. As mentioned, you can right click
|
||
the titlebar and select |Delete|. If you're at the keyboard,
|
||
you can type <M-S-c>. These two actions cause \wmii\ to ask
|
||
nicely that the program exit. In those sticky cases where the
|
||
program doesn't respond, \wmii\ will wait 10 seconds before
|
||
prompting you to kill the program. If you don't feel like
|
||
waiting, you can select |Kill| from the window's titlebar
|
||
menu, in which case \wmii\ will forcefully and immediately kill
|
||
it. Beware, killing clients is a last resort. In cases where the
|
||
same program opens multiple windows, killing one will kill them
|
||
all—without warning.
|
||
|
||
\section{Using Views}
|
||
|
||
As already noticed, \wmii's concept of virtual workspaces is
|
||
somewhat unique, so let's begin exploring it. Open up a terminal
|
||
and press <M-S-2>. You should see a new button on the bar at the
|
||
bottom of the screen. When you click it, you should see your
|
||
original terminal. Press <M-1> to come back here. Now, press
|
||
<M-3>, and <M-1> again to return here once more. Notice that the
|
||
views were created when needed, and destroyed when no longer
|
||
necessary. If you want to select a view with a proper name, use
|
||
<M-t> and enter the name. Other than the dynamic creation of
|
||
views, this is still similar to the familiar X11 workspace
|
||
model. But that's just the beginning of \wmii's model. Open a new
|
||
terminal, and type:
|
||
|
||
\begin{code}
|
||
echo ‘Hello world!’
|
||
\end{code}
|
||
|
||
\noindent Now, type <M-S-t>. In the menu that appears, enter
|
||
|1+2+3|. Now, visit the views |1|, |2|, and |3|, and you'll see
|
||
the client on each. To remove a tag, type <M-S-t> again, and
|
||
this time enter |-2|. You'll notice that the client is no longer
|
||
on the |2| view. Finally, tag names needn't be discrete,
|
||
ordinary strings. They can also be regular expressions. Select
|
||
the terminal again, and enter |+/^5/|. Now, switch to the |5|
|
||
view. Now try the |6| view. Finally, type <M-t> and enter |50|
|
||
to check the |50| view. Clients tagged with regular expressions
|
||
are attached to any matching views when they're created. So,
|
||
when you switch to an empty view, or tag a client with a new
|
||
tag, any clients with matching regular expressions are
|
||
automatically added to it. When all explicitly tagged clients
|
||
disappear from the view, and it's no longer visible, clients
|
||
held there by regular expressions are automatically removed.
|
||
|
||
\section{Learning More}
|
||
|
||
For full tables of the standard key bindings, and descriptions
|
||
of the precise semantics of the topics discussed above, you
|
||
should refer to \wmii's |man| pages.
|
||
|