Frappe/ERPNext Theming Tool

Hi every one,

I’ve create a custom app with frappe that allow you to make your own style, font and logo.
It can be developed to have the ability of changing the desk components, menus and so on.
So DOWNLOAD the app now and feel free to test, comment, develop and contribute.

I hope it help’s someone like it helped me.


$ bench get-app
$ bench --site [site_name] install-app theming_tool

How To Use

1- Create “Element” and insert it’s “class” name example: Nav-bar class is “.navbar-default”

2- Create “System Font” and attach the font file.

3- Go to “Theme Settings” and select your font, logo, and in “ELEMENTS STYLES” table insert your element then chose a color GO.

NOTE: here I just add “background-color” attribute I’m willing to add more in the future.

4- GO and hit SAVE.


@afarran3 Any chance you can add some sort of documentation/readme on how to install the app and how it works?

hi @afarran3, thank for contribution :+1:.

It would be nice if there was a screen shot as well as installation guide so one can apply on their instance.

BTW, the choice is yours

I tried to install and getting error.

bench get-app

bench --site site1.local install-app theming_tool

Installing theming_tool…
An error occurred while installing theming_tool:
(1048, “Column ‘custom’ cannot be null”)

I’ll do that, just give me some time.

checking it out ,

Do you installing it in new site?

getting this error while installing:

Installing theming_tool…
Updating DocTypes for theming_tool : [========================================]
An error occurred while installing theming_tool:
can’t pickle module objects

and then it broke my instance:

Traceback (most recent call last):
File “/home/flexy/frappe-bench/apps/frappe/frappe/”, line 73, in application
response =
File “/home/flexy/frappe-bench/apps/frappe/frappe/website/”, line 36, in render
File “/home/flexy/frappe-bench/apps/frappe/frappe/website/”, line 23, in resolve_redirect
redirects = frappe.get_hooks(‘website_redirects’)
File “/home/flexy/frappe-bench/apps/frappe/frappe/”, line 968, in get_hooks
hooks = _dict(cache().get_value(“app_hooks”, load_app_hooks))
File “/home/flexy/frappe-bench/apps/frappe/frappe/utils/”, line 80, in get_value
self.set_value(original_key, val, user=user)
File “/home/flexy/frappe-bench/apps/frappe/frappe/utils/”, line 48, in set_value
self.set(key, pickle.dumps(val))
TypeError: can’t pickle module objects

It’s already installed site1.local. I have tried to install this theming_tool and got the error

Hi, check this Link

Please check this Link and let me know if you still facing a problem.

Hi @afarran3, thanks for reply.

Your provided link contains to activate developer mode then install and migration but i have already v13.0.0-beta.4. application throw error (1048, “Column ‘custom’ cannot be null”) on the time of installing. i also tried to install other custom app but issue is same.

BTW, it seems to have error in my Database.

Thanks again.:+1:

I think your problem is that you are installing apps that builds with frappe v12 on sites with frappe v13.

This fixed it. It might be difficult to use though as one still has to figure out the class of each element in order to modify. Awesome app though.

1 Like

Try the browser inspect tool to get the class name it’s helpful.

solution for the error.

--drop column from sql
ALTER TABLE `tabModule Def` DROP COLUMN `custom`;
--run from frappe-bench
bench --site site1.local install-app theming_tool

Theming tool working fine.

@afarran3 : thanks for contribution.

1 Like

As much as I’d like to try this tool:

On downloading (attempt) I get the error:
FileNotFoundError: [Errno 2] No such file or directory: ‘./apps/theming_tool/’

I have the feeling this might be a permission issue, can you confirm - or do you maybe have another solution? Thank you.

EDIT: Additional info: I am trying this as user “frappe” inside the stock Ubuntu 18 production VM.

Can you post your steps and logs then point out where the error shows up?

Thank you for your reply. Of course I can, though it’s fairly simple:

  1. I log in as default user “frappe”
  2. I open up a terminal
  3. I do “cd frappe-bench”
  4. I enter the command(s) you posted in the first post up here (“bench get-app…” etc.)
  5. The last output line of this command is already the error I mentioned before.

Like I wrote before - it’s the stock Ubuntu VM, titled “ERPNext-Production-20200707093143” I am using. Also I did not alter anything in this image except setting up a static IP and then starting to adapt and playing around with ERPNext (from within, no external changes).

EDIT: Wait no, I installed the whole MATE Desktop train to have a GUI right on-machine. Though it’s no longer necessary because we are no longer testing on it directly, but from other PCs on the network.

Are you sure that you are passing commands from the bench folder? are all command work fine there?
please try the below command and share a screen shot.

frappe@myserve:~/erpnext$ bench version
erpnext 13.0.0-beta.9
frappe 13.0.0-beta.9