Ideas for Cinnamon applets / extensions

Please post suggestions for improvement of Cinnamon on:
https://github.com/linuxmint/Cinnamon
Forum rules
Before you post read how to get help. Topics in this forum are automatically closed 6 months after creation.
mbokil

Re: Ideas for Cinnamon applets / extensions

Post by mbokil »

cgrantmccool wrote:I could use a pop-up filebrowser that expands with each subfolder like the file-browser-applet for gnome 2.x I coach high school debaters and they need to be able to access and easily sort through hundreds of different files organized in various folder structures very quickly and efficiently.

I'm a pretty new user to linux, my conversion is mostly an economic decision for supplying poor kids with cheap/donated used laptops, and not having to deal with a giant book of education software licenses.

This is what we are currently using and it's pretty fantastic for what we need it to do. At the moment, it seems that all the primary desktop environments have forgotten about shortcut access to large file tree structures, or I'm just not finding the ones that are out there and still work/are supported.

http://code.google.com/p/gnome-menu-fil ... er-applet/
I like to use classicmenu-indicator. It works in Cinnamon okay.
http://www.florian-diesch.de/software/c ... indicator/
plutocrat

Re: Ideas for Cinnamon applets / extensions

Post by plutocrat »

Integration with Hamster / Time Tracker applet.

Alarm clock / countdown timer / stopwatch
User avatar
lafontaj
Level 1
Level 1
Posts: 11
Joined: Wed Oct 26, 2011 5:33 pm

Re: Ideas for Cinnamon applets / extensions

Post by lafontaj »

Applet météo sous Cinnamon
cinnamon-weather-1.4.3

Bon je suis sous Mint LMDE mais je suis au Québec. L'applet cinnamon-weather-1.4.3 ne me donnais aucune traduction même en activant la fameuse case "translate weather condition" du menu setting de l'applet.

En fait il n'existe pas de traduction pour la locale fr_CA (pour le Canada français). En fouinant dans le script install.sh de l'applet, j'ai vu que les fichiers de locale s'installe dans le répertoire "/home/jean/.local/share/locale" alors j'ai simplement copier le répertoire "fr" et je l'ai renommé fr_CA et ensuite un alt f2 r pour redémarrer Cinnamon et maintenant j'ai aussi droit comme les Français à ma langue dans mon applet météo.

La seule portion encore en anglais est "sunrise" et "sunset"

À la vôtre!

There is no french canadian traduction for the applet, please use the "fr" it will be just fine if you make a copy and rename fr_CA

Jean :D
mbokil

Re: Ideas for Cinnamon applets / extensions

Post by mbokil »

plutocrat wrote:Integration with Hamster / Time Tracker applet.

Alarm clock / countdown timer / stopwatch
I created a new timer applet here with countdown. The app supports notifications: onscreen message, confirmation dialog, play audio file, minutes label in panel.

http://cinnamon-spices.linuxmint.com/applets/view/68

-Mark
Monsta
Level 10
Level 10
Posts: 3071
Joined: Fri Aug 19, 2011 3:46 am

Re: Ideas for Cinnamon applets / extensions

Post by Monsta »

I think it would be very nice if someone ported system-monitor Gnome Shell extension to Cinnamon, because sensors-applet still supports only Gnome Fallback panel, and I'm not sure if there are other similar ones.
cgrantmccool

Re: Ideas for Cinnamon applets / extensions

Post by cgrantmccool »

mbokil wrote:
plutocrat wrote:Integration with Hamster / Time Tracker applet.

Alarm clock / countdown timer / stopwatch
I created a new timer applet here with countdown. The app supports notifications: onscreen message, confirmation dialog, play audio file, minutes label in panel.

http://cinnamon-spices.linuxmint.com/applets/view/68

-Mark
This is looking great. I, and my students, thank you. We were looking for something that could play an audio file or do an onscreen message!
jadkik94

Re: Ideas for Cinnamon applets / extensions

Post by jadkik94 »

I'd really love to see an extension to specify different "Desktop" folders for my workspaces, like:
~/Desktop/draft:~/Desktop/php:~/Desktop/android in an environment variable will set these directories to the first three workspaces repectively.

It comes in handy if you have one workspace for IM, one for work, one for music, one for web browser, and you need a different (and big) set of files for each task.

I asked about this on Unix & Linux Stack Exchange (for gnome actually, but I prefer if it was on Cinnamon):
http://unix.stackexchange.com/questions ... s-on-gnome

I would like to develop it myself too, if someone can give me clues on that.
rcrath

Re: Ideas for Cinnamon applets / extensions

Post by rcrath »

