Giter VIP home page Giter VIP logo

dxp's People

Contributors

kud-aa avatar mangalinor avatar mmskv avatar thehussky avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

dxp's Issues

Handle errors

  • Printing errno on error would be very useful to debug socket communications.
  • Implement an error message for cases when get_monitors fails (WM doesn't support _NET_DESKTOP_VEWPORT)
  • Error handling in daemon
  • Error handling in dexpo
  • Handle xcb errors with xcb_generic_error_t

Very high memory usage

Memory usage is three times higher than it should be.
Remove redundant copying to fix.

Draw a rectangle that can display ZPixmaps

Use xcb to create a window with customizable background and draw screenshot of current desktop there with a border and caption.

  • Screenshot should be made at program start (in the next version screenshots will be fetched from daemon)
  • Caption should be equal to _NET_DESKTOP_NAMES

Analyze other pager applications

Rieman

  • Analyze the way it handles window moves and other events
  • Analyze the way it parses viewports and desktop geometries (really bad at a glance)
  • Analyze the way it draws fonts (UTF characters don't get drawn so idk)

Analyze other pagers and report below

Add tests for sockets

Old tests are obsolete now, so new have to be written.

Please add following cases:

  • Can send and receive many pixmaps (with a benchmark)
  • Test race conditions

Don't create unnecessary pixmap copies

in daemon.cpp:

desktops[current].save_screen ();
// Copying pixmap from desktops into socket pixmaps
socket_desktops[current].pixmap = desktops[current].pixmap;

Here pixmaps are copied to prevent race conditions.

Avoid copying and instead use mutex to prevent race conditions.

Improve UX

Based on my interactions with Linux applications, current GUI UX doesn't feel right.
Here is the list of what I would expect from it. You may disagree with me, so please respond with your expectations.

  • Exit dexpo after desktop change event. (Why would I need dexpo running after I have moved to another desktop)
  • Display preselection around current _NET_WM_DESKTOP on startup
  • Draw border around all desktops
  • Border size should not obstruct padding size

And add these options to the config file

Major refactor

Codebase is becoming more intertwined and shitty so some action is required.

A major new feature would be a config parser because I don't like recompiling every time I change the config.

Project rename dexpo->dxp

This is a minimalistic application and it needs a fitting name.

Pros:

  • Less keystrokes to type name in the terminal
  • dxpd (dexpo daemon) sounds cool

Cons:

  • muh consistency

To rename or to keep? Discuss here

Add a Makefile

Writing

cmake -B ./build/
cmake --build ./build/

every time is tedious

Implement logging

Dexpo havs many places that need debugging output.
Please add verbosity toggle to config and a sleek function to print to file/cerr

Test behavior on different WMs

Test get_desktops() by sending sample EWMH atoms as WMs would do.

These atom values can be checked by hand in different WMs and added to tests.

Code quality

  • Rename classes and files to be more verbose
  • Custom deleter for unique_ptr<xcb_get_image_reply_t> and others
  • Consistent integer types
  • Disable desktop names functionality for now
  • Change #define to constexpr
  • Comments in the doxygen style
  • Move EWMH related functions from daemon.cpp to ewmh.cpp
  • #21

Handle workspace deletions and size changes

Also dimensions of xmonad desktops can be changed during runtime, so this has to be handled properly.
Perhaps desktop initialization during runtime is unnecessary and should be done just before the screenshot is made.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.