Giter VIP home page Giter VIP logo

material-shell / material-shell Goto Github PK

View Code? Open in Web Editor NEW
7.2K 81.0 179.0 68.08 MB

A modern desktop interface for Linux. Improve your user experience and get rid of the anarchy of traditional desktop workflows. Designed to simplify navigation and reduce the need to manipulate windows in order to improve productivity. It's meant to be 100% predictable and bring the benefits of tools coveted by professionals to everyone.

Home Page: https://material-shell.com

License: GNU General Public License v3.0

JavaScript 0.49% Makefile 0.22% SCSS 3.20% Python 1.35% TypeScript 94.75%
material material-design gnome gnome-shell gnome-shell-extension tiling-window-manager materialshell material-shell linux hacktoberfest

material-shell's Introduction

⚠️ ‎‎ Material Shell is in transition to become Veshell and if you are interested in the reasons that motivated this decision you should read this letter from PapyElGringo


Material Shell


A modern desktop interface for Linux extending GNOME Shell.

Providing a unique, simple, productivity-oriented, innovative and automated mouse and keyboard workflow which aims to be faster and easier to use and creates a great user experience.

Powered by its unique spatial model, its modern material design interface, its tiling engine and its persistability.

Get notified about updates and join us at ‎‎ chat on Discord

WorkflowHotkeysInstallationUninstallationHistorySupport

Discover Tribu

Demo GIF


Workflow

Created to simplify navigation and reduce the need to manipulate windows in order to improve productivity. It's meant to be 100% predictable and bring the benefits of tools coveted by professionals to everyone.

Spatial Model

This is the core of the workflow and what everything is built around and in our case it's one of the simplest: a Grid

 Spatialisation illustrated

A Workspace is an applications container that can be visualized as a row and applications as cells.

Every new application is automatically positioned inside this grid at the end of its workspace row and every new workspaces are appended at the bottom which is very predictable and always sorted automatically.

This allows us to provide intuitive navigation by moving the screen around a larger context. Navigating up and down will change the current workspace and navigating left and right changes the current window(s) on screen.

You can organize your applications by use cases as activities or by applications type as categories.

Interface

Designed to represent the state of the workflow and provide navigation capabilities for both a mouse and a touchscreen.

Layout

The interface is divided in two parts:

In the left panel everything pertains to the system: workspaces state, current system status, notifications, etc.

On the right of the left panel everything pertains to the active workspace: the windows on the workspace's row, the layout switcher, and the windows themselves.

 Interface layout illustrated

The two most important components are the system panel (on the left) and the workspace panel (on the top).

System panel

The system panel is the main component of the left side of the interface. It consists of:

  • Workspace list and switcher: This component lists all the workspaces available and the currently selected one. It allows us to navigate to a specific workspace by clicking on its icon.
  • System tray: This component lists all the information about the system, e.g. network status, bluetooth connectivity, volume, battery, and notification icons.

Workspace panel

The workspace panel is the main component of the right side of the interface. It consists of:

  • App switcher: This component lists all the application windows opened in the current workspace's row and the currently focused one. It allows us to navigate to a specific window within the row by selecting its item.
  • Layout switcher: This component displays the current layout of the workspace and can be clicked to switch to the next available layout.

Design

Made by following the Material Design guidelines - a solid baseline that allows us to provide an aesthetically pleasing and highly accessible interface.

Themes

You can choose between 3 different themes:

  • Dark
  • Light
  • Primary (Colorful one)

And there is also a blurry version available for the more fancy ones !

Tiling engine

It's the tool that automatically organize the application's window for you in a predictable and mutually non-overlapping disposition.

 Tiling engine illustrated

Choose at any time which tiling layout suit the most for your need:

  • Maximize: Single window at a time
  • Split: 2 windows side by side
  • Simple: All windows evenly split and stacked along horizontal or vertical axis (useful for ultra wide monitor)
  • Half: One master window on the left then others windows stacked to the right
  • Grid: All windows displayed as a grid

Persistence

The best way to configure the desktop layout is to not have to do it.