A translate applet would be most useful for me, one that tapped into the google translate widget perhaps. Maybe this would help?
THe most useful version would mirror the google translate page, opening a window into which either a bunch of text or a URL could be pasted, and source and target language choices.
I took a pathetic stab at writing one following the guide on the applets page, but I don't know javascript and won't have time to learn it in the near future:( BUt I succeed in getting a broken icon to appear on the panel:)

ALso +1 for the google calendar applet idea.

Other than that, I've been finding everything I need in cinnamon and the applets. Great work!
User avatar
mint-me
Level 3
Level 3
Posts: 146
Joined: Sat May 26, 2012 2:25 am
Location: Australia

Re: Ideas for Cinnamon applets / extensions

Post by mint-me »

Menu drop on hover. Saves a click each time access the menu. This could also appear as an option on "Hotspot" to activate drop-down menu.
Debian 11 Bullseye Xfce: HP Notebook 15 BS143TU Intel® Core™ i5-8250U, 8GB DDR4 2400Mhz, Intel® UHD Graphics 620, 1366x768 15.6", 1 TB SATA
Welshtramp

Re: Ideas for Cinnamon applets / extensions

Post by Welshtramp »

there are two gnome extensions i would love to see in Cinnamon, i wish i had a brain for code otherwise i would do it myself but instead i humbly request here.

Maximus

https://extensions.gnome.org/extension/354/maximus/

removes title bar when maximised

and

Bolt

https://extensions.gnome.org/extension/330/bolt/

A dash like menu that tbh is really quite good but kills the overlay, be nice if it worked like any other menu.

thanks
peyser

Re: Ideas for Cinnamon applets / extensions

Post by peyser »

A replacement for the Gnome2 Character Palette applet (a.k.a. CharpickerApplet).

Somthing like https://github.com/tobyS/indicator-chars would work.

I have actually been hacking together my own, but it's completely hard-coded and can't be customized. The applet should be able to use almost any UTF-8 character, and should place the character in the clipboard when clicked.

The original Character Palette placed its character table in gconf, and indicator-chars uses a hidden file in the home directory (~/.indicator-chars).

I don't have time to learn everything I'd need to make this customizable, but it would be very useful: I'd rather not learn all the strange compose key combos for math symbols etc. and it's a real pain to open Character Map and search for every needed character all the time. It's also pretty silly to make a text file and copy/paste from it.

I have several short lists of useful symbols, a few examples:
≃≅≈≠≡≤≥≪≫
αβγδεζηθικλμ
¤£¥¢$€©®°±Å

I had these set up in Character Palette and have been really missing them since my upgrade to Ubuntu 12.04 + Cinnamon 1.6.

P.S.

Code: Select all

this.set_applet_icon_symbolic_name("accessories-character-map-symbolic");
works great for an icon with

Code: Select all

"icon": "accessories-character-map"
as the icon in metadata.
Rehdon
Level 3
Level 3
Posts: 172
Joined: Tue Nov 29, 2011 9:18 am

Re: Ideas for Cinnamon applets / extensions

Post by Rehdon »

peyser wrote:A replacement for the Gnome2 Character Palette applet (a.k.a. CharpickerApplet).
Wow, I really miss that from Gnome 2 times! Unfortunately the current fragmentation of GNOME-based desktops means that everything has to be written/adapted at least three times: for Cinnamon, Gnome-Shell and Unity (don't know about MATE) :(
Rehdon
Level 3
Level 3
Posts: 172
Joined: Tue Nov 29, 2011 9:18 am

Re: Ideas for Cinnamon applets / extensions

Post by Rehdon »

Shopping lens *done right* for Cinnamon based on this Gnome Shell extension:

http://www.theopensourcerer.com/2012/12 ... ome-shell/

Looks like a worthy addition to Cinnamon :)
peyser

Re: Ideas for Cinnamon applets / extensions

Post by peyser »

This is my hard-coded Character Palette applet:

applet.js

Code: Select all

//Character Palette applet by CharPalette@peyser.net
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util;
const St = imports.gi.St;


// // I can use this to pull characters from a text file and then place them in menus using unicode
// function toUnicode(theString) {
//   var unicodeString = '';
//   for (var i=0; i < theString.length; i++) {
//     var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase();
//     while (theUnicode.length < 4) {
//       theUnicode = '0' + theUnicode;
//     }
//     theUnicode = '\\u' + theUnicode;
//     unicodeString += theUnicode;
//   }
//   return unicodeString;
// }


function MyApplet(orientation) {
    this._init(orientation);
}

