mirror of
https://github.com/prashantgupta24/automatic-mouse-mover.git
synced 2024-12-22 16:34:11 +00:00
commit
7cf54ae179
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
vendor/
|
vendor/
|
||||||
|
bin/
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Prashant Gupta
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
26
Makefile
26
Makefile
@ -1,5 +1,29 @@
|
|||||||
|
all: open
|
||||||
|
|
||||||
|
build: clean
|
||||||
|
mkdir -p -v ./bin/amm.app/Contents/Resources
|
||||||
|
mkdir -p -v ./bin/amm.app/Contents/MacOS
|
||||||
|
cp ./appInfo/*.plist ./bin/amm.app/Contents/Info.plist
|
||||||
|
cp ./appInfo/*.icns ./bin/amm.app/Contents/Resources/icon.icns
|
||||||
|
go build -o ./bin/amm.app/Contents/MacOS/amm cmd/main.go
|
||||||
|
|
||||||
|
open: build
|
||||||
|
open ./bin
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ./bin
|
||||||
|
|
||||||
start:
|
start:
|
||||||
go run cmd/main.go
|
go run cmd/main.go
|
||||||
|
|
||||||
test:
|
test:
|
||||||
go test -v -race -failfast ./...
|
go test -v -race -failfast ./...
|
||||||
|
|
||||||
|
vet:
|
||||||
|
go vet $(shell glide nv)
|
||||||
|
|
||||||
|
lint:
|
||||||
|
go list ./... | grep -v vendor | xargs -L1 golint -set_exit_status
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
.PHONY: clean
|
1
README.md
Normal file
1
README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
## Presenting the minimalistic Automatic-Mouse-Mover(AMM) app!
|
16
appInfo/Info.plist
Normal file
16
appInfo/Info.plist
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>amm</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>icon.icns</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.pg.amm</string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
<key>LSUIElement</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
BIN
appInfo/icon.icns
Normal file
BIN
appInfo/icon.icns
Normal file
Binary file not shown.
1456
assets/icon/trayIcon.go
Normal file
1456
assets/icon/trayIcon.go
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/getlantern/systray"
|
"github.com/getlantern/systray"
|
||||||
"github.com/getlantern/systray/example/icon"
|
"github.com/prashantgupta24/automatic-mouse-mover/assets/icon"
|
||||||
"github.com/prashantgupta24/automatic-mouse-mover/pkg/mousemover"
|
"github.com/prashantgupta24/automatic-mouse-mover/pkg/mousemover"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -15,7 +15,6 @@ func main() {
|
|||||||
func onReady() {
|
func onReady() {
|
||||||
go func() {
|
go func() {
|
||||||
systray.SetIcon(icon.Data)
|
systray.SetIcon(icon.Data)
|
||||||
systray.SetTitle("AMM")
|
|
||||||
ammStart := systray.AddMenuItem("Start", "start the app")
|
ammStart := systray.AddMenuItem("Start", "start the app")
|
||||||
ammStop := systray.AddMenuItem("Stop", "stop the app")
|
ammStop := systray.AddMenuItem("Stop", "stop the app")
|
||||||
systray.AddSeparator()
|
systray.AddSeparator()
|
||||||
|
@ -9,9 +9,10 @@ import (
|
|||||||
"github.com/prashantgupta24/activity-tracker/pkg/tracker"
|
"github.com/prashantgupta24/activity-tracker/pkg/tracker"
|
||||||
)
|
)
|
||||||
|
|
||||||
var instance *mouseMover
|
var instance *MouseMover
|
||||||
|
|
||||||
type mouseMover struct {
|
//MouseMover is the main struct for the app
|
||||||
|
type MouseMover struct {
|
||||||
quit chan struct{}
|
quit chan struct{}
|
||||||
isRunning bool
|
isRunning bool
|
||||||
}
|
}
|
||||||
@ -20,7 +21,8 @@ const (
|
|||||||
timeout = 100 //ms
|
timeout = 100 //ms
|
||||||
)
|
)
|
||||||
|
|
||||||
func (m *mouseMover) Start() {
|
//Start the main app
|
||||||
|
func (m *MouseMover) Start() {
|
||||||
m.quit = make(chan struct{})
|
m.quit = make(chan struct{})
|
||||||
|
|
||||||
frequency := 5 //value always in seconds
|
frequency := 5 //value always in seconds
|
||||||
@ -31,7 +33,7 @@ func (m *mouseMover) Start() {
|
|||||||
|
|
||||||
heartbeatCh := activityTracker.Start()
|
heartbeatCh := activityTracker.Start()
|
||||||
|
|
||||||
go func(m *mouseMover) {
|
go func(m *MouseMover) {
|
||||||
m.isRunning = true
|
m.isRunning = true
|
||||||
movePixel := 10
|
movePixel := 10
|
||||||
for {
|
for {
|
||||||
@ -70,7 +72,8 @@ func moveMouse(movePixel int, commCh chan bool) {
|
|||||||
commCh <- true
|
commCh <- true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *mouseMover) Quit() {
|
//Quit the app
|
||||||
|
func (m *MouseMover) Quit() {
|
||||||
//making it idempotent
|
//making it idempotent
|
||||||
if m != nil && m.isRunning {
|
if m != nil && m.isRunning {
|
||||||
m.quit <- struct{}{}
|
m.quit <- struct{}{}
|
||||||
@ -78,9 +81,9 @@ func (m *mouseMover) Quit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//GetInstance gets the singleton instance for mouse mover app
|
//GetInstance gets the singleton instance for mouse mover app
|
||||||
func GetInstance() *mouseMover {
|
func GetInstance() *MouseMover {
|
||||||
if instance == nil {
|
if instance == nil {
|
||||||
instance = &mouseMover{}
|
instance = &MouseMover{}
|
||||||
}
|
}
|
||||||
return instance
|
return instance
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user