= bug.n -- Tiling Window Manager
Joshua Fuhs, joten

bug.n is a
https://en.wikipedia.org/wiki/Tiling_window_manager[tiling window manager]
add-on for Microsoft Windows. It is written in the scripting language
http://ahkscript.org/download/[AutoHotkey].


== What it can do

* Provide layouts for resizing and moving windows, utilizing all available
  screen estate and customizable to your specific needs and workflow
* Provide views (i. e. virtual desktops) for showing only those windows, which
  you need to do your work.
* Dynamically resize and move your windows, applying a specified layout,
  without you having to care about moving them all by mouse
* Increase the available screen estate by hiding and therewith freeing up the
  space occupied by
** the Microsoft Windows Taskbar and
** the title bar for every single window
* and replacing all with a single slim status bar (-- but bug.n is not a shell
  replacement)
* Show window management information in the status bar:
** active window title
** active layout
** overview of the views used
* Show system information in the status bar:
** time and date
** CPU and memory usage
** disk and network load
** battery level
* Store your settings, i. e. which windows and layout were set on a specific
  view
* Support multiple monitors

== What it enables _you_ to do

* You can resize and move windows specified by the active layout and
  initialized by hotkey.
* You can toggle the visibility of the Windows Taskbar.
* You can toggle the visibility of the Windows title bar of the active window.
* You can change the layout for the tiling window management suitable to your
  needs.
** *Tile*: Lay out all windows like tiles on a master area, which can be
   further split up, and a stacking area, where remaining windows can be stacked
   or shown side by side.
** *Monocle*: All windows are maximized and only one is shown at any time.
** *Floating*: Windows are not dynamically tiled.
* You can further customize the layouts for each view.
* You can move windows to another view (virtual desktop) by tagging them with a
  number.
* You can share windows between views by tagging them with more than one
  number.
* You can move between views, hiding the windows, you do not want to see, and
  showing those, you want to see, by pressing a simple hotkey.


== Installing and running bug.n

*Requirements*

* Microsoft Windows 2000 or higher

If running bug.n from source as a script:

* http://ahkscript.org/download/[AutoHotkey]

There is no installation wizard for bug.n. If you downloaded the repository
from https://github.com/fuhsjr00/bug.n[GitHub] as a zip file and unpacked it,
you should be able to run either the executbale as it is or the main script
(src\Main.ahk) with http://ahkscript.org/download/[AutoHotkey].

bug.n stores the session data (configuration, layout, window states and log) to
the user's APPDATA directory, e. g. C:\Users\joten\AppData\Roaming\bug.n.

Please see the https://github.com/fuhsjr00/bug.n/tree/master/doc[documentation]
or the https://github.com/fuhsjr00/bug.n/wiki[Wiki] for more information on
installing and running, customizing and using bug.n and for a list of changes
made with the current version, in particular the changes in the user interface
(configuration variables and hotkeys).


== License

bug.n is licensed under the GNU General Public License version 3. Please see
the https://github.com/fuhsjr00/bug.n/blob/master/LICENSE.asciidoc[LICENSE file]
for the full license text.


== Credits

bug.n and its documentation is written by Joshua Fuhs and joten, but some
source was copied from the AutoHotkey forum
(http://www.autohotkey.com/forum). These are explicitly marked in the source
code at the end of the appropriate section. Additionally the following listing
summarizes these sources (of ideas or code):

=== Patch ideas

* pitkali (http://pitkali.info/bugn):
** Sync window arrays on fussy events and unknown window ids
** Dialog detection upon manage
** Regular expression support in rules
** Window information handling patches
*** memory leaks
*** flickering windows

=== Ideas or concepts

* suckless.org: dwm (http://dwm.suckless.org)
* jgpaiva: GridMove (http://jgpaiva.donationcoders.com/gridmove.html)
* Lexikos: WindowPad - multi-monitor window-moving tool (http://www.autohotkey.com/forum/topic21703.html)

=== Code snippets

* fures: System + Network monitor - with net history graph (http://www.autohotkey.com/community/viewtopic.php?p=260329)
* maestrith: Script Writer (http://www.autohotkey.net/~maestrith/Script Writer/)
* PhiLho: AC/Battery status (http://www.autohotkey.com/forum/topic7633.html)
* Pillus: System monitor (HDD/Wired/Wireless) using keyboard LEDs (http://www.autohotkey.com/board/topic/65308-system-monitor-hddwiredwireless-using-keyboard-leds/)
* Sean:
** CPU LoadTimes (http://www.autohotkey.com/forum/topic18913.html)
** Network Download/Upload Meter (http://www.autohotkey.com/community/viewtopic.php?t=18033)
* SKAN:
** Crazy Scripting : Quick Launcher for Portable Apps (http://www.autohotkey.com/forum/topic22398.html)
** HDD Activity Monitoring LED (http://www.autohotkey.com/community/viewtopic.php?p=113890&sid=64d9824fdf252697ff4d5026faba91f8#p113890)
** How to Hook on to Shell to receive its messages? (http://www.autohotkey.com/forum/viewtopic.php?p=123323#123323)
* Unambiguous: Re-use WIN+L as a hotkey in bug.n (http://www.autohotkey.com/community/viewtopic.php?p=500903&sid=eb3c7a119259b4015ff045ef80b94a81#p500903)
