Coder Social home page Coder Social logo

ffmg / myoddweb.piger Goto Github PK

View Code? Open in Web Editor NEW
15.0 15.0 2.0 449.87 MB

Piger is a Keystroke Launcher allowing you to run your own commands from your keyboard. Highlight a word hold the caps lock key and simply type 'Google' to search for it in your browser. You can create your own commands, in C#, Powershell, (+3), Python, LUA, C++ and more.

Home Page: http://www.myoddweb.com

License: MIT License

C++ 44.42% C 7.50% Makefile 0.27% HTML 40.35% CSS 0.10% Perl 0.01% Batchfile 0.02% Shell 0.17% Max 0.01% XSLT 0.12% Python 6.74% Assembly 0.06% TeX 0.01% Tcl 0.01% JavaScript 0.16% C# 0.03% Cuda 0.01% Fortran 0.01% QMake 0.01% Objective-C 0.01%
batch-files cpp csharp csharp-script keyboard lua powershell python scripting

myoddweb.piger's People

Contributors

ffmg avatar trellixvulnteam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

myoddweb.piger's Issues

Invalid params in Python can kill the app!

If you have an invalid code, (missing variable or invalid parms then piger dies).

import am
am.say( 121, 10, 50 ); # dies here because '121' should be a string,
exit(1);

We need to catch those errors and tell the user that the script is broken.

Error on Execute( ... ) are not reported.

If there is an error during execute we should show an error message.

For example

am_execute( [[%SystemRoot%\System32\calcx.exe]], "", false);

the file calcx.exe does not exist, and the error should be reported.

HelperApi should have a 'last error' string and/or number so we can display the message.

Nothing is been logged.

While the log commands are called nothing actually seems to get logged.

The files are not created and nothing is logged, (because no files are created).

The path of the configuration is hard coded.

The configuration path is hardcoded to CONF_FULLPATH, ("%appdata%\MyOddWeb\ActionMonitor_d\profile.xml"), but we should be able to overwrite the value using command line params.

The values are set in

BOOL CActionMonitorApp::InitInstance()

Replace/remove the config data to use ::myodd::dynamic::Any

The namespace ::myodd::config uses the class ::myodd::config::Data, this is not as good as ::myodd::dynamic::Any

So we should just remove it and replace it.

We might need to add new functions like, is_int/is_float/is_string so we can save load/save the data properly.

Test on Windows XP/7/8/10.

We need to do a clean test on version of windows.

  • [ ] Windows XP
    • [ ] Clean
    • [ ] With Python 2.x installed.
    • [ ] With Python 3.x installed.
  • Windows 7 (Home basic x86)
    • Clean
    • With Python 2.x installed.
    • With Python 3.x installed.
  • Windows 8
    • Clean
    • With Python 2.x installed.
    • With Python 3.x installed.
  • Windows 10
    • Clean
    • With Python 2.x installed.
    • With Python 3.x installed.

Bitlocker scripts (ps)

Need scripts to lock/unlock drives.

  • Discover bitlock drives
  • Lock drive(s)
  • Unlock drive(s)

We need to look into the new TinyXML

The version of TinyXML that we are using in myodd::xml namespace is ancient, (2013 I think).

We need to start using the newer version, https://github.com/leethomason/tinyxml2

The issues we need to be aware of are

  • We made some small changes in our code, ideally those changes should not be present.
  • We have no tests so we cannot test if the new version fits our current requirements/use cases.

Opening programs behaviour on Windows

Hi, I just installed to try it, when I enter chrome or firefox or iexplore as a command, the url it opens is this one

file:///C:/Program%20Files/myoddweb/Piger/ActionMonitor.exe

Running piger-0.6.16.14.exe and I'm on Windows 7 64

Then I tried opening filezilla and I also get an error, I'm assuming that it's because "C:/Program%20Files/myoddweb/Piger/ActionMonitor.exe" is passed as a first argument to any program I open? Because if try to open filezilla.exe like this I get the same error.

Log files could grow massively and fall out of date.

