Code Monkey home page Code Monkey logo

blur-my-shell's Introduction

GNOME Shell Extension - Blur my Shell

License GitHub release (latest by date) Weblate project translated GitHub Sponsors

A GNOME Shell extension that adds a blur look to different parts of the GNOME Shell, including the top panel, dash and overview.


Notice

I (aunetx) am currently quite busy and I won't be able to do a lot of changes in this extension for the following months (probably until fall 2023)... You can consider this extension in low maintenance mode, I will still do important releases (for GNOME 44 etc) but no new features for the moment, and I won't be able to reply to every openend issue (even though I read them all in case).

Especially, consider the application blur to be in alpha state, because it is even broken for me so I don't think it works for anybody else... If someone wants to spend time fixing it, I will gladly merge pull requests. The dash-to-dock blur seems quite broken too, although I don't even know to what extent.

I am deeply sorry about all the problems that may arise, do not hesitate to open pull requests if needed and I will try to find motivation to answer them at some point :)

Sincerely, Aurélien


Functionalities:

  • apply a blur effect to different components of the shell:
    • panel — compatible with Dash to Panel and Hide Top Bar
    • overview
    • Dash to Dock — however you can't have rounded corners
    • application folders background
    • workspace separation — useful with Desktop Cube
    • window selector for screenshot
    • lockscreen — to customize the already existing blur
    • Window List extension
  • applications can be blurred too — see Application blurring
  • panel blur can be deactivated when a window is near it, for example in fullscreen
  • components have either a static or a dynamic blur:
    • static blur (generated once) is faster and more stable, used for Overview, Lockscreen, Screenshot
    • dynamic blur (generated each frame) is more adapted to widgets which have components behind them, although it contains artifacts; used for Applications, Dash to Dock, Application folders, Window List
    • the Panel can be configured to either use static or dynamic mode; I personally prefer static blur
    • to prevent the artifacts from appearing with dynamic blur, the option Hack level permits you to select a behaviour:
      • High performances totally disables the optimisations, making the blur look broken sometimes; but that can be mitigated when animations and windows shadows are disabled
      • High quality fixes the blur as much as it can, at the expense of some performance penalty; but not more than 0.5% of CPU on my middle-range i5 so the difference may be unnoticeable
      • Default is a mix of both, and quite recommended overall
  • components using Static blur can also be added:
    • a noise effect, which can help to either prevent color bending in older monitors, or for aesthetic purpose
    • a color overlay, which can help to either increase readability, or... for aesthetic purpose :)
  • and everything is configurable, for every component separately if wanted!

Blur my Shell is guaranteed to be compatible, in the sense of at least not to mess around, with the following extensions:

Screenshots

Blurred Overview

Blurred Top Panel

Screenshot from 2022-05-19 00-03-27

Participate

If you with to help me with this extension, there are quite a lot you can do!

Translations

You can help to translate the extension into your language, either by directly opening a pull request with the additions you've made, or by using Weblate!

Development

To install the extension from source:

git clone https://github.com/aunetx/blur-my-shell
cd blur-my-shell
make install

You will then need to reload GNOME shell, for example by login out and in again, or under Xorg, alt+f2 and type r.

To debug the extension, you can use Looking Glass (alt+f2, type lg); I stored the extension object in global.blur_my_shell.

To see the extension logs, you can use:

# for debug logs (when Debug is activated in preferences)
sudo journalctl /usr/bin/gnome-shell | grep Blur my Shell

# for crash logs in GNOME shell
sudo journalctl /usr/bin/gnome-shell | grep blur-my-shell

# for crash logs in the extension's preferences
sudo journalctl /usr/bin/gjs | grep blur-my-shell

Just don't hesitate to open issues and pull requests, and sorry if I take some time to answer!

Donations

If you want to sponsor me, well thank you very much!

You can use either GitHub Sponsors or Ko-fi; and don't hesitate to ask for more specialized support if you need to!

Advanced

Application Blurring

Blur my Shell now supports providing blur to applications (formerly blur-provider).

This is a beta functionnality, however you can test it by either:

  • entering the application's class name in the whitelist in the preferences
    • under Xorg, you can type xprop|grep WM_CLASS, click on the app and paste the last name on the whilelist field
  • setting the Mutter hint blur-provider to test it, it will be resetted when the session is closed
    • under Xorg, you can do it by typing xprop -f _MUTTER_HINTS 8s -set _MUTTER_HINTS blur-provider=sigma:60,brightness:0.6, and with the sigma and brightness you want
  • integrating it with your application if you're the developper
    • you must set the window's property _MUTTER_HINTS to blur-provider=sigma:...,brightness:...; if you do not set them the application will use default blurring settings from Blur my Shell
    • for Electron applications, you can try building it with Glasstron Clarity

Force overview blur update

In case you have problems with your dynamic timed wallpaper not being updated due to using third-party process to change the wallpaper, you can force the overview blur to be updated with the command:

gsettings set org.gnome.desktop.background picture-opacity 99 && gsettings set org.gnome.desktop.background picture-opacity 100

Versions support

The current extension supports these GNOME Shell versions:

  • 44 -- master branch
  • 43 -- master branch
  • 42 -- master branch

Up to version 29, Blur my Shell supports GNOME Shell versions:

  • 41 -- v29 tag
  • 40 -- v29 tag

Older GNOME Shell versions are supported up to Blur my Shell version 6, and by versions 17, 19 and 22:

  • 3.38 -- pre_40 branch
  • 3.36 -- pre_40 branch

Special thanks

Much much love to:

  • @swyknox for the awesome icon!
  • @CorvetteCole for his awesome contributions, especially for the applications blur :p
  • every contributor, and even those who open these ugly issues!!! Because that's maybe the most important of it all :)

Of course, I am really grateful to the people sponsoring my work, it is really cool to be supported like this!

And lastly, thank you, kind visitor -- this is a fun project to manage :)

License

This program is distributed under the terms of the GNU General Public License, version 3 or later.

blur-my-shell's People

Contributors

a2leexx avatar albanobattistella avatar alexmelman88 avatar architektapx avatar aunetx avatar bubi-luka avatar chtholine avatar commanderalchemy avatar comradekingu avatar corvettecole avatar dasjott avatar davdklkn avatar feyxiexzf avatar flipflop97 avatar harusame3144 avatar istvan-derda avatar jolupa avatar kbdharun avatar krlade avatar loveisfoss avatar norwayfun avatar ofseed avatar oscfdezdz avatar shemgp avatar taylantatli avatar vikdevelop avatar weblate avatar wjtje avatar yangyangdaji avatar zoldyako avatar

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.