about summary refs log tree commit diff stats
path: root/dwm.html
blob: d1602fb15989743fc400aedd738cd8ada25477cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<html>
	<head>
		<title>dwm - dynamic window manager</title>
		<meta name="author" content="Anselm R. Garbe">
		<meta name="generator" content="ed">
		<meta name="copyright" content="(C)opyright 2006 by Anselm R. Garbe">
		<style type="text/css">
			body {
				color: #000000;
				font-family: sans-serif;
				margin: 20px 20px 20px 20px;
			}
		</style>
	</head>
	<body>
		<center>
			<img src="dwm.png"/><br />
			<h3>dynamic window manager</h3>
		</center>
		<h3>Description</h3>
		<p>
		dwm is a dynamic window manager for X11.
		</p>
		<h3>Philosophy</h3>
		<p>
		As founder and main developer of wmii I came to the conclusion that
		wmii is too clunky for my needs. I don't need so many funky features
		and all this hype about remote control through a 9P service, I only
		want to manage my windows in a simple, but dynamic way. wmii never got
		finished because I listened to users, who proposed arbitrary ideas I
		considered useful. This resulted in an extreme <a href="http://www.jwz.org/doc/cadt.html">CADT</a>
		development model, which was a mistake. Thus the philosophy of
		dwm is simply <i>to fit my needs</i> (maybe yours as well). That's it.
		</p>
		<h3>Differences to wmii</h3	
		<p>
		In contrast to wmii, dwm is only a window manager, and nothing else.
		Hence, it is much smaller, faster and simpler.
		</p>
		<ul>
			<li>
			dwm has no 9P support, no status bar, no menu, no editable tagbars,
			no shell-based configuration and remote control and comes without
			any additional tools like printing the selection or warping the
			mouse.
			</li>
			<li>
			dwm is only a single binary, it's source code is intended to never
			exceed 2000 SLOC.
			</li>
			<li>
			dwm is customized through editing its source code, that makes it
			extremely fast and secure - it does not process any input data which
			hasn't been known at compile time, except window title names.
			</li>
			<li>
			dwm is based on tagging and dynamic window management (however simpler
			than wmii or larswm).
			</li>
			<li>
			dwm don't distinguishes between layers, there is no floating or
			managed layer. Wether the clients of currently selected tag are
			managed or not, you can re-arrange all clients on the fly. Popup-
			and fixed-size windows are treated unmanaged. 
			</li>
			<li>
			dwm uses 1-pixel borders to provide the maximum of screen real
			estate to clients. Small titlebars are only drawn in front of unfocused
			clients.
			</li>
			<li>
			garbeam <b>does not</b> want any feedback to dwm. If you ask for support,
			feature requests, or if you report bugs, they will be <b>ignored</b>
			with a high chance. dwm is only intended to fit garbeams needs.
			However you are free to download and distribute/relicense it, with the
			conditions of the <a href="http://wmii.de/cgi-bin/hgwebdir.cgi/dwm?f=f10eb1139362;file=LICENSE;style=raw">MIT/X Consortium license</a>.
			</li>
		</ul>
		<h3>Screenshot</h3>
		<p>
		<a href="http://wmii.de/shots/dwm-20060713.png">Click here for a screenshot</a> (20060713)
		</p>
		<h3>Development</h3>
		<p>
		dwm is actively developed in parallel to wmii. You can <a href="http://wmii.de/cgi-bin/hgwebdir.cgi/dwm">browse</a> its source code repository or get a copy using <a href="http://www.selenic.com/mercurial/">Mercurial</a> with following command:
		</p>
		<p>
		<code>hg clone http://wmii.de/cgi-bin/hgwebdir.cgi/dwm</code>
		</p>
		<p>--Anselm (20060713)</p>
	</body>