Material Shell keeps track of every decision relative to the desktop layout: where are windows, in which workspaces, and in which order.

This allows configuration of the layouts on the go while using it.

When opening a new session Material Shell will restore every window previously present with a "window placeholder which allows you to reopen any of the previous windows easily at the same spot you like to have them.

Hotkeys

Some hotkeys might already be used by GNOME Shell - please check your keybindings first.

Desktop navigation

  • Super+W Navigate to the upper workspace/category.
  • Super+S Navigate to the lower workspace/category.
  • Super+A Focus the window at the left of the current window.
  • Super+D Focus the window at the right of the current window.
  • Super+1, Super+2 ... Super+0 Navigate to specific workspace

Window manipulation

  • Super+Q Kill the current window focused.
  • Super+[MouseDrag] Move window around.
  • Super+Shift+A Move the current window to the left.
  • Super+Shift+D Move the current window to the right.
  • Super+Shift+W Move the current window to the upper workspace.
  • Super+Shift+S Move the current window to the lower workspace.

Extra Hotkeys

  • Super+Space Cycle the tiling layout of the current workspace.
  • Super+Escape Toggle the UI of Material-shell, like a Zen mode.

Installation

You can install the extension either using the gnome extensions website, or directly from source.

Get it in two clicks

Get the most up to date version with Git

  1. Check your GNOME Shell version as we only support gnome-shell >= 40.0

  2. Download the extension. Depending on your distribution, there are several ways to acquire it:

Install via Command
extensions.gnome.org Navigate to extensions.gnome.org && switch the toggle ON
source git clone https://github.com/material-shell/material-shell.git && cd material-shell && make install

(We appreciate package maintainers! If you would like to make a package available for your distro please submit a PR so it can be added here!)

  1. Reload GNOME Shell:
    • On X.org: Hit Alt+F2 and type the command r
    • On Wayland: Log out and back in
  2. Open gnome-tweaks and activate the Material Shell extension OR enable it using
gnome-extensions enable material-shell@papyelgringo

Recommended Additional Configuration

For Multi Monitor with different scaling factor to work properly

You need to enable Wayland Fractionnal Scaling capabilities with:

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Note that it current have the downside to make XWayland window to possibly become blurry

Reset Material Shell

Reset the Material Shell persistent state

If you have some weird behavior or a degradation over time, it can be a good idea to try to reset the Material Shell state.

  1. Open Looking Glass tool by pressing Alt + F2 and type lg
  2. Copy and paste the command global.set_persistent_state('material-shell-state',new GLib.Variant('s', '{}'));
  3. Reload the shell by either pressing Alt + F2 and type r (does not work on Wayland), or log out and then log in again.

Reset the Material Shell settings

If you want to discard all the changes of Material Shell settings and reset to default (Including keybindings)

  1. Open a terminal and copy/paste dconf reset -f /org/gnome/shell/extensions/materialshell/

Uninstallation 😢

We're sad to see you go. Before you uninstall, leave us some feedback by opening an issue - it will be very helpful in improving Material Shell.

  1. Open gnome-tweaks and disable the Material Shell extension OR disable it using
gnome-extensions disable material-shell@papyelgringo
  1. Delete the extension directory.
rm -rf ~/.local/share/gnome-shell/extensions/material-shell@papyelgringo

if you miss the minimize and maximize button on windows titlebar you can restore them with

/usr/bin/gsettings set org.gnome.desktop.wm.preferences button-layout :minimize,maximize,close

History

The project is based on my earlier work on Material Awesome.

Crypto Funding

If you interested in funding the project throught crypto feel free to use:

Bitcoin 395nVybx6h6CC4sWgGGcvCDxwLvGMFhfiA

Ethereum 0x45360f24f03f2a8a964f7c083815336912cba837

Monero 82YGUymQLZ3cWPw2kEfjTphjUJLCN3M2eX3dPxRhrBeKSoUUoj4TEHAGToPoZA8AfhSGEKa9FdZjmGKAMSBxcrgHQMRZu3v

material-shell's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

material-shell's Issues

Two monitors on lock screen makes top bar show

