Skip to content

Commit

Permalink
0.1.7: user defined hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
sminez committed Jul 24, 2020
1 parent e819608 commit 6754934
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 19 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "penrose"
version = "0.1.6"
version = "0.1.7"
edition = "2018"
authors = ["sminez <[email protected]>"]
license = "MIT"
Expand Down
43 changes: 26 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,43 @@ multiple breaking changes as the public API stabilises. The example config file
will always be kept up to date so please refer to that for updating to newer
versions published to cargo.

I am currently using penrose as [my daily driver](https://github.com/sminez/my-penrose-config)
and actively working on the project: poking around in the guts of various
existing window managers, seeing what I like and what I want to incorporate.
Development may be a little sporadic depending on what my current work / home
commitments are but you can typically expect to see updates every few days
currently. I am trying to provide some demos and examples on
[youtube](https://www.youtube.com/channel/UC04N-5DxEWH4ioK0bvZmF_Q) as I go,
particularly when major new features are added.

If you don't mind a bare bones (_really_ bare bones) window manager then you can
take penrose for a spin using the config in the `examples` directory. You will
need to update the keybindings to launch your preferred terminal emulator and
program launcher and may want to adjust the floating window classes to handle
some additional programs.
take penrose for a spin using one of the set-ups in the `examples` directory.
You will need to update the keybindings to launch your preferred terminal
emulator and program launcher and may want to adjust the floating window classes
to handle some additional programs. The aim is to provide an Xmonad style
"extend with your own custom code" experience though obviously at present,
penrose has no where near the same number of out of the box libraries and
examples to work from so you will likely need to port over your favourite Xmonad
/ other WM features. If you are happy to do so, please raise a PR and I can
incorporate your favourite feature into some sort of `contrib` directory so that
others can use it as well.


#### Current functionality
As a non-exhaustive high-level summary, penrose currently supports the following
features:
- multi-monitor support
- dynamic layouts
- user defined hooks
- partial EWMH support (active window/desktop, number of desktops, desktop
names, window manager name, desktop for client)
- user defined layout functions (`side_stack`, `bottom_stack` and `paper` implemented)
- layout resizing and modification
- configurable window borders for focused / unfocused
- configurable gaps
- configurable keybindings (internal methods and external programs)
- workspaces
- moving clients between workspaces
- kill focused client
- cycle focus
- drag focused client through stack
- floating windows
- multi-monitor support

Please see the documentation for available WindowManager methods.


### Project Non-goals
Expand All @@ -59,9 +74,3 @@ some additional programs.
becoming _massively_ more complicated. As few moving parts as possible is
ideal. So, things that are easy to acomplish using the XCB api (key bindings,
simple rendering of a bar etc) are in, full on IPC via an exposed API is out.


### Current Work
See the [TODO](TODO) file in the root of the repo for next steps and ongoing work. I'm
trying to keep it mostly up to date but the docs/TODOs and the codebase may
diverge at points when I forget to update things. If in doubt, read the source.
2 changes: 1 addition & 1 deletion examples/minimal/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#[macro_use]
extern crate penrose;

use penrose::{Backward, ColorScheme, Config, Forward, Less, More, WindowManager, XcbConnection};
use penrose::{Backward, Config, Forward, Less, More, WindowManager, XcbConnection};

fn main() {
let config = Config::default();
Expand Down

0 comments on commit 6754934

Please sign in to comment.