There are some issues with log files

  • They are created/timestamped at start time, but if the pc runs for weeks/months the log file name is out of date, (making it hard to find).
  • The folder itself is never pruned, we should be able to remove files older than xyz days.
  • The file could grow to gigs in size, (maybe because of issue #1), this could be a problem. Maybe we should limit the file size to 10Mb and start a new file if need be.

Create a modeless ::say( ... )

Sometimes it would be nice to have a message appear that is non blocking.

am_say( ... ) is currently blocking, it would be great to have a non blocking version.

Exec are not working as expected

There are a couple of issues with the exes

  • We don;t know if the exe is elevated or now, when creating the action we should know if elevated or not.
  • Can params passed to the exe(s)?
  • AppPath module should be able to 'guess' if an app should be elevated or not.
  • AppPath should know of certain apps and either not include them, (because they are a waste of time), or include required params.
    • For example browsers, we should look for certain values to pass/not pass.
    • Certain apps like RDC could be passed params, but they need very specific information.

Durring setup, unwanted plugins should be removed

If a user selected to install a certain plugin, for example "Hello Dolly", but then choose not to install it again for the next update, the install will not install it.

But that could be a problem:

  • In case of breaking changes, (the API is still been worked on!)
  • In case the user will not understand why the unselected plugin(s) still appear.
  • How else can the users remove a plugin? (if not manually)

Get rid of some time windows functions in the logger

We need to get rid of some windows specific functions, they give anoying errors/warnings and are just not needed at all.

  • __time64_t
  • _time64
  • _localtime64_s

Those are not really needed, we just need the year/month/day

lua code node passing quoted arguments?

When we call

local blah = "Some string";
am_execute( [[my.exe]], [[query "]] ... blah ...[["]], false );

And I am also not 100% sure what will happen if the string is un-escaped, (blah=""hello""), or something like that.

Refresh environment variables

When environment variables are updated we need to restart the app.
This is not ideal we need to update all the variables, (like %path% and so on), so the launched apps get the latest values.

CF_HDROP not properly supported

CF_DROP is not properly supported.

  • We need to update the clipboard to read/write the data
  • We need to update the clipboard to return those files, (currently only the explorer files are returned).

Due to changes we need to re-test windows installs.

We need to do a clean test on version of windows.

  • Windows 7
    • Clean
    • With Python 2.x installed.
    • With Python 3.x installed.
  • Windows 8
    • Clean
    • With Python 2.x installed.
    • With Python 3.x installed.
  • Windows 10
    • Clean
    • With Python 2.x installed.
    • With Python 3.x installed.
  • [ ] UseEmbedded Python disabled, (in config)
    • [ ] With Python 2.x installed.
    • [ ] With Python 3.x installed.
    • [ ] Python not installed on user machine, (should not break)

List all plugins as 'tasks' durring setup

As the list of plugins will grow over time, we need to have a list of some sort, for example

  • General
    • Plugin A
    • Plugin B
  • Os specific
    • Plugin C
    • Plugin A
  • Misc
    • Plugin A
    • Plugin B
    • Plugin C

[Python] exit(1) causes Piger to close

The following code causes piger to close.

import am
am.say( "Goodbye!", 100, 5 )
exit(1)

Piger should not close because of an exit(1) request in the code.

Python close command is causing resources leak

Put the following code in the __out folder.

import am
am.say( "Piger is shutting Down", 100, 5 )

This will cause a resource issue in

_PyTraceMalloc_Fini(); // pylifecycle.c

The same issue does not appear if you call the same command directly.

Some large clipboards can cause crash - config to limit the sizes

  • Select an excel document
  • Select a large amount of rows, (a lot!)
  • Launch a piger action and this could cause the entire system to seize up.

This is because of the way we allocate memory for the clipboard, if the memory is extremely large then we could lock up the system.

Ideally we would have 2 clipboard options

  • Maximum memory size to allocate, (regardless of format, we will not burn too much memory).
  • List of 'excluded' formats, (so all others are included by default)
  • List of 'limited' formats, (so all others are excluded by default)

Add option to _not_ use the default embedded Python

Add a python section to the config to prevent the default embedded python.

<python>
  <useembedded type="1">1</useembedded>
</python>

This is useful for special cases where developers have set their environments to use special modules and so on,

When loader updates a command an error is returned.

When we add a command that already exits using loader, the command is created but an error message is returned.

learn calc
learn calc

the second learn calc will return an error even when created/updated properly,

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.