• Stars
    star
    135
  • Rank 269,297 (Top 6 %)
  • Language
    TypeScript
  • Created almost 7 years ago
  • Updated 10 months ago

Reviews

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

Repository Details

gnome-shell extension for throwing windows around efficiently

Slinger:

Slinger is a simple app for window manipulation. It provides multiple methods (via both mouse and keyboard) for moving and sizing windows quickly. Here's a quick screencast. The main interface is a circular popup menu which allows quick selection of various presets (half screen + quarter screen), plus plenty of mouse + keyboard shortcuts for moving & resizing.


Global hotkeys

  • win+a: show slinger
  • win+shift+8 (asterisk): splat windows - applies a basic tiling layout so you can see all windows
  • win+z: toggle maximize
  • win+j: next window
  • win+k: previous window
  • win+shift+j: swap with next
  • win+shift+k: swap with previous
  • win+alt+j: next workspace
  • win+alt+k: previous workspace
  • win+alt+shift+j: bring window to next workspace
  • win+alt+shift+k: bring window to previous workspace

Slinger menu:

  • inner ring: maximize / minimize

  • sides: half screen (top/bottom/left/right)

  • diagonals: quarter screen

  • arrows / hjkl: select a preset

  • space/tab: enter modify mode

Modify mode:

  • ctrl+move: move window
  • alt+move: resize closest corner

Modifiers:

These can be uses as-is in "modify mode", or used globally (without showing slinger) by also holding down win (super)

  • equals: shrink
  • minus: grow
  • h: move left
  • l: move right
  • u: move down
  • i: move up
  • shift+h: shrink horizontal
  • shift+l: grow horizontal
  • shift+i: shrink vertical
  • shift+u: grow vertical

Build/install instructions

Install required dependencies:

  • tsc (typescript)

Compile:

tools/gup compile

Install:

ln -sfn $PWD/extension ~/.local/share/gnome-shell/extensions/[email protected]

History.

Slinger was born out of shellshape, a Gnome Shell extension I created for automatically tiling windows. Shellshape is useful, but it's also buggy and has a lot of ugly interactions with the window system (which itself has plenty of bugs).

Slinger is a simpler layout utility, which maintains many of the window manipulation shortcuts but explicitly does not do any automatic window management - it only does something when you tell it to.

In practice, I've found that slinger is slightly slower than shellshape, but allows me more control (it never gets in my way, and I end up with windows just as I want them rather than "close enough").

Truthfully, slinger was created because shellshape is not worth my time to maintain. There are many unfixable bugs due to the interaction with gnome-shell, and there is a frustrating amount of bookkeeping state and workarounds that need to be maintained so shellshape has an accurate view of the world at all time. Slinger was designed to be stateless, which makes for a simpler codebase with less bugs.

OSX version

Another benefit of a stateless app is that it's more easily portable to different window systems. There is an OSX version here, which lacks a few features, but mostly works.

More Repositories

1

python-readability

[abandoned] python port of arc90's readability bookmarklet
Python
527
star
2

shellshape

tiling window manager extension for gnome-shell
TypeScript
397
star
3

opam2nix

Generate nix expressions from opam packages
OCaml
93
star
4

gnome-shell-impatience

speed up gnome-shell animations
JavaScript
78
star
5

gnome-shell-scroll-workspaces

Switch workspaces by scrolling in the top panel
Python
71
star
6

runix

Nix
59
star
7

autonose

autotest-like runner for nosetests
Python
58
star
8

pea

[abandoned] Tiny BDD framework for python
Python
58
star
9

gup

A better make, inspired by djb's redo.
Python
50
star
10

piep

Bringing the power of python to stream editing
Python
48
star
11

nix-wrangle

Wrangle your nix dependencies
Haskell
40
star
12

edit-server

an edit server compatible with TextAid and "Edit with Emacs" chrome extensions
Python
32
star
13

opam2nix-packages

nix expressions for the official opam repository, using opam2nix
Nix
27
star
14

supergenpass

[abandoned] reimplementation of supergenpass algorithm in python, with OS integration
Python
24
star
15

mocktest

powerful mock, expectation and unit test helpers for python
Python
22
star
16

nix-pin

nixpkgs development utility
Python
20
star
17

coffee-spec

[abandoned] spec runner for coffee-script
CoffeeScript
18
star
18

unfluff

[abandoned] statistical HTML content extraction in python
Python
18
star
19

dhall-render

Render multiple files from dhall expressions
Ruby
18
star
20

termstyle

a dirt-simple terminal-colour library for python
Python
15
star
21

stereoscoper

Bulk process stereoscopic (3d) images
Python
10
star
22

fetlock

Convert any lockfile to a nix expression
Rust
9
star
23

pyperclip

improved fork of coffeeghost's `pyperclip` module
Python
9
star
24

nix-update-source

Fetch and automatically update nix derivation sources
Python
9
star
25

gsel

Python
8
star
26

vdoml

virtual DOM + OCaml
OCaml
8
star
27

node-seccomp

C++
7
star
28

foperator

Functional k8s operator framework, in scala
Scala
7
star
29

app-customisations

Mostly dotfiles and whatnot.
Python
6
star
30

py-dataflow

[abandoned] a simple dataflow library for python
Python
5
star
31

vim-watch

run stuff whenever vim saves a file
Python
5
star
32

paragram

an erlang-style concurrency framework for python
Python
5
star
33

repr.js

better stringification for javascript
JavaScript
5
star
34

netproxrc