MyApplet.prototype = {
    __proto__: Applet.IconApplet.prototype,

    _init: function(orientation) {        
        Applet.IconApplet.prototype._init.call(this, orientation);
        
        try {        
            this.set_applet_icon_symbolic_name("accessories-character-map-symbolic");
            this.set_applet_tooltip(_("Choose from unicode characters"));
            
            this.menuManager = new PopupMenu.PopupMenuManager(this);
            this.menu = new Applet.AppletPopupMenu(this, orientation);
            this.menuManager.addMenu(this.menu);        
                                                                
            this._contentSection = new PopupMenu.PopupMenuSection();
            this.menu.addMenuItem(this._contentSection);                    
                                                    
          		
            //First palette
		    this.firstMenu = new PopupMenu.PopupSubMenuMenuItem('\u00A4\u00A3\u00A5\u00A2\u20AC\u00A9\u00AE\u00B0\u00B1\u212B');
		    this.firstMenu.menu.addAction('\u00A4', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
	            clipboard.set_text('\u00A4');
		    });
		    this.firstMenu.menu.addAction('\u00A3', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00A3');
		    });
		    this.firstMenu.menu.addAction('\u00A5', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00A5');
		    });
		    this.firstMenu.menu.addAction('\u00A2', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00A2');
		    });
		    this.firstMenu.menu.addAction('\u20AC', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u20AC');
		    });
		    this.firstMenu.menu.addAction('\u00A9', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00A9');
		    });
		    this.firstMenu.menu.addAction('\u00AE', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00AE');
		    });
		    this.firstMenu.menu.addAction('\u00B0', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00B0');
		    });
		    this.firstMenu.menu.addAction('\u00B1', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u00B1');
		    });
		    this.firstMenu.menu.addAction('\u212B', function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u212B');
		    });

            //Second palette
		    this.secondMenu = new PopupMenu.PopupSubMenuMenuItem("\u0393\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A6\u03A9\u03A8"); 
		    this.secondMenu.menu.addAction("\u0393", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u0393');
		    });
		    this.secondMenu.menu.addAction("\u0394", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u0394');
		    });
		    this.secondMenu.menu.addAction("\u0398", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u0398');
		    });
		    this.secondMenu.menu.addAction("\u039B", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u039B');
		    });
		    this.secondMenu.menu.addAction("\u039E", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u039E');
		    });
		    this.secondMenu.menu.addAction("\u03A0", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03A0');
		    });
		    this.secondMenu.menu.addAction("\u03A3", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03A3');
		    });
		    this.secondMenu.menu.addAction("\u03A6", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03A6');
		    });
		    this.secondMenu.menu.addAction("\u03A9", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03A9');
		    });
		    this.secondMenu.menu.addAction("\u03A8", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03A8');
		    });

            //Third palette
		    this.thirdMenu = new PopupMenu.PopupSubMenuMenuItem("\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BA\u03BC"); 
		    this.thirdMenu.menu.addAction("\u03B1", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B1');
		    });
		    this.thirdMenu.menu.addAction("\u03B2", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B2');
		    });
		    this.thirdMenu.menu.addAction("\u03B3", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B3');
		    });
		    this.thirdMenu.menu.addAction("\u03B4", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B4');
		    });
		    this.thirdMenu.menu.addAction("\u03B5", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B5');
		    });
		    this.thirdMenu.menu.addAction("\u03B6", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B6');
		    });
		    this.thirdMenu.menu.addAction("\u03B7", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B7');
		    });
		    this.thirdMenu.menu.addAction("\u03B8", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B8');
		    });
		    this.thirdMenu.menu.addAction("\u03B9", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03B9');
		    });
		    this.thirdMenu.menu.addAction("\u03BA", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03BA');
		    });
		    this.thirdMenu.menu.addAction("\u03BB", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03BB');
		    });
		    this.thirdMenu.menu.addAction("\u03BC", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03BC');
		    });

            //Fourth palette
		    this.fourthMenu = new PopupMenu.PopupSubMenuMenuItem("\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9"); 
		    this.fourthMenu.menu.addAction("\u03BD", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03BD');
		    });
		    this.fourthMenu.menu.addAction("\u03BE", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03BE');
		    });
		    this.fourthMenu.menu.addAction("\u03BF", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03BF');
		    });
		    this.fourthMenu.menu.addAction("\u03C0", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C0');
		    });
		    this.fourthMenu.menu.addAction("\u03C1", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C1');
		    });
		    this.fourthMenu.menu.addAction("\u03C2", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C2');
		    });
		    this.fourthMenu.menu.addAction("\u03C3", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C3');
		    });
		    this.fourthMenu.menu.addAction("\u03C4", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C4');
		    });
		    this.fourthMenu.menu.addAction("\u03C5", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C5');
		    });
		    this.fourthMenu.menu.addAction("\u03C6", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C6');
		    });
		    this.fourthMenu.menu.addAction("\u03C7", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C7');
		    });
		    this.fourthMenu.menu.addAction("\u03C8", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C8');
		    });
		    this.fourthMenu.menu.addAction("\u03C9", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u03C9');
		    });

            //Fifth palette
		    this.fifthMenu = new PopupMenu.PopupSubMenuMenuItem("\u2243\u2245\u2248\u2260\u2261\u2264\u2265\u226A\u226B"); 
		    this.fifthMenu.menu.addAction("\u2243", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2243');
		    });
		    this.fifthMenu.menu.addAction("\u2245", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2245');
		    });
		    this.fifthMenu.menu.addAction("\u2248", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2248');
		    });
		    this.fifthMenu.menu.addAction("\u2260", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2260');
		    });
		    this.fifthMenu.menu.addAction("\u2261", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2261');
		    });
		    this.fifthMenu.menu.addAction("\u2264", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2264');
		    });
		    this.fifthMenu.menu.addAction("\u2265", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u2265');
		    });
		    this.fifthMenu.menu.addAction("\u226A", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u226A');
		    });
		    this.fifthMenu.menu.addAction("\u226B", function(actor, event) {
		    let clipboard = St.Clipboard.get_default()
		    	            clipboard.set_text('\u226B');
		    });


		    this.menu.addMenuItem(this.firstMenu);
		    this.menu.addMenuItem(this.secondMenu);
		    this.menu.addMenuItem(this.thirdMenu);
		    this.menu.addMenuItem(this.fourthMenu);
		    this.menu.addMenuItem(this.fifthMenu);
        }
        catch (e) {
            global.logError(e);
        }
    },
    
    on_applet_clicked: function(event) {
        this.menu.toggle();        
    },        
    
};

