Git Product home page Git Product logo

sara's Introduction

sara

    .-. .-.
  ..:  |  ;,.
 (___`.|.'___)
 (   .'|`.   )
  `'/  |  \`'
    `-' `-'                                                                    hjw, ascii.co.uk/art 

What Is, Why Do

sara is a simple and lightweight tiling window manager. Originally started with the goal of making catwm actually work, it's now a slimmed down descendant of dwm with a bit of bspwm (sockets) for good measure, and some extra UNIX philosophy inspiration from monsterwm. Project goals are small, readable code, and flexibility/extensibility.

Features

Modes

  • Tiling mode (master window with right-hand vertical stack)
  • Monocle mode (fullscreen, but bar still visible)
  • Fullscreen mode (see limitations)

Behavior/Traits

  • dwm-like:
    • tags
    • Multihead support through Xinerama
    • easily hackable
    • patch-like:
      • attachaside
      • emptyview
      • hide vacant tags
      • movestack
      • pertag-like: layouts, master_size
      • singular borders
  • bspwm-like:
    • keyboard handling via external program (like sxhkd)
  • monsterwm-like:
    • output desktop information for external parsing (like with shell script + lemonbar)
  • worst

Design Limitations

  • No support for urgency, because nothing I do is urgent.
  • No ICCCM (found thanks to dylan). This is mostly felt in the lack of the applysizehints behavior that dwm has (ex. cmatrix won't redraw using larger window bounds if you give it more space via togglefs, changemsize, etc.)
  • No EWMH support, because fullscreening manually isn't so bad (see config.h).

Why Use Sara Over Other Small WM, X?

  • You're me and felt the need to write a tiling/dynamic window manager, even though there are plenty of them and will probably be 5 more by the time you finish this sentence. But I think the strengths are the unique combination of dwm's tag system, bspwm's socket approach to handling keyboard input, and a somewhat monsterwm-inspired information outputting setup that allows you to go real bar-crazy with things like lemonbar.
  • Relatedly, I wrote a set of bar scripts that go along with it! This includes a script for getting a lemonbar with Xft support setup running!

Help Me (Keybindings, Installation, Etc.)!

For more information, see the wiki!

Recent Statii

  • v3.0 - Some silly bugs have been squashed, but the major news is that the bar has been excised and you are now free to use whatever you wish, so long as you can make it work with the output of sara! See the example bar setup I have in this repo if you want to copy-paste and tweak for your system, or start from a template. This setup will produce a bar that is identical to the one in previous versions of sara.
  • v2.0 - Whole lotta UNIX philosophy up in here! Keybinds are controlled by sxhkd now! A little bit of bspwm in your dwm and sara sandwich! Pointer events (click into window, move and resize window) still handled by sara.
  • v1.0.{0-1} - Finished it enough to share with the class. Fixed a changecurrent bug.
  • v0.9.{2-9.5} - Multiple monitor support, viewall, reduced redundant variables, solved many enternotify edge cases, moveclient works by visibility, updategeom a la dwm 6.1, implemented rules, transient popup support, proper client killing, proper float stacking, code cleanup, mouse move and resize, lots of time wasted on easy (but sometimes obscure) bugs.
  • v0.8.{1-7.7} - No drw and no alpha behavior for the bar. Can send clients to just a desktop, can view multiple desktops at once, enternotify works (maybe), gaps, window borders, bar boxes removed. Code cleanup. Memory freeing fixed. buttonpress works!
  • v0.7 - The dwm way of clients has been implemented, bug-free (I think)!
  • v0.6.{0-5} - There's a bar with alpha support! Tags in the bar are updated properly by client movement, floating windows always appear raised, manual fullscreen toggling, no more swindows (the buggy version).
  • v0.5.{0-5} - Windows can be destroyed any damn way, name change, better master_size, modular layouts, gaps implemented, individual client floating behavior.
  • v0.2.{0-8} - Tagging works (no asterisks), no phantom windows, revamp of data structures, variable gap sizes, improvements to C programming (non-Xlib specific stuff), swindows are the true owners of Windows.
  • v0.1.{0-5} - It compiles, there's a cursor icon, quit()ing is functional (but at what cost?), moving clients to other desktops works, tagging to other desktops "works" (it compiles & no segfaults), there are phantom windows after removing clients from the current desktop.

Bugs

  • N O N E T H A T I K N O W O F !

To Do

  • My own art.
  • Quality documentation for getting started and customizing.
  • Extensive Valgrind analysis to try and reduce resource usage.

If you have some particular request, don't send me an e-mail, I won't do it! Bug/documentation reports are welcome, though!

sara's People

Contributors

gitluin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.