numixproject / numix-gtk-theme

A modern flat theme with a combination of light and dark elements.
GNU General Public License v3.0
1.2k stars 227 forks source link

menuitem-checkbox-unchecked does not exist #717

Closed baeza closed 5 years ago

baeza commented 5 years ago

There is no icon for unchecked menu items. This fact produces displaying checked items when they are really unchecked. I noticed in Evolution when selecting labels for a message.

kaoneko commented 5 years ago

It's called menuitem-checkbox-checked-insensitive. In GTK, deactivated UI elements are labelled insensitive. In GTK3 the Numix theme uses a gray checkmark in front of unchecked items and a colored checkmark in front of checked items. You can make the insensitive checkmark transparent by changing its fill-opacity to 0 in src/assets/all-assets.svg and then re-rendering it. You might want to do the same for menuitem-checkbox-mixed-insensitive and menuitem-radio-checked-insensitive. This way inactive items will appear not to have any symbol next to them, just like in GTK2.

baeza commented 5 years ago

Many thanks, but I am a dummy in themes management and I have no idea about how to do what you have explained, what tool to use, etc... Can you PLEASE send me more info?

kaoneko commented 5 years ago

Sure! Until recently I had no clue myself, so I'll gladly share what I've learned.

First, you need to be able to build the theme yourself. Download the source files by issuing a git clone https://github.com/numixproject/numix-gtk-theme in your terminal or pressing the green Clone or download button on the main page. Then follow these instructions and see if you can succesfully build the theme.

Once you got that far, open the locally stored src/assets/all-assets.svg file with a plain text editor and search for menuitem-checkbox-checked-insensitive. You'll end up at line 3311 where it says id="menuitem-checkbox-checked-insensitive". Thirtyfive lines down, on line 3346, change fill-opacity:1 to fill-opacity:0.

Do the same for menuitem-checkbox-mixed-insensitive (if you care; actually I think I've never encountered it in any menu) and menuitem-radio-checked-insensitive.

Now if you save the file and then open it in a picture viewer, you'll see that the corresponding pictures have disappeared (become transparent).

Next delete the corresponding PNG files in the assets directory (or just delete all PNG files) and regenerate them by running render-assets.sh from the scripts folder in your terminal (I think this requires Inkscape to be installed, so install this if it tells you it's missing). After this, the files like menuitem-checkbox-checked-insensitive.png should now be an empty image instead of it showing a gray checkmark/bullet/minus-sign.

Now run a sudo make install again and re-apply the theme. You should now only see a colored checkmark or bullet in front of activated menu items, no gray ones should be seen in front of inactive menu items.

Finally, rename /usr/share/themes/Numix to something different like Numix Customized, to avoid having it overwritten by an update from the Ubuntu repositories or the PPA from where you previously installed it (even better: uninstall that copy before doing everything described here). It's also nice to make a backup copy of the folder, so if you ever reinstall your system you can just copy it to /usr/share/themes/ or ~/.themes/ instead of performing all the steps above.

Good luck mate, let me know how it goes!

baeza commented 5 years ago

What about simply modifying the three files (svg and pngs) and reload the theme without re-building the whole theme?

kaoneko commented 5 years ago

It won't work. Even if you delete all the PNG files from the (installed) theme directory, they all show up just fine because they're being loaded from the gtk.gresource files. (Only the GTK2 theme would load the files directly, but I don't think it uses any of them anyway.)

The readme also states:

If you change any assets, you'll need to regenerate the gtk.gresource.xml and gtk.gresource files.

It goes on to say that you can also use a tool named grrr to do this, so that may be an alternative to my approach.

baeza commented 5 years ago

Ok. I will try ASAP and let you know.