</html>
n class="w"> "Installing dscip..." set -x git clone "https://opencode.net/charadon/dscip" "$PROJECT_LOCATION" cd "$PROJECT_LOCATION" # Modifying config.sh with variables obtained from setup.sh sed -i "s}DSCIP_GITREPO=.*}DSCIP_GITREPO=\"$PROJECT_URL\"}g" config.sh sed -i "s/DSCIP_NAME=.*/DSCIP_NAME=\"$PROJECT_NAME\"/g" config.sh sed -i "s/DSCIP_BRANCH=.*/DSCIP_BRANCH=\"$PROJECT_BRANCH\"/g" config.sh # Copy templates. if [ ! "$TEMPLATE_DIR" = "" ]; then cp "$TEMPLATE_DIR"/* . fi # Done. Go back to CWD. set +x printf "\n" printf "\e[32mAll done. Be sure to add:\e[0m\n" echo "* * * * * $(dirname "$(readlink -f "$PROJECT_LOCATION")")/dscip" printf "\e[32mTo your crontab! Usually by using \`crontab -e\`\e[0m\n\n" printf "\e[32mAlternatively, you can run dscip as a daemon by modifying DSCIP_DAEMON in config.sh\n" printf "and creating a daemon for your system's init system.\e[0m\n\n" cd "$CWD" } # Non-interactive Mode set +u if [ ! "$1" = "" ]; then set -u while getopts ':n:d:u:b:t:lh' options; do case "${options}" in n) # Name PROJECT_NAME="$OPTARG" ;; d) # Directory to install to. PROJECT_LOCATION="$OPTARG" ;; u) # Git Repo URL PROJECT_URL="$OPTARG" ;; b) # Git Branch (Optional) PROJECT_BRANCH="$OPTARG" ;; t) # Template Directory (Optional) TEMPLATE_DIR="$OPTARG" ;; h) # Show Help Screen help_screen exit 0 ;; l) # Show License show_license exit 0 ;; *) ;; esac done check_config install_dscip exit 0 fi set -u # Interactive Mode echo "Welcome to DSCIP setup. This script will ask you a few questions." echo "Notes:" echo " 1. This script should be running as the user that will be building the software." echo " 2. Must have a cron daemon with the command: crontab -e, available." echo "By default, the script runs in interactive mode. But you can use command-line switches" echo "to use the set up script non-interactively. Use -h for more info." printf "\n" echo "If you feel you are ready. Press enter, otherwise press Ctrl-C to cancel." read -r ALL_CORRECT="false" question_name() { PROJECT_NAME="" while [ "$PROJECT_NAME" = "" ]; do printf "What is the name of the project?: " read -r PROJECT_NAME done } question_location() { PROJECT_LOCATION="/home/$USER/$PROJECT_NAME" NEW_PROJECT_LOCATION="" printf 'Where do you want to install DSCIP? (Default: %s): ' "$PROJECT_LOCATION" read -r NEW_PROJECT_LOCATION if [ "$NEW_PROJECT_LOCATION" = "" ]; then return 0 else PROJECT_LOCATION="$NEW_PROJECT_LOCATION" fi } question_giturl() { PROJECT_URL="" while [ "$PROJECT_URL" = "" ]; do printf "What is the URL of your Git Repo?: " read -r PROJECT_URL done } question_gitbranch() { PROJECT_BRANCH="master" printf 'What branch from the Git Repo do you want to use? (Default: %s): ' "$PROJECT_BRANCH" read -r PROJECT_BRANCH } question_templates() { TEMPLATE_DIR="" printf "If you have a template directory of the pre,post,build,failed.sh scripts.\nEnter it's location here, otherwise press Enter: " read -r TEMPLATE_DIR } question_allcorrect() { echo "Is all this information correct? Press the number to edit specific variables:" echo "1. Project Name: $PROJECT_NAME" echo "2. DSCIP Location: $PROJECT_LOCATION" echo "3. Git URL: $PROJECT_URL" echo "4. Git Branch: $PROJECT_BRANCH" echo "5. Template Directory: $TEMPLATE_DIR" printf "\nIf all information is correct. Press Enter.\nOtherwise, use a number and then press enter to edit: " } question_name printf "\n" question_location printf "\n" question_giturl printf "\n" question_gitbranch printf "\n" question_templates printf "\n" CHOICE="" while [ "$ALL_CORRECT" = "false" ]; do question_allcorrect read -r CHOICE printf "\n" case "$CHOICE" in 1) question_name ;; 2) question_location ;; 3) question_giturl ;; 4) question_gitbranch ;; 5) question_templates ;; *) ALL_CORRECT="true" ;; esac printf "\n" done check_config install_dscip