function main(metadata, orientation) {  
    let myApplet = new MyApplet(orientation);
    return myApplet;      
}
metadata.json:

Code: Select all

{
"uuid": "CharPalette@peyser.net",
"name": "Character Palette",
"description": "Choose from set characters",
"icon": "accessories-character-map"
}
It works great for the set of hard-coded UTF-8 characters, but I haven't had time to make it customizable. There's a comment in there with some code I think I can use to make it customizable but I don't have the time to learn!
Rehdon
Level 3
Level 3
Posts: 172
Joined: Tue Nov 29, 2011 9:18 am

Re: Ideas for Cinnamon applets / extensions

Post by Rehdon »

Well thanks a lot, that's a start for sure :) I'm not a programmer so I think I'll try to add the chars I need hardcoding them like you did, and hoping someone will pick it up. You might want to upload it to http://cinnamon-spices.linuxmint.com/applets and ask for help.

Rehdon
peyser

Re: Ideas for Cinnamon applets / extensions

Post by peyser »

Rehdon wrote:Well thanks a lot, that's a start for sure :) I'm not a programmer so I think I'll try to add the chars I need hardcoding them like you did, and hoping someone will pick it up. You might want to upload it to http://cinnamon-spices.linuxmint.com/applets and ask for help.

Rehdon
I went over to #linuxmint-dev on irc.spotchat.org, but I think a lot of the devs are over in Europe so they weren't around when I asked about it (got no response). It was early a.m. over there when I was on. For now I have some of my most useful characters, but it's not a general tool. I may be able to fix it in a couple months, but for now I'm swamped with real work.
akabanekuroido

Re: Ideas for Cinnamon applets / extensions

Post by akabanekuroido »

Hello Peyser,
I was looking on the internet for a replacement of the Mate character palette for Cinnamon, when I found this topic on the Mint Forum.
It seems that you were able to make a functional applet, but that you lack time to finish it.
At this moment I am still using Mate because of the missing and very useful character palette in Cinnamon. People in Germany and Holland need these special characters very often.
I am willing to offer you money if you are able to finish the Cinnamon character palette, after all, time is money.

With best regards,
M.
nomko

Re: Ideas for Cinnamon applets / extensions

Post by nomko »

I think i have a great idea: make the icons fixed on the taskbar/systembar of Cinnamon. It happens that when i click on a icon (starter) that it stick to the mouse pointer. I have to click on the system/task bar again to get it replaced.

Can't these icons be made fixed on the system/task bar???
bonami

Re: Ideas for Cinnamon applets / extensions

Post by bonami »

Not really a new idea :idea: ...but I think it is pertinent to the subject nonetheless!

I would like to know if the existing applets/extensions will be updated to work properly with Olivia :?: There are some really good ones that I used when running Nadia but they do not work properly with Olivia. If any of the existing applet/extension developers read this please update yours to work with Olivia! TIA :D
Locked

Return to “Cinnamon”