• Stars
    star
    238
  • Rank 163,572 (Top 4 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tiling window manager

sdorfehs

(pronounced "starfish")

sdorfehs is a tiling window manager descended from ratpoison (which itself is modeled after GNU Screen).

sdorfehs divides the screen into one or more frames, each only displaying one window at a time but can cycle through all available windows (those which are not being shown in another frame).

Like Screen, sdorfehs primarily uses prefixed/modal key bindings for most actions. sdorfehs's command mode is entered with a configurable keystroke (Control+a by default) which then allows a number of bindings accessible with just a single keystroke or any other combination. For example, to cycle through available windows in a frame, press Control+a then n.

License

sdorfehs retains ratpoison's GPL2 license.

Compiling

Run make to compile, and make install to install to /usr/local by default.

Wiki

The sdorfehs Wiki has tips and tricks, and information on troubleshooting problems.

Features

sdorfehs retains most of ratpoison's features while adding some more modern touches.

Screenshot

EWMH

sdorfehs strives to be a bit more EWMH compliant, supporting Atoms such as _NET_ACTIVE_WINDOW for compositors to dim unfocused windows, and _NET_WM_STATE_FULLSCREEN to allow full-screen programs like VLC and Firefox to take over the entire screen when requested (though still allowing the standard key bindings to switch windows or kill the program).

Virtual Screens

sdorfehs adds virtual screens which each have their own frame configuration and set of windows. Windows can be moved between virtual screens with vmove. By default, virtual screens can be selected (via the vselect command) with Control+a, F1 through Control+a, F12.

Bar

sdorfehs has a bar window which displays status messages or the output of certain commands. By default, this bar is made sticky with the barsticky setting which forces the bar to be permanently affixed to the top or bottom (configurable with the bargravity setting) of every virtual screen displaying the currently-focused window's title on the left side.

When the bar is sticky, it also enables a mechanism to display arbitrary text on the right side, similar to bar programs for other window managers like i3bar, dzen2, etc. sdorfehs creates a named pipe at ~/.config/sdorfehs/bar and any text input into the pipe shows up on the bar, making it easy to integrate with standard utilities which can just echo into the pipe. For an extremely simple example, a shell script can just echo the output of date into the pipe once a second.

while true; do
  date > ~/.config/sdorfehs/bar
  sleep 1
done

Bar input supports some markup commands from dzen2 in the format ^command(details) which affect the text following the command until the command is reset with ^command(). Currently supported commands:

  • ^ca(btn,cmd,btn2,cmd2): execute cmd when mouse button btn is clicked on this area of text, or cmd2 if button btn2 is clicked. Closing the area of clickable text can be done with ^ca().

  • ^fg(color): color the text following until the next ^fg() command. A line of text such as hello ^fg(green)world^fg()! will color hello with the default foreground color (set fgcolor), then world in green, and the exclamation point with the default color. Colors can be specified as their common name (blue) or as a hex code (#0000ff).

  • ^fn(font): change the font of the following text. Fonts must be specified in Xft format like set font such as ^fn(noto emoji:size=13). Resetting to the default font can be done with ^fn().

Gaps

sdorfehs enables a configurable gap (with set gap) between frames by default to look a bit nicer on larger displays.

Secure Remote Control

sdorfehs's -c command line option uses a more secure IPC mechanism than Ratpoison for sending commands to a running sdorfehs process, such as a script controlling sdorfehs to restore a particular layout.

Ratpoison's IPC only requires that a process create a new X11 window and set an Atom on it, which the parent Ratpoison process reads and executes the value of that Atom. An unprivileged application that only has an X11 connection (say a sandboxed Firefox child process) could set the RP_COMMAND_REQUEST Atom property on its existing window with a value of 0exec something to cause Ratpoison to read it and execute that shell command as the user id running Ratpoison.

sdorfehs's IPC mechanism switches to a Unix socket in the ~/.config/sdorfehs directory which ensures the requesting process has the ability to make socket connections and can write to that path.

More Repositories

1

xbanish

Hide the mouse cursor when typing and show it again when the mouse moves
C
499
star
2

endless

iOS web browser with a focus on security and privacy
Objective-C
260
star
3

payphone

notes and code for my payphone project
Perl
238
star
4

no_color

Website data for no-color.org
HTML
230
star
5

progman

progman.exe^H^H^H^H
C
184
star
6

dotfiles

ftp -o - https://jcs.org/move_in | sh -
Vim Script
133
star
7

login_duress

A BSD authentication module for duress passwords
C
102
star
8

ansiterm

dos 437 fonts and configs for viewing ANSI art in xterm
Shell
60
star
9

ssh-agent-card-prompt

A prompt for ssh-agent(1) when your Yubikey needs poking
C
43
star
10

spoonfish

Lua
33
star
11

msTERM

Terminal program for MailStation devices
Assembly
32
star
12

xdimmer

lightweight X11 utility to dim the screen and/or keyboard backlight when idle
C
30
star
13

ratpoison

jcs ratpoison hax
C
30
star
14

blueping

C
18
star
15

adium-pipeevent

Adium plugin to pipe events/messages to an external program
Objective-C
18
star
16

WiFiStation

Bringing WiFi to the Cidco Mailstation
C++
17
star
17

vmwh

vmware userland helper
C
15
star
18

sockhole

Ruby
14
star
19

halfmoon

a tiny mvc framework for php using php-activerecord
PHP
14
star
20

mailstation-tools

Tools for working with Cidco Mailstations
Assembly
14
star
21

classic-mac-fonts

Classic Mac OS Fonts in BDF and TTF format
14
star
22

twitframe

Website data for twitframe.com
HTML
13
star
23

notes

Ruby
13
star
24

mp3chap

command line tool for adding ID3 chapters to an MP3 file
Go
13
star
25

sdorfehs-bar

A bar script for sdorfehs
Ruby
12
star
26

xweathericon

C
11
star
27

xbatticon

Battery/charge status for progman
C
10
star
28

tpadnav

C
9
star
29

pullup-counter

A program to read a Phidget IR sensor and log pull-ups with Fitbit's API
Ruby
9
star
30

pce

fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
C
8
star
31

openbsd-ports

/usr/ports/mystuff
Makefile
8
star
32

sinatree

A skeleton web application configured to use Sinatra and ActiveRecord
Ruby
8
star
33

itunes-rsync

utility to sync an itunes playlist to a directory (like a mounted sd card/phone)
Ruby
7
star
34

qconsole

quake-style console with xterm
C
7
star
35

siriproxy-ecobee

SiriProxy plugin for controlling an Ecobee thermostat
Ruby
6
star
36

shadowebkit

an experiment in making a cocoa webkit browser manageable under X11
Objective-C
6
star
37

xcalicon

Calendar/time for progman
C
6
star
38

MailStation-Example

Example program for the Cidco MailStation Z80 computer
Assembly
6
star
39

arduboy-1010

1010 for Arduboy
C++
5
star
40

WiFiPPP

ESP8266-based WiFi serial modem emulator ROM
C++
5
star
41

pixelclock

a small clock for X11 that displays time as pixels
C
5
star
42

mutt

mutt stable branch with some hacks
C
4
star
43

garbagefm

CMS for the late garbage.fm
PHP
4
star
44

eyetunes

a tiny webserver used to display the current itunes song
Ruby
4
star
45

logicmail

git clone of logicmail with some fixes/features added
Java
3
star
46

itrc

fork of iTunes Remote Control with bugfixes and enhancements
C
3
star
47

openbsd-commitid

script to retroactively add commitids to past openbsd commits
Shell
3
star
48

swoopowned

swoopo.com bid watcher and automated bidder
JavaScript
3
star
49

slock

slock with dpms and other tweaks
C
2
star
50

chibug.org

Website content for chibug.org
CSS
2
star
51

pflightbar

Flash the Chrome EC lightbar when pf blocks a packet
C
2
star
52

adafruit_fourscreen

Utilities for drawing on 4 Adafruit 8x8 LED Backpack displays as one
Ruby
1
star
53

minivmac

C
1
star
54

chronosync

Utility to set the time on a Hayes Stack Chronograph
C
1
star
55

qemu

C
1
star