openSUSE / mentoring

The openSUSE Developer Mentoring Program
http://101.opensuse.org
60 stars 49 forks source link

iBus customized theme enhancement #182

Closed qiangzhao closed 1 year ago

qiangzhao commented 2 years ago

Project Title: iBus panel window support customized theme enhancement

Description: We will continue to develop and improve iBus theme features based on our past work 1, Only font family, font size, font color, and background color options are retained on the setting page of iBus. 2, add an import button to open a dialog to choose a theme. 3, create a theme create tool: it could open(import) an image, scale image, cut image into theme size, and save it as an iBus theme. The saved theme could be imported from iBus preferences page. 4, the student should apply to join openSUSE membership and have good communication to imply his(her) GSoC background and the work to the community. 5, Above work should be saved in https://github.com/openSUSE/Ibus-Theme-Tools.git, please not work in the personal repo. 6, Should submit from openSUSE repo to upstream repo when finished, feedback rapidly for upstream's question.

Additional 7, Explore the feasibility of integrating multiple topics and give a detailed report. 8, Explore the possibility of re-implementing iBus panel window, refer to LibreOffice and Mozilla-firefox, which could customize their theme under gnome-desktop. 9, Try to use openQA to test iBus, write a demo test case. (Eg: test iBus could run) and submit.

Deliverable: the modification to different desktop components to accomplish the target.

Mentor: @hillwoodroc @qiangzhao

Skills: C, C++, Python.

Skill Level: Medium

Get started: IBus 1.5 API: https://github.com/ibus/ibus/wiki GTK: https://gitlab.gnome.org/GNOME/gtk/ Gnome-shell: https://gitlab.gnome.org/GNOME/gnome-shell Example of Gnome-shell theme: https://www.gnome-look.org/p/1291819/

ddemaio commented 2 years ago

Hi @qiangzhao I listed this as a large sized project. About 175 hrs for the student for the medium size and 350 hrs for a large project. Please change it if it isn't correct.

markbowen21 commented 2 years ago

Hello I am a prospect 2022 Google Summer of Code contributor. As I came across your organizations project list and instructions I can see how much your organization values communication between mentors and mentees. Which is great to see and I would really enjoy talking to any mentor willing to explain more details about the goals and deliverables of this project in order to submit the best GSoC proposal possible. Thank you, Mark Bowen

AditiAgrawal95 commented 2 years ago

Hello, I found this project interesting and believe that I have the necessary skills to contribute to it. Could you please help me get in contact with any mentor so that I could understand more about this project and come up with the proposal. Thank You, Aditi

Muhamedelsayed commented 2 years ago

Hello @qiangzhao I came across with this project and and I am very excited about the idea. I think I can make stunning achievements in this project. is there any way to contact one of the mentors please. Thank you. Mohamed Elsayed

wolfcomos commented 2 years ago

Hi @qiangzhao, I'm also interested in this project! Are there any ways to get in touch with one of the mentors?

qiangzhao commented 2 years ago

Hi all: I'm so honored that you're interested in this little project and so honored to work with you. I think I can learn a lot from you too. I plan to draw a picture to indicate what the behavior would be, and will post it here recently to show the details. I think you don't have to communicate with a mentor in private. Please just leave your valuable comments here to keep all information public and transparent to everyone. My email address is already in public(zhaoqiangx@gmail.com), but I think it's improper to respond to emails individually. If you want to get some more background knowledge, you can have a look at [1] ~[4]. [1] and [2] are the 2 projects your code will contact with. [3], [4], is a project GSOC 2021, which accomplishes the custom theme function. Finally, I hope you can become the driving force of this project through continuous learning and continuous research. :)

[1], https://github.com/ibus/ibus/ [2], https://github.com/GNOME/gnome-control-center [3], https://github.com/openSUSE/Customize-IBus [4], https://github.com/openSUSE/IBus-Theme-Tools

qiangzhao commented 2 years ago

image I made a sketch to illustrate the goal of the work, hoping it would help. :)

