Giter VIP home page Giter VIP logo

kcshot's People

Contributors

flamion avatar kusabana avatar lucastarche avatar realkc avatar windows10ce avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

kcshot's Issues

HistoryModel is incorrect

Implementations must only make changes to the model (as visible to its consumer) in places that will not cause problems for that consumer. For models that are driven directly by a write API (such as GListStore), changes can be reported in response to uses of that API. For models that represent remote data, changes should only be made from a fresh mainloop dispatch. It is particularly not permitted to make changes in response to a call to the GListModel consumer API.
Stated another way: in general, it is assumed that code making a series of accesses to the model via the API, without returning to the mainloop, and without calling other code, will continue to view the same contents of the model.

(from https://docs.gtk.org/gio/method.ListModel.items_changed.html)

I'll get to this once it's less late/I have time

Postcapture actions

This would be a system that allows you to execute a series of actions on your screenshot after it was taken, enabling chains such as Capture -> Save -> Edit -> Copy to Clipboard or Capture -> Edit -> Upload to Image Host -> Copy to Clipboard.

More work on them will probably require some refactors on how screenshots get taken, I think.

X11-native systray icon

Context

Currently kcshot uses ksni exclusively to create a systray icon, this only works on systems that have a KDE/freedesktop Status Notifier Item host, which on WMs, means snixembed mostly (at least it does on awesomewm, which is what I use), it'd be nice if this dependency could be dropped.

XEmbed-based solution

This solution would make use of the old (and I imagine deprecated) systray specification, the high level overview of what needs to be done is:

  1. Create a window in the systray area using xcb
  2. Give ownership of it to gtk
  3. Add an image widget and a menu on right click

I, however, have been unable to make this work, my past attempts:

Alternatives

  1. Do nothing, preserve the status quo
  2. Make a special systray binary that runs in its own process and uses gtk3+libappindicator. It'd work, but I'm not sure I like this option

Optimize editor

The editor currently does a lot more work than needs to be done when receiving draw events, here are some things that could be done to improve the performance:

  • Avoid some allocations in editor::pixelops by avoiding the intermediate Pixbufs
  • Pull the editor::pixelops code into its own crate and config cargo to enable all optimizations on that one (this is most important for people running kcshot in debug mode -- which I am)
  • Figure out a way to cache previously drawn surfaces, so we don't need to execute all operations over and over each draw event

I'll update the issue if more things come to mind.

A better colour chooser

Currently this is our colour chooser:

image
image

This is a pretty limiting colour chooser, something like the following, from ShareX, would be better instead:

image

Better history widgets

  • Create a custom grid view widget for the history in the main panel
    • Currently the standard gtk widgets just load all the items in the model at once, we should make something that only loads viewable items (I think we'd need to manually implement the scrollable interface for this)
  • Add a list view that displays file paths, date when screenshot was taken and url that it was uploaded to. It should be accessible through the history button. It should also have a context menu with the same options as the one in the main view
  • Hide the history button when history is disabled (eccaf5d)
  • All the above widgets should have context menus for their items that allow you to copy images, urls, etc

A better text dialog

Currently our text dialog is pretty bad:

image

Ideally we'd have a better dialog, that allows for rich text formatting instead of what we currently have

(Opening issue as I don't want to work on this part of the app atm anymore)

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.