netrc-enabled https proxy for nix
Go
5
star
35

passe

SuperGenPass-compatible password utility
OCaml
5
star
36

appengine-auth

[abandoned] Google App Engine authorisation for non-web based python applications
Python
4
star
37

vim-stratifiedjs

vim support for sjs
Vim Script
4
star
38

python-irank

rate your music with whatever criteria you like
Python
4
star
39

vim-background-make

[abandoned] a vim plugin to run :make in the background, unobtrusively.
Vim Script
4
star
40

pjkit

[abandoned] python-javascript bridge for webkit-gtk
Python
4
star
41

filepp

[abandoned] mirror of http://freecode.com/projects/filepp with minor changes for ZeroInstall
Perl
4
star
42

pagefeed-android

[abandoned] android app for pagefeed.appspot.com
Scala
3
star
43

pagefeed

[abandoned] the code behind pagefeed.appspot.com
Python
3
star
44

jquery-navim

[abandoned] vim-style keyboard navigation for page elements
JavaScript
3
star
45

bash-cached-completions

a configurable mecahnism for generating (and caching) bash completion words for arbitrary commands
Python
3
star
46

autorelease-tagger-action

Generate & tag versions based on git history
JavaScript
3
star
47

chored

Chores, sorted.
TypeScript
3
star
48

daglink

manage your symlinks
Python
3
star
49

zeroinstall-plugin-manager

plugin manager <runner> for zero-install applications
Python
3
star
50

0env

run a program or shell in the context of a ZeroInstall feed
Python
3
star
51

obligate.js

browser-side module implementation with Zero Install integration
Python
3
star
52

music-import

Pedantically set music filename, metadata and volume normalisation
Python
2
star
53

js-bakery

[abandoned]
JavaScript
2
star
54

net-sandbox

[abandoned] sandbox a process inside a new network namespace
Python
2
star
55

capsul

A minimal, type-safe alternative to (some of) akka.
Scala
2
star
56

htmlview

view html files (quickly)
Perl
2
star
57

simple_notify

[abandoned] a python inotify wrapper that's trivial to use
Python
2
star
58

savemytext.appspot.com

[abandoned] exactly what it says on the tin
JavaScript
2
star
59

self-update-action

Generic github action for self-updating codebases
TypeScript
2
star
60

0path

[abandoned] path manipulation for testing 0install packages
Python
2
star
61

simple-daemon

[abandoned] a simple wrapper around start-stop-daemon to do the right thing most of the time
Python
2
star
62

csharp-quote-argv

C#
2
star
63

version

view (and modify) your project version in multiple commonly-used places
Python
2
star
64

nix-pin-example-sed

A sample repository for demonstrating nix-pin
C
1
star
65

savemytext

[abandoned] programs / plugins to use with savemytext.appspot.com
Python
1
star
66

sbt-strict-scope

Scala
1
star
67

0local

make a local implementation of a 0install feed
Python
1
star
68

eog-rate

Set ratings and tags in Eye of Gnome
Python
1
star
69

mountmon

[abandoned] run a command whenever you attach your kindle via USB
1
star
70

0template-packages

zero install package-implementation feed generator
Python
1
star
71

indent-finder

Fork of http://www.freehackers.org/Indent_Finder
C
1
star
72

dconf-user-overrides

manage your important dconf overrides as text files
Python
1
star
73

0release

[abandoned] 0release (a fork of http://repo.or.cz/w/0release.git)
Python
1
star
74

snip.hs

manage text snippets on the command line
Haskell
1
star
75

0find

[abandoned] 0install utility to find an implementation directory
Python
1
star
76

tail-logs

tail multiple logs (with tmux)
Python
1
star
77

jenkins-indicator

[abandoned] Jenkins Gnome Applet
Python
1
star
78

bash-escape

escape strings for use in shell scripting
Python
1
star
79

zeroinstall-ocaml-0compile

[abandoned] 0compile feed for 0install's ocaml parts (and dependencies)
Python
1
star
80

0downstream

create & maintain zeroinstall feeds for upstream projects
Python
1
star
81

auditspec

Scala
1
star
82

0compile-cabal-build

[abandoned] cabal-build wrapper for use with 0compile
Python
1
star
83

nosetests-runner

[abandoned] nosetests runner using 0install for plugin resolution
Python
1
star
84

backpressure-sensor

Measure backpressure in reactive streams pipelines
Scala
1
star
85

iysr

simple service monitor for systemd
Rust
1
star
86

0readme

populate a zero install feed with README contents
Python
1
star
87

vim-autotab

[abandoned] pretend everyone else agrees with your tab-loving ways
Vim Script
1
star
88

dumbattr

resiliant xattr-based metadata
Python
1
star
89

zero2pypi

create a pypi package from a zero install feed
Python
1
star
90

pycasa

[abandoned] read picasa metadata
Python
1
star
91

importwatcher

[abandoned] module import watcher for python
Python
1
star
92

indicate-task

create a notification applet for the duration of a process (task)
Python
1
star
93

dhall-ci

Reusable CI abstractions with dhall
Dhall
1
star
94

mapnix

Simple NixOS deployment
Python
1
star
95

status-check

Dirt simple notifications when periodic tasks fail to run
OCaml
1
star
96

node-smock

straightforward mocking for commonJS runtimes
JavaScript
1
star
97

mkzero

zero-install feed publishing utility
Python
1
star
98

gedit-plugins

[abandoned] gedit plugins made or modified by me
Python
1
star