qiangzhao commented 2 years ago

font Or maybe you prefer to use font select dialog as this to avoid cluttered panels, it's all fine. Please note the above design is just an idea to show the basic design framework.

qiangzhao commented 2 years ago

gnome-control-center This is how the gnome-control-center works currently.

HollowMan6 commented 2 years ago

@qiangzhao Oh, looks cool. Guess I misunderstood your meaning previously, I used to think that the above features should apply both with GNOME and Non-GNOME desktop, and that requires the techniques I mentioned previously in my email which will be much harder.

For this one, it's not needed to re-implement iBus panel window, as the iBus panel window is already re-implemented under GNOME, we can already customize the theme under gnome-desktop easily.

8, Explore the possibility of re-implementing iBus panel window, refer to LibreOffice and Mozilla-firefox, which could customize their theme under gnome-desktop.

So for this idea, merging some features from https://github.com/openSUSE/Customize-IBus into https://github.com/GNOME/gnome-control-center would be enough, since many features has already been realized by the extension just mentioned in my GSoC 2021 work (except the background clip part), the work will be mainly for refactoring.

Then I would be very happy to apply again for GSoC 2022 as a student/mentee under this idea.

HollowMan6 commented 2 years ago

@qiangzhao Hi! I'm now writing to define the project scope. Can I ask and confirm if the design above is approved by the gnome-control-center upstream maintainer? If it's OK, then modifications in the following part of the code would be the project scope, it's all written in C: https://gitlab.gnome.org/GNOME/gnome-control-center/-/tree/master/panels/keyboard

If we haven't made any contact with the the upstream about the above design, as I also can't see any issues proposed there in gnome-control-center about this, and as a common practice that GNOME usually put customization part related to fonts and themes into gnome-tweaks, so it's very likely that we have to put the features there instead of gnome-control-center, and if we decide to put it into gnome-tweaks, we have to use Python instead of C.

Once we have confirmed the project scope and the upstream accepts our design to ensure they will eventually merge the code into GNOME if my work is up to the standard, I can then start working to refactor the GJS code in https://github.com/openSUSE/Customize-IBus into the related language for the gnome-tweaks or gnome-control-center.

qiangzhao commented 2 years ago

For HowllowMan6's proposal: I am very honored to have you participate in the last phase of the project, and I remember you impressed us with a good portion of the work you accomplished during the student pre-selection period, I hope future students can be as active and productive as you. But please be aware that the purpose of this project is to help more students have the opportunity to participate in open source and enhance developing skills. so we Don't encourage a same student repeated participation in the same type of project under same mentor. It’s not only for you, we make same demands of all our past students. Especially, given the same conditions, and this time we will give priority to students from all global, as all previous students who participated were Chinese. I hope you can understand me. And you are welcome to continue contributing to the open source community including your ideas, code… Thank you for so much contribution which you did.

HollowMan6 commented 2 years ago

@qiangzhao Ok, I see then. Will be happy to join you as a mentor next year if there's more project related to IBus as I didn't manage to contact you earlier this year!

qiangzhao commented 2 years ago

input When if a student don't know how to check the ibus pre-edit window, he will need to install and enable a input engine which will call pre-edit function first, then use a software which accept ibus input (say gedit) to enable the engine. This picture take ibus-libpinyin as an example. There may have other short ways to test. but this is the common way user use it. :)

qiangzhao commented 2 years ago

Does anybody have any questions? please leave your comment. @Muhamedelsayed @wolfcomos @markbowen21 @AditiAgrawal95

qiangzhao commented 2 years ago

If we have no idea how to control iBus theme, maybe "IBus Tweaker" is a short example.

https://extensions.gnome.org/extension/2820/ibus-tweaker/ https://github.com/tuberry/ibus-tweaker

qiangzhao commented 2 years ago

Gnome-shell theme with the customized background image, use Unity8-Wood theme as an example.

https://www.gnome-look.org/p/1291819/