- Adds settings for minimum # of active/eligible windows to be open before tiling is enforced. This helps prevent first/single windows from spanning the entire ultrawide screen.
- Adds setting to restrict floating window dimensions on ultrawide monitors. Can set limit that if your current resolution exceeds this # to apply the limits. In my case my monitor is 5160x1440, the default value is 5140. This option is important so if switch from ultrawide to laptop screen window sizes are not restricted. Otherwise new windows will be created and sized to the max resolution you set here.
- Works on GNOME 3.36+ (feature-freeze) and 40+. X11 and Wayland
- Tree-based tiling with vertical and horizontal split containers similar to i3-wm and sway-wm
- Vim-like keybindings for navigation/swapping windows/moving windows in the containers
- Drag and drop tiling
- Support for floating windows, smart gaps and focus hint
- Customizable shortcuts in extension preferences
- Some support for multi-display
- Tiling support per workspace
- Update hint color scheme from preferences
- Stacked tiling layout
- Swap current window with the last active window
- Auto Split or Quarter Tiling
- Show/hide tab decoration via keybinding forge-ext#180
- Window resize using keyboard shortcuts
- Does not support dynamic workspaces
- Does not support vertical monitor setup
- Build it yourself via
make installormake dev. - Download from GNOME extensions website.
- AUR Package - thanks to @Radeox
- Fedora Package - thanks to @carlwgeorge
See the acceptable key combinations on the wiki
| Action | Shortcut |
|---|---|
| Increase active window size left | <Ctrl> + <Super> + y |
| Decrease active window size left | <Ctrl> + <Shift> + <Super> + o |
| Increase active window size bottom | <Ctrl> + <Super> + u |
| Decrease active window size bottom | <Ctrl> + <Shift> + <Super> + i |
| Increase active window size top | <Ctrl> + <Super> + i |
| Decrease active window size top | <Ctrl> + <Shift> + <Super> + u |
| Increase active window size right | <Ctrl> + <Super> + o |
| Decrease active window size right | <Ctrl> + <Shift> + <Super> + y |
| Open preferences | <Super> + period |
| Toggle tiling mode | <Super> + w |
| Focus left | <Super> + h |
| Focus right | <Super> + l |
| Focus up | <Super> + k |
| Focus down | <Super> + j |
| Swap current window with last active | <Super> + Return |
| Swap active window left | <Ctrl> + <Super> + h |
| Swap active window right | <Ctrl> + <Super> + l |
| Swap active window up | <Ctrl> + <Super> + k |
| Swap active window down | <Ctrl> + <Super> + j |
| Move active window left | <Shift> + <Super> + h |
| Move active window right | <Shift> + <Super> + l |
| Move active window up | <Shift> + <Super> + k |
| Move active window down | <Shift> + <Super> + j |
| Split container horizontally | <Super> + z |
| Split container vertically | <Super> + v |
| Toggle split container | <Super> + g |
| Gap increase | <Ctrl> + <Super> + Plus |
| Gap decrease | <Ctrl> + <Super> + Minus |
| Toggle focus hint | <Super> + x |
| Toggle active workspace tiling | <Shift> + <Super> + w |
| Toggle stacked layout | <Shift> + <Super> + s |
| Toggle tabbed layout | <Shift> + <Super> + t |
| Show/hide tab decoration | <Ctrl> + <Alt> + y |
| Activate tile drag-drop | Start dragging - Mod key configuration in prefs |
| Snap active window left two thirds | <Ctrl> + <Alt> + e |
| Snap active window right two thirds | <Ctrl> + <Alt> + t |
| Snap active window left third | <Ctrl> + <Alt> + d |
| Snap active window right third | <Ctrl> + <Alt> + g |
| Persist toggle floating for active window | <Super> + c |
| Persist toggle floating for active window and its window class | <Super><Shift> + c |
For any shortcut conflicts, the user has to manually configure those for now from the
GNOME Control Center > Keyboard > Customize Shortcuts. forge-ext#37
- Window Overrides:
$HOME/.config/forge/config/windows.json - Stylesheet Overrides:
$HOME/.config/forge/stylesheet/forge/stylesheet.css
GNOME Shell has built in support for workspace management and seems to work well - so Forge will not touch those.
User is encouraged to bind the following:
- Switching/moving windows to different workspaces
- Switching to numbered, previous or next workspace
- The
mainbranch contains gnome-4x code. - The
legacyandgnome-3-36are the same and is now the source for gnome-3x.
- Install NodeJS 16+
- Install
gettext - Run
npm install - Commands:
# Compile and override the gnome-shell update repo
make dev
# Or run below, and restart the shell manually
make build && make debug && make install
# X11 - build from source and restarts gnome-shell
make test-x
# Wayland - build from source and starts a wayland instance (no restart)
make test-wayland
# Formatting, when you do npm install,
# husky gets installed should force prettier formatting during commit
npm run format- Please be nice, friendly and welcoming on discussions/tickets.
- See existing Issues, or create a new Issue with the "Bug report" format if it doesn't exist.
Thank you to:
- Forge extension contributors
- Michael Stapelberg/contributors for i3
- System76/contributors for pop-shell
- ReworkCSS/contributors for css-parse/css-stringify
