Skip to content

Commit

Permalink
[CinnamonBurnMyWindows@klangman] Initial release (#724)
Browse files Browse the repository at this point in the history
This is a port of the Burn-My-Windows Gnome extension. It provides 15 different window open/close effects for Cinnamon 6.2+
  • Loading branch information
klangman authored Sep 3, 2024
1 parent 71512a8 commit 018ffa1
Show file tree
Hide file tree
Showing 66 changed files with 8,557 additions and 0 deletions.
5 changes: 5 additions & 0 deletions CinnamonBurnMyWindows@klangman/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Changelog

## 0.9.1

* Initial version committed to cinnamon spices
84 changes: 84 additions & 0 deletions CinnamonBurnMyWindows@klangman/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# CinnamonBurnMyWindows

Window open and close effects for the Cinnamon desktop

This is a Cinnamon port of the Gnome extension Burn-my-Windows which can be found here:

https://github.com/Schneegans/Burn-My-Windows

**Please go to the above link and support their project since this is merely a port of their fine work!**
**But DO NOT use this Github link to report issues. See Feedback section below**

## Requirements

Cinnamon 6.2 (Mint 22) or better.

This extension needs the Cinnamon.GLSLEffect class which is only available in Cinnamon 6.2. I had attempted to work around this issue in order to support older versions of Cinnamon but so far I have not been successful.

## Known issues

In the setting configure window under the "Effect Settings" tab, when changing the "Show setting for effect" drop-down to select a different effect, sometimes the contents under the "Effect Specific Settings" title will not properly update. Because of this only a subset of the available options are visible. I believe this is a Cinnamon bug. You can force Cinnamon to properly redraw the options by selecting the "General" tab then selecting the "Effect Settings" tab again. After that, the complete set of "Effect Specific Settings" should be visible.

When closing the Steam Client "setting" window the 'close window effect' does not show the windows contents, resulting in the closing effect to show where the window had existed but otherwise has no negative effect.

Starting VirtualBox shows a full screen animation of both the Open and Close effect even when the window is not starting maximized. I assume this is caused by some weirdness with how VirtualBox was written.

The Doom effect seems to finish animating at a noticeably lower position than where the window is actually located. This results in the sudden jump up after the animation is completed.

All open window effects seem to animate in a location that is one pixel off the windows real location. This causes a very small (nearly unnoticeable) jump of the window after the animation has finished. The only exception is "Doom", which as stated above has a more pronounced jump.

The window shadows are not part of the animation and therefore they suddenly appear right after the animation completes.

### Currently these effects are working in Cinnamon:

- Apparition
- Doom
- Energize A
- Energize B
- Glide
- Glitch
- Hexagon
- Incinerate
- Pixelate
- Pixel Wheel
- Pixel Wipe
- Portal
- TV Effect
- TV Glitch
- Wisps

### Effects currently disabled:

Because Cinnamon is missing a required API, the following effects are disabled. I am hoping to find a way around this issue:

- Broken Glass
- Fire
- Matrix
- PaintBrush
- Snap Of Disintegration
- TRex Attack

## Possible future enhancements

- Specifying effects that apply to specific application windows. i.e Selecting which effect occurs when closing Firefox.

## Installation

1. Right click on the cinnamon panel and click "System Settings"
2. Click on the "Extensions" icon under the "Preferences" category
3. Click the "Download" tab and then click the "Burn My Windows" entry
4. Click the "Install" button on the right and then return to the "Manage" tab
6. Select the new "Burn My Windows" entry and then click the "+" button at the bottom of the window
7. Use the "gears" icon next to the "Burn My Windows" entry to open the setting window and setup the preferred behaviour

## Feedback

Please leave a comment here on cinnamon-spices.linuxmint.com or you can create an issue on my Github (https://github.com/klangman/CinnamonBurnMyWindows) to give me feedback or to report any issues you find.
**Please DO NOT open any issues against the original Gnome project. Open issues only on my Github or on cinnamon-spices so I can check if the issue has anything to do with my changes to support Cinnamon**

If you like this extension, please consider making a donation to the author of the original Gnome extension which makes up the vast majority of the code for this Cinnamon extension. Donation links can be found on his Github page:

https://github.com/Schneegans/Burn-My-Windows

If you want to help others find this Cinnamon extension, consider staring it here and on my Github page so that more people might learn of it's existence. The more stars it gets the more encouragement I'll have to continue working on it.
Thanks!
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/python3

import random
from JsonSettingsWidgets import *
from gi.repository import Gio, Gtk

class TwoCheckButtonsTitleWidget(SettingsWidget):
def __init__(self, info, key, settings):
SettingsWidget.__init__(self)
self.key = key
self.settings = settings
self.info = info

self.descLabel = Gtk.Label('', halign=Gtk.Align.START)
self.descLabel.set_markup('<b>' + _(info['description']) + '</b>');

self.label1 = Gtk.Label('', halign=Gtk.Align.END)
self.label1.set_markup('<b>' + _(info['titleB']) + '</b>');

self.label2 = Gtk.Label('', halign=Gtk.Align.END)
self.label2.set_markup('<b>' + _(info['titleA']) + '</b>');

self.pack_start(self.descLabel, True, True, 0)
self.pack_end(self.label1, False, False, 10)
self.pack_end(self.label2, False, False, 10)


class TwoCheckButtonsWidget(SettingsWidget):
def __init__(self, info, key, settings):
SettingsWidget.__init__(self)
self.key = key
self.settings = settings
self.info = info

self.pack_start(Gtk.Label(_(info['description']), halign=Gtk.Align.START), True, True, 0)
self.chkBtn1 = Gtk.CheckButton()
self.chkBtn1.set_margin_start(17)
self.chkBtn2 = Gtk.CheckButton()
self.chkBtn2.set_margin_start(17)
self.settings.bind(info['close'], self.chkBtn1, 'active', Gio.SettingsBindFlags.DEFAULT)
self.settings.bind(info['open'], self.chkBtn2, 'active', Gio.SettingsBindFlags.DEFAULT)
self.pack_end(self.chkBtn1, False, False, 10)
self.pack_end(self.chkBtn2, False, False, 10)
Loading

0 comments on commit 018ffa1

Please sign in to comment.