Difference between pages "Package:MediaWiki" and "Package:Spectrwm"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
m (add some media, 200 vidz, strip page needing updates warning because this page is completely excellent. (it just needs some nginx stuff moved to the nginx page))
 
 
Line 1: Line 1:
{{Ebuild
{{Ebuild
|Summary=
|Summary=A small, dynamic tiling window manager for X11.
|CatPkg=www-apps/mediawiki
|CatPkg=x11-wm/spectrwm
|Maintainer=Drobbins,
|Maintainer=
|Repository=Funtoo Overlay
|Homepage=https://opensource.conformal.com/wiki/spectrwm
}}
}}


{{Fancyimportant|1=
{{Note|Spectrwm was previously known as Scrotwm.}}
This page documents how to install MediaWiki from source tarball rather than portage, which is the preferred method. It also shows how to use MediaWiki with php-5.4. As of late 1.22 and 1.23, MediaWiki now unofficially works with php-5.5 & php-5.6.}}


MediaWiki is a [[Web-server-stack]] web application. This page documents how to set up MediaWiki on Funtoo Linux, from a bare stage3 install with network connectivity. We will use Nginx, xcache and PHP-FPM, which will result in good performance. We will also properly secure MediaWiki, and also cover some additional tips and tricks, focusing on spam reduction.
==== Introduction ====
From their page:
spectrwm is a small dynamic tiling window manager for X11. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.


== Portage Settings ==


Add the following line to <code>/etc/[[make.conf]]</code>:
<pre>
PHP_TARGETS="php5-4"
</pre>
Add the following lines to <code>/etc/portage/package.use/php</code>:
<pre>
dev-lang/php curl exif fpm gd mysql mysqli sockets suhosin threads intl xmlreader xmlwriter
>=dev-php/xcache-2.0.0 php_targets_php5-4
</pre>
== Emerge ==
Emerge xcache, and we'll also emerge metalog and postfix. This should pull in MySQL as well as php-5.4:


==== Installation ====
<console>
<console>
# ##i##emerge --jobs xcache metalog postfix
# ##i##emerge x11-wm/spectrwm
</console>
</console>
 
Xlockmore is also needed
== Start and Configure Services ==
 
Time to configure MySQL with a root password, start it, secure it, and enable it to start at boot. We'll also start metalog and postfix:
 
<console>
<console>
# ##i##emerge --config mysql
# ##i##emerge x11-misc/xlockmore
# ##i##rc-update add mysql default
# ##i##rc-update add metalog default
# ##i##rc-update add postfix default
# ##i##rc
# ##i##mysql_secure_installation
</console>
</console>