When I have two monitors connected to my computer (my laptop screen and an external display) and the computer is on the lock screen, the top bar shows. This doesn't occur when there is only one monitor connected.

Pop ups taking the place of a tiling window

Issue

When a pop up is opened it takes the full place of an window.

Examples

Albert Launcher

Screenshot from 2019-07-01 20-29-51

Gearly Email

Screenshot from 2019-07-01 20-33-06

Nautilus pop up

Screenshot from 2019-07-01 20-35-30

Expected

pop up floating above parent window

Example

1561979803

Allow hiding box in the middle of the screen

The box in the middle of the screen is convenient for frequently used applications, but in dual-monitor setups, it is not always necessary. Can it possibly be hidden/invoked with a key shortcut?

Add option to resize windows

Currently windows cannot be resized. It would be optimal to achieve the same behavior as most tiling wms, where resizing a window automatically resizes also neighboring tiles.

I'm very impressed by your work. I'm a Manjaro Linux maintainer and I plan to build a Manjaro edition that would enable this extension by default if it is okay to you. I would also add is an option to gnome-layout-switcher, which I'm developing.
https://gitlab.manjaro.org/Chrysostomus/gnome-layout-switcher

Featurewise this is probably the only "showstopper" issue before I would consider this ready for packaging and distribution. You have done amazing work, and I'm really looking forward to this project maturing and stabilizing.

Option to move clock to top right corner

The current layout is excellent from window management point of view, but clock would be easier to read if it was in single line. Therefore I would suggest making the placement of the clock a toggleable option.

Won't show in gnome-tweaks

Installed the extension like describe but even after a reboot it isn't showing up.
Maybe some permission error or am i missing something?

Split extension into smaller ones?

Hi, thank you for the nice extension, do you think it would be possible to seperate this extension in a few smaller ones?
E.g. I would like to only use the tiling part, but with the workspace management and interface of gnome.

Material Shell doesn't acquire certain applications

I use an RSS reader called RSS Guard. While everything else on my system works more-or-less correctly, RSS Guard's main window does not get correctly picked up by Material Shell. As a result, the window remains floating (over my Web browser's window) when the application is launched, with no window decorations or way of moving it to another tab.

keybinding to move windows around

Can we provide keybinding to move windows around? Is it possible to get a Super-C followed by Super x sequence so that it becomes cut and exchange?

Icons are giant.

Hi!

Following the resolution of #11, I updated material-shell, and go this:
Capture d’écran du 2019-07-08 16-55-37
Is it normal or a scaling error ?

Btw, I have a 200% HDPI scaling and giant icons with all applications.

Remapping Hotkeys

Any way to remap the hot keys for alternative keyboard layouts/languages? I am using DVORAK, so the WASD keys are all over the board for me.

Thanks for your work! Great project and very helpful!

ultrawide monitor

Like i say u over reddit, tiling split so strange over ultrawide monitors and panel/bar dont work fine

also can u pls take us an option to move/delete the clock?

https://imgur.com/a/tbMBnWB here a pic to show u how strange is over ultrawide

Ability to move workspaces on the left panel

For example moving the Social down and Others up. This would help me especially because terminal shows up in the others menu however, that is the one I use the most after browser and code editor.

AppCard maximum width

The Categorie cards on the desktop can get to wide on porttraid screens and overlap.
See screenshot for an example
Screenshot from 2019-07-13 20-02-46

Make a settings panel

Another thing that has been suggested before is a settings panel. It should be possible to control:

  • Key shortcuts
  • Icons
  • Workspace order/layout/categories
  • etc.

