Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Another JWM project
#1
Hey everyone, I don't know if this is the right place but I'll post it here anyway.

I am currently writing a  low dependency quasi session manager for JWM.
It is written exclusively in C. It only uses libbsd and libconfuse as dependicies (for now)

Now you are probably wondering why?
Can't I just use Dex? Yes I could, but I want something more fast, something that could potentially run after every login with no performance impact. As for lxsession, I feel it's too intergrated with lxde.

The bare minimum of what this project hopes to implement is the following:

xdg-user-dirs management
Automatic JWM menu updates
New easy config file for managing the look and feel of jwm
XDG Autostart

Overall, this project aims use ideas from different programs like Dex and JWMKit and combine it to make something extremely lightweight yet improving the JWM experience.

So what is currently done you may ask?

Well I only started several days ago but my .desktop parser for the most part works perfectly. It's fast too, unlike all these python scripts out there, haha. 

Right now I'm working on the auto generation config for jwm. The root menu has a few issues where I need to strip %U and %F arguments that require a input. But other that I'm making good progress.

If you guys are interested, I will post a link to my github.

EDIT: Early alpha version is now out for testing!
Please feel free to request any features and report any bugs.
https://github.com/purpasmart96/jwms/releases
Reply
#2
Seems like a really great project to me! Please post your github link and keep up posted.
Reply
#3
Here's the link to the project on my GitHub.

https://github.com/purpasmart96/jwms

It's still very early in development, so please keep that in mind. I'm currently using the BSD 3 license but might switch it to GPL2.
You only need libbsd and libconfuse to compile it. Just run the build.sh script and the binary will be in the newly created build folder.
Also, The script builds it without optimization for debugging purposes, so just a FYI.
Reply
#4
Update. The root menu generation is pretty much done, the only thing missing is getting the icons, right now it just uses the category name for the icon for now. Icons will be handled eventually. The tray menu is about half done. It can currently generate the tray menu but it's still mostly hardcoded, it will try to use the browser, terminal, and file manager you selected in the .conf file, otherwise it looks up one that works. I might take a break on auto config stuff and work on the daemon part next. Will push the changes to github today or tomorrow.

I also fixed a pretty bad memory leak, I forgot to free the line in getline. No more memory leaks now.
Reply
#5
Alright guys, How would you feel about having GTK3 as a dependency? Right now I'm doing a lot of reinventing the wheel, and it is slowing down progress. Just implementing how icons are searched for in XDG is quite tricky. Lots of parsing of files, searching directories, etc. And that's not even including all the other stuff I have to reimplement. Using GTK3 for example would speed things up a lot and you might see an initial version release in late April. For now, I'm going to try to avoid it for now, since switching over to using GTK will drastically change the codebase for my project long-term.
Reply
#6
>How would you feel about having GTK3 as a dependency?

That's a tough question to answer, right? What are the odds of someone electing to use JWM and not not having GTK3 on their system? On the other hand, JWM is really low dependency, so so I could see keeping the dependencies of your project inline with that.
Reply
#7
(03-20-2024, 04:27 AM)John Wrote: >How would you feel about having GTK3 as a dependency?

That's a tough question to answer, right?  What are the odds of someone electing to use JWM and not not having GTK3 on their system?  On the other hand, JWM is really low dependency, so so I could see keeping the dependencies of your project inline with that.

Yeah, I was thinking of staying away from using GTK since the whole goal of this session manager is to stay lightweight and have minimal dependencies like jwm. I think it's going to stay that way, but there aren't that many libraries written in C that just search the icons, I've only found one project called "xdg-xmenu" and I might take some ideas from that. Another problem I've faced is that ini parser I was going to use has a max line limit of 1024 characters, which is unfortunate since there is one line in index.theme that always going to vary with length, and the common papirus icon theme goes way past that. So I'm going to have to drop iniparser and keep doing everything manually. I might have to take a look at inih though, you can change the max line length at compile time.
Reply
#8
Can you explain why you would need a line longer than 1024 characters? That's already a pretty expansive boundary from historical perspective.
Reply
#9
Hey guys, I've currently made pretty good progress so far, I might even release a pre-alpha version next week or the week after. 

Currently, it generates the JWM menu with all your installed programs and includes their icons, it also handles part of the look and feel of JWM itself. Right now it's not automatic yet, every time you need to update the root menu and the theme it will need to be run manually with the jwms.conf file in the same directory.

(05-24-2024, 09:58 PM)Nathan Wrote: Can you explain why you would need a line longer than 1024 characters? That's already a pretty expansive boundary from historical perspective.

The index.theme file that specifies the icon theme has one key-value pair that can be as long as it wants, to be more specific, the "Directories" key, which contains the list of directories for the icon theme.

For example, on my main PC which runs EndeavourOS, the index.theme for hicolor (the default icon path) has the "Directories" line over 11000 characters!

So I ended up rolling my own custom parser for it.
Reply
#10
Hash table?
Reply


Forum Jump:


Users browsing this thread: 8 Guest(s)