== Database Setup ==
Now, let's create a database named <code>mediawiki</code> for use by MediaWiki, and a <code>mediawiki@localhost</code> user to access this database, using a password of <code>wikifever</code>:
<console>
# ##i##mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.1.62-log Gentoo Linux mysql-5.1.62-r1
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ##i##create database mediawiki;
Query OK, 1 row affected (0.01 sec)
mysql> ##i##grant index, create, select, insert, update, delete, alter, lock tables on mediawiki.* to 'mediawiki'@'localhost' identified by 'wikifever';
Query OK, 0 rows affected (0.01 sec)
mysql> ##i##\q
Bye
#
</console>
== Nginx Setup ==
We will use nginx as our Web server. Let's emerge it:
<console>
# ##i##emerge --jobs nginx
</console>
== User and Group ==
When we run our wiki, we will run it as the <code>docs</code> user, for security. Let's set up a <code>docs</code> user and group:
<console>
# ##i##groupadd docs
# ##i##useradd -g docs --home /home/docs docs
# ##i##install -d /home/docs
# ##i##chown -R docs:docs /home/docs
</console>
== Set up PHP ==
As our last major configuration step, we will configure the PHP FastCGI Process Manager by creating a <code>/etc/php/fpm-php5.4/php-fpm.conf</code> file with the following contents (existing contents can be deleted):
{{file|name=/etc/php/fpm-php5.4/php-fpm.conf|desc= |body=
[global]
error_log = /var/log/php-fpm.log
log_level = notice
[docs]
listen = /var/run/docs.php-fpm.socket
listen.allowed_clients = 127.0.0.1
listen.owner = docs
listen.group = nginx
listen.mode = 0660
user = docs
group = docs
pm = dynamic
pm.max_children = 16
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 2
pm.max_requests = 500
php_admin_value[open_basedir] = /home/docs/public_html:/tmp
php_admin_value[error_log] = /home/docs/php-errors.log
php_admin_value[disable_functions] = exec, system, shell_exec, passthru, popen, dl, curl_multi_exec, posix_getpwuid,
disk_total_space, disk_free_space, escapeshellcmd, escapeshellarg, eval, get_current_user, getmyuid, getmygid,
posix_getgrgid, parse_ini_file, proc_get-status, proc_nice, proc_terminate, suexec, pclose, virtual, set_time_limit, show_source
}}
This configuration file tells PHP to use the <code>docs</code> user when running MediaWiki. '''Please note that the last line is very long - I have split it into 3 lines for readability on this wiki, but you should combine them into a single line in your configuration file. The line should start with <code>php_admin_value[disable_functions]</code> and end with <code>show_source</code>.
== Configure Nginx ==
Oh! Now we need to configure nginx to serve pages as the docs user. Assuming your site is named wiki.mysite.com, create a <code>/etc/nginx/sites-available/wiki.mysite.com</code> file with the following contents:


==== Setup ====
===== xinitrc =====
Edit ~/.xinitrc:
<pre>
<pre>
server {
exec spectrwm
        listen 80;
        server_name wiki.mysite.com;
 
        access_log /var/log/nginx/wiki.mysite.com.access.log main;
        error_log /var/log/nginx/wiki.mysite.com.error.log error;
       
        root /home/docs/public_html;
        index index.html index.php;
 
        # uncomment this if you want to htpasswd-protect your site while you set it up initially
        # auth_basic "Ninjas allowed only";
        # auth_basic_user_file /etc/nginx/docs.funtoo.org.htpasswd;
 
location ~* ^(.*)(install.php|LocalSettings.php|\.git) { deny all; }
 
location ~* \.php$ {
        #set $https "off";
        #if ($scheme = https) { set $https "on"; }
        #fastcgi_param HTTPS $https;
 
        try_files      $uri    @404;
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;
        fastcgi_param  QUERY_STRING      $query_string;
        fastcgi_param  REQUEST_METHOD    $request_method;
        fastcgi_param  CONTENT_TYPE      $content_type;
        fastcgi_param  CONTENT_LENGTH    $content_length;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI      $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        wiki.mysite.com;
 
        fastcgi_pass    unix:/var/run/docs.php-fpm.socket;
        fastcgi_index  index.php;
}
 
# this will secure the MediaWiki uploads against arbitrary PHP injection attacks:
location /images/ {
        location ~.*\.(php)?$ {
                deny all;
        }
}
 
 
location @404 {
        return 404;
        break;
}
 
location / {
        try_files $uri $uri/ @mediawiki;
}
 
location @mediawiki {
        rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;
}
 
}
</pre>
</pre>
 
Copy /etc/spectrwm.conf to your home dir as an hidden file.
for localhost/wiki/ short urls in nginx:
{{file|name=/etc/nginx/sites-enabled/localhost|lang=|desc=domain.com/wiki/ short urls|body=
location /wiki {
index index.php;
rewrite "^(wiki)$" $1/ permanent;
rewrite "^/?wiki(/.*)?" /mediawiki/index.php?title=$1&$args last;
}}
 
== Enable Ngnix and PHP-FPM ==
 
Now, let's enable nginx to serve our site, and also be sure to enable php-fpm:
 
<console>
<console>
# ##i##cd /etc/nginx/sites-enabled
$ ##i## cp /etc/spectrwm.conf ~/.spectrwm.conf
# ##i##ln -s ../sites-available/wiki.mysite.com wiki.mysite.com
# ##i##rc-update add nginx default
# ##i##rc-update add php-fpm default
# ##i##rc
* Starting PHP FastCGI Process Manager ...                                                           [ ok ]
* Starting nginx ...                                                                                  [ ok ]
#
</console>
</console>
You can edit spectrwm.conf to suit your needs. The file is thoroughly commented so you won't feel lost.


== MediaWiki from portage ==
==== Bindings (default) ====
There are mediawiki ebuilds in portage, if you like your site breaking upon emerge --sync && emerge -avuND world:
{{Note|Usually the M (Modus) key is either alt or the super key.}}
From the man page:


<console>###i## emerge mediawiki</console>
BINDINGS


With out the vhost flag the files will be dropped into /var/www/localhost/htdocs/mediawiki.
    spectrwm provides many functions (or actions) accessed via key or mouse
    bindings.


== Download MediaWiki ==
    The current mouse bindings are described below:
{| class="wikitable sortable"
|-
! Mouse binding  !! description
|-
| M1 || Focus window
|-
| M-M1 || Move window
|-
| M-M3|| Resize window
|-
| M-S-M3|| Resize window while maintaining it centered
|}                     


We're getting close. Now, head to http://www.mediawiki.org/wiki/Download and copy the link address for the latest version of MediaWiki, currently 1.19.1 at the time this was written. Let's download the archive to <code>/var/tmp</code>:
    The default key bindings are described below:
 
<console>
# ##i##cd /var/tmp
# ##i##wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.1.tar.gz
</console>
 
== Extract MediaWiki ==
 
We now have all the Web, database and email infrastructure enabled that we need. Heading to the IP address of your server should result in a 404 - Not Found error in your Web browser. Time to extract and configure MediaWiki itself:
 
<console>
# ##i##su docs
$ ##i##cd /var/tmp
$ ##i##tar xvf ./mediawiki-1.19.1.tar.gz
$ ##i##mv mediawiki-1.19.1 ~/public_html
</console>
 
== MediaWiki from GIT ==
 
Alternatively, we can download the code from the git repository:
 
<console>
# ##i##su docs
$ ##i##cd ~
$ ##i##git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git public_html
</console>
 
Specific stable versions of MediaWiki are tracked using 'tags'. These are analogous to the tarball releases. We can see the versions available with:
<console>
$ ##i##cd public_html
$ ##i##git tag -l | sort -V
</console>
 
To use a specific tag (1.19.1):
<console>
$ ##i##git checkout 1.19.1
</console>
 
== Initial Web Config ==
 
You will now be able to load the URL of your server in your Web browser and configure MediaWiki through the Web user interface. Complete the '''full''' installation process and be sure to specify that you are using XCache for caching. Once you go through this process, the Web installation process will provide you with a <code>LocalSettings.php</code> file, which you should place in <code>/home/docs/public_html</code>. The <code>LocalSettings.php</code> file can also be manually edited and used to enable MediaWiki features and extensions.
 
== Tips and Tricks ==
 
=== Alternate Main Page ===
To define your default landing page for mediawiki.
edit: localhost/wiki/MediaWiki:Mainpage
 
example: http://www.funtoo.org/MediaWiki:Mainpage
 
=== Show Php handler, Database & Plugins Used ===
To show which plugins are installed on a wiki, browse localhost/wiki/Special:Version.
 
example: http://funtoo.org/Special:Version
 
=== Sidebar ===
To define your own sidebar links, edit localhost/wiki/MediaWiki:Sidebar
 
links follow the page|text format.  example:
http://www.funtoo.org/MediaWiki:Sidebar
 
=== Rss subscriptions ===
Rss is handy to track page changes.  all individual pages can be tracked for changes under mediawiki.  For example, if you wish to track your user talk pages via rss, go to your talk page, navigate to history.  add &feed=rss to the end.  &feed=atom is also valid.
 
http://www.funtoo.org/index.php?title=User:Drobbins&action=history&feed=rss
 
 
=== ArticlePath ===
 
By default, MediaWiki pages will have a URL of <code>wiki.myserver.com/index.php?title=PageName</code>. With a few minor tweaks, you can tell MediaWiki to use <code>wiki.myserver.com/PageName</code> instead. Here's how. Open up <code>LocalSettings.php</code> and search for the <code>$wgScriptPath</code> line. This part of the config will look like this:
 
<pre>
$wgScriptPath      = "";
$wgScriptExtension  = ".php";
</pre>
 
Change this part of the file to look like this:
 
<pre>
$wgScriptPath      = "";
$wgArticlePath      = "/$1";
$wgUsePathInfo      = true;
$wgScriptExtension  = ".php";
</pre>
 
The old-style URLs will still work, but the shorter more intuitive URLs will now be used for all wiki links.
 
=== $wgSpamRegex ===
 
You may find that your wiki is the target of spammers. The easiest way to combat spam is to set <code>$wgSpamRegex</code> in <code>LocalSettings.php</code>, like so:
 
<pre>
$wgSpamRegex = "/badword1|badword2|badword3/i"
</pre>
 
This will perform a case-insensitive match against the bad words and block anyone from saving edits that contain these words.
 
=== DNS Blacklist ===
 
MediaWiki also has the ability to consult a DNS blacklist to prevent known forum and wiki spam sites from performing any edits on your wiki. To enable this capability, add the following to <code>LocalSettings.php</code>:
 
<pre>
$wgEnableDnsBlacklist = true;
$wgDnsBlacklistUrls = array( 'xbl.spamhaus.org', 'opm.tornevall.org' );
</pre>
 
You may notice a significant decrease in spam posts.
 
=== $wgRawHtml ===
 
{{warning|raw html can be dangerous regarding injecting spam/malicious/fishing pages.  use with care!}}
 
To allow any raw html inserted into your wiki:
 
{{file|name=/var/www/localhost/htdocs/mediawiki/LocalSettings.php|lang=php|desc=enabling arbitrary html|body=
...
$wgRawHtml = "true";
}}
 
=== $wgServer ===
 
Here is an important tip -- the <code>$wgServer</code> variable in <code>LocalSettings.php</code> defines the URL of your MediaWiki installation. MediaWiki will encode this within its HTML replies, which means that the Web browser from which you are accessing MediaWiki must be able to reach your server using this address, or pages will not display. This is not a security feature in any way, but a configuration issue. For example, if <code>$wgServer</code> is set to <code>10.0.1.128</code>, then the only systems that will be able to access your MediaWiki installation are those for which <code>10.0.1.128</code> resolves to your MediaWiki installation.  The same is true of non-IP <code>$wgServer</code> entries like <code>wiki.mysite.com</code>. If you are setting up a test wiki, you may need a temporary entry in a desktop's <code>/etc/hosts</code> file so that it can interact with the wiki properly before DNS is set up.
 
=== $wgLogo ===
 
If you want to change the wiki logo, edit <code>LocalSettings.php</code> and replace $wgLogo with the location of the image you want to use:
 
<pre>
$wgLogo = "image.png"
</pre>
{{fancynote| The above references the file <code>image.png</code> in the directory <code>/home/docs/public_html</code>}}
 
=== MySQL wildcard searches ===
Recent versions of mediawiki have broken search results.
 
{{file|name=/var/www/localhost/htdocs/mediawiki/includes/search/SearchMySQL.php|lang=php|desc=line 175 modification to repair mysql searches|body=
if ( trim( $term ) === '' ) {
return null;
} else {
$term = $term . '*';
}
}}
 
=== License Badges ===
You can have licenses displayed with your pages.
 
{{file|name=/var/www/localhost/htdocs/mediawiki/LocalSettings.php|lang=php|desc=add license badge to articles|body=
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "http://creativecommons.org/licenses/by-sa/3.0/"; //external source explaining license
$wgRightsText = "Creative Commons Attribution Share Alike"; //alternate text on the image
$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-sa.png";
}}
 
There are 6 possible badge images
 
* {$wgStylePath}/common/images/cc-0.png
* {$wgStylePath}/common/images/cc-by-nc-sa.png
* {$wgStylePath}/common/images/cc-by-sa.png
* {$wgStylePath}/common/images/cc-by.png
* {$wgStylePath}/common/images/gnu-fdl.png
* {$wgStylePath}/common/images/public-domain.png
 
=== Importing Google Fonts & External Css ===
Googles font api is excellent.  all you have to do is look through https://www.google.com/fonts# and select which font you want.  To the bottom right of the font pane is a little box with an arrow pointing right.  click the arrow, and follow step 1, and 2.  for step 3 you need to select @import.  on your wiki navigate to localhost/MediaWiki:Common.css or a specific skin to add the css to like localhost/MediaWiki:Vector.css and enter this code.
 
{{file|name=localhost/MediaWiki:Common.css|lang=css|desc=|body=
@import url(http://fonts.googleapis.com/css?family=Lobster);
 
.firstHeading, #mw-head, .body ul li {
font-family: 'Lobster', cursive;
}
}}
 
External css is similar, if you wanted to bootswatch your wiki navigate to http://www.bootstrapcdn.com/#bootswatch_tab select which cdn and insert it into your common css.
 
{{file|name=localhost/MediaWiki:Common.css|lang=css|desc=yeti for the sasquatch hunter in you|body=
@import url(//maxcdn.bootstrapcdn.com/bootswatch/3.2.0/yeti/bootstrap.min.css);
}}


== Media ==
          M-S-<Return>        term
{{#widget:YouTube|playlist=PL7ABDor6eEgc2U9PH4Irty4K8mqUgkvDq}}
          M-p                menu
          M-S-q              quit
          M-q                restart
          M-<Space>          cycle_layout
          M-S-<\>            flip_layout
          M-S-<Space>        stack_reset
          M-h                master_shrink
          M-l                master_grow
          M-,                master_add
          M-.                master_del
          M-S-,              stack_inc
          M-S-.              stack_dec
          M-<Return>          swap_main
          M-j, M-<TAB>        focus_next
          M-k, M-S-<TAB>      focus_prev
          M-m                focus_main
          M-S-j              swap_next
          M-S-k              swap_prev
          M-b                bar_toggle
          M-S-b              bar_toggle_ws
          M-x                wind_del
          M-S-x              wind_kill
          M-<1-9,0,F1-F12>    ws_<1-22>
          M-S-<1-9,0,F1-F12>  mvws_<1-22>
          M-<Keypad 1-9>      rg_<1-9>
          M-S-<Keypad 1-9>    mvrg_<1-9>
          M-<Right>          ws_next
          M-<Left>            ws_prev
          M-<Up>              ws_next_all
          M-<Down>            ws_prev_all
          M-a                ws_next_move
          M-S-<Left>          ws_prev_move
          M-S-<Up>            ws_prior
          M-S-<Right>        rg_next
          M-S-<Left>          rg_prev
          M-s                screenshot_all
          M-S-s              screenshot_wind
          M-S-v              version
          M-t                float_toggle
          M-S-<Delete>        lock
          M-S-i              initscr
          M-w                iconify
          M-S-w              uniconify
          M-S-r              always_raise
          M-v                button2
          M--                width_shrink
          M-=                 width_grow
          M-S--              height_shrink
          M-S-=               height_grow
          M-[                move_left
          M-]                move_right
          M-S-[              move_up
          M-S-]              move_down
          M-S-/              name_workspace
          M-/                search_workspace
          M-f                search_win


== External Resources ==
The action names and descriptions are listed below:
* http://www.mediawiki.org/wiki/Manual:System_administration
* http://www.mediawiki.org/wiki/Manual:Performance_tuning
* http://www.mediawiki.org/wiki/Help:Templates
* http://www.mediawiki.org/wiki/Transclusion


[[Category:Featured]]
          term              Spawn a new terminal (see PROGRAMS above).
[[Category:HOWTO]]
          menu              Menu (see PROGRAMS above).
[[Category:Official Documentation]]
          quit              Quit spectrwm.
[[Category:Ebuilds]]
          restart          Restart spectrwm.
          cycle_layout      Cycle layout.
          flip_layout      Swap the master and stacking areas.
          stack_reset      Reset layout.
          master_shrink    Shrink master area.
          master_grow      Grow master area.
          master_add        Add windows to master area.
          master_del        Remove windows from master area.
          stack_inc        Add columns/rows to stacking area.
          stack_dec        Remove columns/rows from stacking area.
          swap_main        Move current window to master area.
          focus_next        Focus next window in workspace.
          focus_prev        Focus previous window in workspace.
          focus_main        Focus on main window in workspace.
          swap_next        Swap with next window in workspace.
          swap_prev        Swap with previous window in workspace.
          bar_toggle        Toggle overall visibility of status bars.
          bar_toggle_ws    Toggle status bar on current workspace.
          wind_del          Delete current window in workspace.
          wind_kill        Destroy current window in workspace.
          ws_n              Switch to workspace n, where n is 1 through
                            workspace_limit.
          mvws_n            Move current window to workspace n, where n is 1
                            through workspace_limit.
          rg_n              Focus on region n, where n is 1 through 9.
          mvrg_n            Move current window to region n, where n is 1
                            through 9.
          ws_next          Switch to next workspace with a window in it.
          ws_prev          Switch to previous workspace with a window in it.
          ws_next_all      Switch to next workspace.
          ws_prev_all      Switch to previous workspace.
          ws_next_move      Switch to next workspace with the current window.
          ws_prev_move      Switch to previous workspace with the current
                            window.
          ws_prior          Switch to last visited workspace.
          rg_next          Switch to next region.
          rg_prev          Switch to previous region.
          screenshot_all    Take screenshot of entire screen (if enabled)
                            (see PROGRAMS above).
          screenshot_wind  Take screenshot of selected window (if enabled)
                            (see PROGRAMS above).
          version          Toggle version in status bar.
          float_toggle      Toggle focused window between tiled and floating.
          lock              Lock screen (see PROGRAMS above).
          initscr          Reinitialize physical screens (see PROGRAMS
                            above).
          iconify          Minimize (unmap) currently focused window.
          uniconify        Maximize (map) window returned by dmenu
                            selection.
          always_raise      When set tiled windows are allowed to obscure
                            floating windows.
          button2          Fake a middle mouse button click (mouse button
                            2).
          width_shrink      Shrink the width of a floating window.
          width_grow        Grow the width of a floating window.
          height_shrink    Shrink the height of a floating window.
          height_grow      Grow the height of a floating window.
          move_left        Move a floating window a step to the left.
          move_right        Move a floating window a step to the right.
          move_up          Move a floating window a step upwards.
          move_down        Move a floating window a step downwards.
          name_workspace    Name the current workspace.
          search_workspace  Search for a workspace.
          search_win        Search the windows in the current workspace.
{{EbuildFooter}}
{{EbuildFooter}}

Revision as of 02:54, November 17, 2014

Spectrwm

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.


   Note

Spectrwm was previously known as Scrotwm.

Introduction

From their page: spectrwm is a small dynamic tiling window manager for X11. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.


Installation

root # emerge x11-wm/spectrwm 

Xlockmore is also needed

root # emerge x11-misc/xlockmore


Setup

xinitrc

Edit ~/.xinitrc:

exec spectrwm

Copy /etc/spectrwm.conf to your home dir as an hidden file.

 $  cp /etc/spectrwm.conf ~/.spectrwm.conf

You can edit spectrwm.conf to suit your needs. The file is thoroughly commented so you won't feel lost.

Bindings (default)

   Note

Usually the M (Modus) key is either alt or the super key.

From the man page:

BINDINGS

    spectrwm provides many functions (or actions) accessed via key or mouse
    bindings.
    The current mouse bindings are described below:
Mouse binding description
M1 Focus window
M-M1 Move window
M-M3 Resize window
M-S-M3 Resize window while maintaining it centered
    The default key bindings are described below:
          M-S-<Return>        term
          M-p                 menu
          M-S-q               quit
          M-q                 restart
          M-<Space>           cycle_layout
          M-S-<\>             flip_layout
          M-S-<Space>         stack_reset
          M-h                 master_shrink
          M-l                 master_grow
          M-,                 master_add
          M-.                 master_del
          M-S-,               stack_inc
          M-S-.               stack_dec
          M-<Return>          swap_main
          M-j, M-<TAB>        focus_next
          M-k, M-S-<TAB>      focus_prev
          M-m                 focus_main
          M-S-j               swap_next
          M-S-k               swap_prev
          M-b                 bar_toggle
          M-S-b               bar_toggle_ws
          M-x                 wind_del
          M-S-x               wind_kill
          M-<1-9,0,F1-F12>    ws_<1-22>
          M-S-<1-9,0,F1-F12>  mvws_<1-22>
          M-<Keypad 1-9>      rg_<1-9>
          M-S-<Keypad 1-9>    mvrg_<1-9>
          M-<Right>           ws_next
          M-<Left>            ws_prev
          M-<Up>              ws_next_all
          M-<Down>            ws_prev_all
          M-a                 ws_next_move
          M-S-<Left>          ws_prev_move
          M-S-<Up>            ws_prior
          M-S-<Right>         rg_next
          M-S-<Left>          rg_prev
          M-s                 screenshot_all
          M-S-s               screenshot_wind
          M-S-v               version
          M-t                 float_toggle
          M-S-<Delete>        lock
          M-S-i               initscr
          M-w                 iconify
          M-S-w               uniconify
          M-S-r               always_raise
          M-v                 button2
          M--                 width_shrink
          M-=                 width_grow
          M-S--               height_shrink
          M-S-=               height_grow
          M-[                 move_left
          M-]                 move_right
          M-S-[               move_up
          M-S-]               move_down
          M-S-/               name_workspace
          M-/                 search_workspace
          M-f                 search_win

The action names and descriptions are listed below:

          term              Spawn a new terminal (see PROGRAMS above).
          menu              Menu (see PROGRAMS above).
          quit              Quit spectrwm.
          restart           Restart spectrwm.
          cycle_layout      Cycle layout.
          flip_layout       Swap the master and stacking areas.
          stack_reset       Reset layout.
          master_shrink     Shrink master area.
          master_grow       Grow master area.
          master_add        Add windows to master area.
          master_del        Remove windows from master area.
          stack_inc         Add columns/rows to stacking area.
          stack_dec         Remove columns/rows from stacking area.
          swap_main         Move current window to master area.
          focus_next        Focus next window in workspace.
          focus_prev        Focus previous window in workspace.
          focus_main        Focus on main window in workspace.
          swap_next         Swap with next window in workspace.
          swap_prev         Swap with previous window in workspace.
          bar_toggle        Toggle overall visibility of status bars.
          bar_toggle_ws     Toggle status bar on current workspace.
          wind_del          Delete current window in workspace.
          wind_kill         Destroy current window in workspace.
          ws_n              Switch to workspace n, where n is 1 through
                            workspace_limit.
          mvws_n            Move current window to workspace n, where n is 1
                            through workspace_limit.
          rg_n              Focus on region n, where n is 1 through 9.
          mvrg_n            Move current window to region n, where n is 1
                            through 9.
          ws_next           Switch to next workspace with a window in it.
          ws_prev           Switch to previous workspace with a window in it.
          ws_next_all       Switch to next workspace.
          ws_prev_all       Switch to previous workspace.
          ws_next_move      Switch to next workspace with the current window.
          ws_prev_move      Switch to previous workspace with the current
                            window.
          ws_prior          Switch to last visited workspace.
          rg_next           Switch to next region.
          rg_prev           Switch to previous region.
          screenshot_all    Take screenshot of entire screen (if enabled)
                            (see PROGRAMS above).
          screenshot_wind   Take screenshot of selected window (if enabled)
                            (see PROGRAMS above).
          version           Toggle version in status bar.
          float_toggle      Toggle focused window between tiled and floating.
          lock              Lock screen (see PROGRAMS above).
          initscr           Reinitialize physical screens (see PROGRAMS
                            above).
          iconify           Minimize (unmap) currently focused window.
          uniconify         Maximize (map) window returned by dmenu
                            selection.
          always_raise      When set tiled windows are allowed to obscure
                            floating windows.
          button2           Fake a middle mouse button click (mouse button
                            2).
          width_shrink      Shrink the width of a floating window.
          width_grow        Grow the width of a floating window.
          height_shrink     Shrink the height of a floating window.
          height_grow       Grow the height of a floating window.
          move_left         Move a floating window a step to the left.
          move_right        Move a floating window a step to the right.
          move_up           Move a floating window a step upwards.
          move_down         Move a floating window a step downwards.
          name_workspace    Name the current workspace.
          search_workspace  Search for a workspace.
          search_win        Search the windows in the current workspace.