You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Arch Linux](https://aur.archlinux.org/packages/?O=0&K=gnome-shell-extension-pop-shell) (Using Yay as AUR helper):
82
+
-[Arch Linux](https://aur.archlinux.org/packages/?O=0&K=gnome-shell-extension-pop-shell) (Using Yay as AUR helper):
83
83
-`yay -S gnome-shell-extension-pop-shell`
84
84
- For precompiled binary version: `yay -S gnome-shell-extension-pop-shell-bin`
85
85
- For GitHub repository version: `yay -S gnome-shell-extension-pop-shell-git`
@@ -142,29 +142,19 @@ Switching focus to the left will calculate from the center of the east side of t
142
142
143
143
### Launcher
144
144
145
-
The launcher is summoned with `Super` + `/`. The search list displays matching windows based on their window name and title, and applications on the system which can be launched. The arrow keys are used to select an application or window from the search list. If it is a window, the selected window will be visually highlighted with an overlay. Pressing `Return` on a window will bring that window to focus, switching to its workspace, and unminimizing it if it was minimized.
146
-
147
-
#### Launcher Modes
148
-
149
-
By default, the launcher searches windows and applications. However, you can designate a special launch mode using one of the supported prefixes:
150
-
151
-
-`:`: Execute a command in `sh`
152
-
-`run` | `t:`: Execute a command in `sh` in a terminal
153
-
-`=`: Calculator mode, powered by [MathJS](https://mathjs.org/)
154
-
-`/` | `~`: Navigate and open directories and files in the file system
155
-
-`d:`: Search recent documents
145
+
Pop Shell provides an integrated launcher which interfaces directly with our [pop-launcher](https://github.com/pop-os/launcher) service. JSON IPC is used to communicate between the shell and the launcher in an asynchronous fashion. This functionality was separated from the shell due to performance and maintainability issues. The new launcher is written in Rust and fully async. The launcher has extensive features that would be useful for implementing desktop launchers beyond a shell extension.
156
146
157
147
### Inner and Outer Gaps
158
148
159
149
Gaps improve the aesthetics of tiled windows and make it easier to grab the edge of a specific window. We've decided to add support for inner and outer gaps, and made these settings configurable in the extension's popup menu.
160
150
161
151
### Hiding Window Title Bars
162
152
163
-
Windows with server-side decorations may have their title bars completely hidden, resulting in additional screen real estate for your applications, and a visually cleaner environment. This feature can be toggled in the extension's popup menu. Windows can be moved with the mouse by holding `Super` when clicking and dragging a window to another location. Windows may be closed by pressing GNOME's default `Super` + (`grave` / `~`) shortcut.
153
+
Windows with server-side decorations may have their title bars completely hidden, resulting in additional screen real estate for your applications, and a visually cleaner environment. This feature can be toggled in the extension's popup menu. Windows can be moved with the mouse by holding `Super` when clicking and dragging a window to another location, or using the keyboard shortcuts native to pop-shell. Windows may be closed by pressing `Super` + `Q`, and maximized with `Super` + `M`.
164
154
165
155
---
166
156
167
-
## Stacking Mode
157
+
## Floating Mode
168
158
169
159
This is the default mode of Pop Shell, which combines traditional stacking window management, with optional tiling window management features.
170
160
@@ -178,30 +168,18 @@ An optional feature to improve your tiling experience is the ability to snap win
178
168
179
169
---
180
170
181
-
## Auto-Tile Mode
171
+
## Tiling Mode
182
172
183
-
This provides the tiling window manager experience, where windows are automatically tiled across the screen as they are created. This feature is disabled by default but can be enabled through the extension's popup menu in the panel. When enabled, windows that were launched before enabling it will not be associated with any tree. Dragging and dropping them will begin to tile them in a tree.
173
+
Disabled by default, this mode manages windows using a tree-based tiling window manager. Similar to i3, each node of the tree represents two branches. A branch may be a window, a fork containing more branches, or a stack that contains many windows. Each branch represents a rectangular area of space on the screen, and can be subdivided by creating more branches inside of a branch. As windows are created, they are assigned to the window or stack that is actively focused, which creates a new fork on a window, or attaches the window to the focused stack. As windows are destroyed, the opposite is performed to compress the tree and rearrange windows to their new dimensions.
184
174
185
175
### Keyboard Shortcuts
186
176
187
177
-`Super` + `O`
188
178
- Toggles the orientation of a fork's tiling orientation
189
179
-`Super` + `G`
190
-
- Toggles a window between floating and tiling.
180
+
- Toggles a window between floating and tiling.
191
181
- See [#customizing the window float list](#customizing-the-floating-window-list)
192
182
193
-
### Feature Overview
194
-
195
-
- If no windows are on a display, a newly-opened window will start maximized on the display
196
-
- As new windows are opened, they are tiled into the currently focused window
197
-
- Windows can be detached and reattached to different areas of the tree by dragging and dropping them
198
-
- The default tiling orientation is based on the dimensions of the window being attached to
199
-
- The tiling orientation of the fork associated with the focused window can be altered with `Super` + `O`.
200
-
- The division of space between branches in a fork can be altered by resizing windows
201
-
- Window resizes can be carried out with the mouse
202
-
- Tiling mode may also be used to adjust sizes with the keyboard
203
-
- Ultra-wide displays are treated as two separate displays by default (**Unimplemented**)
204
-
205
183
### Customizing the Floating Window List
206
184
There is file `$XDG_CONFIG_HOME/pop-shell/config.json` where you can add the following structure:
207
185
```
@@ -214,26 +192,6 @@ For example, doing `xprop` on GNOME Settings (or GNOME Control Center), the WM_C
214
192
215
193
After applying changes in `config.json`, you can reload the tiling if it doesn't work the first time.
216
194
217
-
## Plugins
218
-
219
-
### Launcher Plugins
220
-
221
-
Pop Shell supports extending the functionality of its launcher and comes with some plugins by default. System plugins are stored in `/usr/lib/pop-shell/launcher/`, while user plugins are stored in `$HOME/.local/share/pop-shell/launcher/`. Some plugins are included by default:
222
-
223
-
-[calc](src/plugins/calc)
224
-
-[files](src/plugins/files)
225
-
-[pulse](src/plugins/pulse)
226
-
-[recent](src/plugins/recent)
227
-
-[terminal](src/plugins/terminal)
228
-
-[web](src/plugins/web)
229
-
-[scripts](src/plugin_scripts.ts)
230
-
231
-
> Plugin developers, see [the API documentation for the launcher API](src/plugins/README.md).
232
-
233
-
### Scripts Plugin
234
-
235
-
This built-in plugin displays scripts in search results. Included with Pop Shell is a set of scripts for log out, reboot, and power off. Scripts are stored in `/usr/lib/pop-shell/scripts/` and `$HOME/.local/share/pop-shell/scripts/`. [See the included scripts as an example of how to create our own](src/scripts/).
236
-
237
195
## Developers
238
196
239
197
Due to the risky nature of plain JavaScript, this GNOME Shell extension is written in [TypeScript](https://www.typescriptlang.org/). In addition to supplying static type-checking and self-documenting classes and interfaces, it allows us to write modern JavaScript syntax whilst supporting the generation of code for older targets.
@@ -248,13 +206,6 @@ While working on the shell, you can recompile, reconfigure, reinstall, and resta
248
206
249
207
[Discussions welcome on Pop Chat](https://chat.pop-os.org/community/channels/dev)
250
208
251
-
## GNOME JS
252
-
GNOME JS is a little different from standard JS, so the included `Makefile` runs `sed` on the transpiled JavaScript to convert the small number of differences between JS and GJS. Notably, GJS only partially supports ES2015, and has its own module system which works differently from what ES2015 expects. The sed scripts will replace `import` and `export` statements with the expected GNOME variants.
0 commit comments