This is accomplished by creating a UI in XML and a prefs JavaScript file. A working implementation can be found in (Dash-to-Dock)[https://github.com/micheleg/dash-to-dock]. Check prefs.js and Settings.ui.

Internet tab is unresponsive on boot.

You can't interact with the "Internet" tab, but when you open an application from the dock that's in the internet tab, it indicates that the application is open.

The only way to fix is this to go to a new tab and then back to the Internet tab.

[Feature request]/[Discussion] Customisable categories

This is meant as a discussion thread. Feel free to post your use-cases, possible additional customization, the categories you'd create, etc.

The current categories can be seen as "sane defaults". However, customizing groups would be a great addition because:

  • some applications, while correctly categorized, do not fit the category in daily use-cases (think FireFox being grouped with the torrent client Transmission),
  • some applications are installed as dependencies and never used by the end-user, but are still present in the categories (think electron when installing Visual Studio Code).

The thought is to allow for a user-friendly way of:

  • adding/deleting of categories,
  • customizing of category icons,
  • customizing of category names,
  • adding/removing applications from a category.

Layout bugs when coming back from suspend

When you suspend linux and try to log back in, a lot of weird things happen:

Lock Screen:

  • Icons are large
  • stacked horizontally or vertically

After logging in (on desktop):

  • icons are duplicated
  • windows are smaller than they normally are
  • there's a small bit of desktop showing above all windows
  • everything freezes

This is only fixed with a restart. Also more things might be added to this list the more I play around with it.

HDPI Support - Scaling to more than 100%

It is not possible to scale to anything more than 100% (base), doing so will get the apps and the bars to overlap on top of each other and break the layout.

This is pretty common on HDPI monitors.

Implement a system tray?

As in the old tray where icons like Steam would live. Any chance of this happening?
I currently use flatpak Steam, and if I accidentally close it, there is no way to open it back up besides killall then re-run it because you can run multiple instances of it with flatpak (also a big issue on Gnome standard).
I also have other tray things like owncloud, protonmail bridge etc, so yeah, kinda need this.

Quake mode of Tilix doesn't work

I use the "Quake" feature of Tilix heavily. When I press F12, a Tilix window (but without window controls) appears in the upper half of my screen and stays on top of everything. When I press F12 again, it effectively minimizes the window. This doesn't seem to work with Material Shell. When I press F12, it switches to the "others" tab and opens Tilix full screen. If I close it out again, it leaves me in the "others" tab, and I have to switch back to whatever I was doing.

Hamburger menu split

The top half of the hamburger menu turns blue and shows the clock interface, while the bottom half opens up the application viewer. Can you unify this button into a single one which only displays the clock view?

Revert Workspaces if Turned Off

Hi, very cool extension. However, I noticed that it creates many workspaces and alters the gnome-tweaks workspaces settings. That's fine I guess, but if I turn off your extension, the numerous workspaces are all retained. I dunno if this is what you intend but I'm guess not.

Minimizing windows reclaim space

If windows are minimized, their space should be available to other windows, otherwise minimizing is pointless apart from seeing the desktop behind.

Add support for overlayed windows

Currently, overlayed windows are not properly overlayed over other windows.

This is seen when using guake:

  • "maximize" layout: opens in new window
  • "grid" layouts: opens in new sub-grid

The same happens when using GNOME's screenshot tool.

New workspace suggestion: Favorites

GNOME has a favorites category. In the vanilla shell the favorited apps show up on the dock. Since there is no dock, and apps can still be favorited, would it be possible to add a category that pulls from favorited apps?

Tab between applications in the stacked view. [Feature request]

I would like the functionality to move between applications in the stacked view with a keyboard command.

The current behaviour of Super+D will cycle between the currently focused application and the application group. I would like it to go along the application tabs and end in the application group.

System tray in the wrong place.

Hi, this really is an amazing work you've been doing ! But with all new projects, when they're tested by everyone some bugs emerge :). And I have found one pretty annoying.
For an unknown reason, my system tray is in the top left corner of the screen, and sometimes it blocks the access to application menu.

Maximize window should toggle layout

Maximizing a window currently animates to full screen for a very short period of time, then the window is reset to its original size. Instead, maximizing should have the same effect as having the window focused and toggling the layout to one window mode.

title bar not shown?

For applications like emacs, I don't find a title bar displayed? That is also true for LibreOffice. Is there a config to show title bar?

Add option to use theme colors

With a version from yesterday, the menu button was a dark blue color that matched my GTK theme. With the latest version, it has changed to a purple color. Can this be added as an option so the panel can match the theme that I use?
Old
New

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.