Skip to content

feat: added keyboard and mouse listener #8909

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Apr 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,8 @@
"lparam",
"refcon",
"cflags",
"uiohook",
"gauzyagent",
"PostHog",
"posthog",
"autocapture"
Expand Down
8 changes: 5 additions & 3 deletions apps/agent/src/main/workers/pull-activities.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { KeyboardMouseEventCounter } from '@gauzy/desktop-activity';
class PullActivities {
static instance: PullActivities;
private listenerModule: any;
private listenerModule: KeyboardMouseEventCounter;
private isStarted: boolean;
constructor() {
if (!PullActivities.instance) {
Expand All @@ -19,8 +20,7 @@ class PullActivities {

getListenerModule() {
try {
// this is not implemented yet
this.listenerModule = null;
this.listenerModule = new KeyboardMouseEventCounter();
} catch (error) {
console.error('error on get listener module', error);
}
Expand All @@ -32,6 +32,7 @@ class PullActivities {
}
try {
if (!this.isStarted) {
this.listenerModule.startListener();
this.isStarted = true;
}
} catch (error) {
Expand All @@ -44,6 +45,7 @@ class PullActivities {
this.getListenerModule();
}
try {
this.listenerModule.stopListener();
this.isStarted = false;
} catch (error) {
console.error('error to stop tracking', error);
Expand Down
14 changes: 8 additions & 6 deletions apps/agent/src/package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "gauzy-agent",
"productName": "Ever Gauzy Agent",
"productName": "Gauzy Agent",
"version": "0.1.0",
"description": "Ever Gauzy Agent",
"description": "Gauzy Agent",
"license": "AGPL-3.0",
"homepage": "https://gauzy.co",
"repository": {
Expand All @@ -23,16 +23,17 @@
"packages": [
"../../../dist/packages/contracts",
"../../../dist/packages/desktop-core",
"../../../dist/packages/desktop-activity",
"../../../dist/packages/desktop-lib",
"../../../dist/packages/desktop-window",
"../../../dist/packages/ui-config",
"../../../dist/packages/constants"
]
},
"build": {
"appId": "com.ever.agentapp",
"appId": "com.ever.gauzyagent",
"artifactName": "${name}-${version}.${ext}",
"productName": "Ever Agent App",
"productName": "Gauzy Agent",
"copyright": "Copyright © 2019-Present. Ever Co. LTD",
"afterSign": "tools/notarize.js",
"dmg": {
Expand Down Expand Up @@ -97,7 +98,7 @@
"deb",
"tar.gz"
],
"executableName": "Agent",
"executableName": "ever-gauzy-agent",
"artifactName": "${name}-${version}.${ext}",
"synopsis": "Desktop",
"category": "Development"
Expand Down Expand Up @@ -132,6 +133,7 @@
"node-notifier": "^8.0.0",
"@gauzy/contracts": "file:../../../dist/packages/contracts",
"@gauzy/desktop-core": "file:../../../dist/packages/desktop-core",
"@gauzy/desktop-activity": "file:../../../dist/packages/desktop-activity",
"@gauzy/desktop-lib": "file:../../../dist/packages/desktop-lib",
"@gauzy/desktop-window": "file:../../../dist/packages/desktop-window",
"@gauzy/ui-config": "file:../../../dist/packages/ui-config",
Expand All @@ -144,6 +146,6 @@
"@sentry/tracing": "^7.101.1",
"@sentry/types": "^7.101.1",
"auto-launch": "5.0.5",
"custom-electron-titlebar": "^4.2.8"
"custom-electron-titlebar": "^4.2.8"
}
}
4 changes: 3 additions & 1 deletion apps/desktop-timer/src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"packages": [
"../../../dist/packages/contracts",
"../../../dist/packages/desktop-core",
"../../../dist/packages/desktop-activity",
"../../../dist/packages/desktop-lib",
"../../../dist/packages/desktop-window",
"../../../dist/packages/ui-config",
Expand Down Expand Up @@ -137,6 +138,7 @@
"@electron/remote": "^2.0.8",
"@gauzy/contracts": "file:../../../dist/packages/contracts",
"@gauzy/desktop-core": "file:../../../dist/packages/desktop-core",
"@gauzy/desktop-activity": "file:../../../dist/packages/desktop-activity",
"@gauzy/desktop-lib": "file:../../../dist/packages/desktop-lib",
"@gauzy/desktop-window": "file:../../../dist/packages/desktop-window",
"@gauzy/ui-config": "file:../../../dist/packages/ui-config",
Expand Down Expand Up @@ -174,4 +176,4 @@
"undici": "^6.10.2",
"custom-electron-titlebar": "^4.2.8"
}
}
}
2 changes: 2 additions & 0 deletions apps/desktop/src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
"../../../dist/packages/contracts",
"../../../dist/packages/core",
"../../../dist/packages/desktop-core",
"../../../dist/packages/desktop-activity",
"../../../dist/packages/desktop-lib",
"../../../dist/packages/desktop-window",
"../../../dist/packages/plugin",
Expand Down Expand Up @@ -154,6 +155,7 @@
"@gauzy/contracts": "file:../../../dist/packages/contracts",
"@gauzy/core": "file:../../../dist/packages/core",
"@gauzy/desktop-core": "file:../../../dist/packages/desktop-core",
"@gauzy/desktop-activity": "file:../../../dist/packages/desktop-activity",
"@gauzy/desktop-lib": "file:../../../dist/packages/desktop-lib",
"@gauzy/desktop-window": "file:../../../dist/packages/desktop-window",
"@gauzy/plugin": "file:../../../dist/packages/plugin",
Expand Down
2 changes: 2 additions & 0 deletions apps/server-api/src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"../../../dist/packages/contracts",
"../../../dist/packages/core",
"../../../dist/packages/desktop-core",
"../../../dist/packages/desktop-activity",
"../../../dist/packages/desktop-lib",
"../../../dist/packages/desktop-window",
"../../../dist/packages/plugin",
Expand Down Expand Up @@ -143,6 +144,7 @@
"@gauzy/contracts": "file:../../../dist/packages/contracts",
"@gauzy/core": "file:../../../dist/packages/core",
"@gauzy/desktop-core": "file:../../../dist/packages/desktop-core",
"@gauzy/desktop-activity": "file:../../../dist/packages/desktop-activity",
"@gauzy/desktop-lib": "file:../../../dist/packages/desktop-lib",
"@gauzy/desktop-window": "file:../../../dist/packages/desktop-window",
"@gauzy/plugin": "file:../../../dist/packages/plugin",
Expand Down
2 changes: 2 additions & 0 deletions apps/server/src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"../../../dist/packages/contracts",
"../../../dist/packages/core",
"../../../dist/packages/desktop-core",
"../../../dist/packages/desktop-activity",
"../../../dist/packages/desktop-lib",
"../../../dist/packages/desktop-window",
"../../../dist/packages/plugin",
Expand Down Expand Up @@ -143,6 +144,7 @@
"@gauzy/contracts": "file:../../../dist/packages/contracts",
"@gauzy/core": "file:../../../dist/packages/core",
"@gauzy/desktop-core": "file:../../../dist/packages/desktop-core",
"@gauzy/desktop-activity": "file:../../../dist/packages/desktop-activity",
"@gauzy/desktop-lib": "file:../../../dist/packages/desktop-lib",
"@gauzy/desktop-window": "file:../../../dist/packages/desktop-window",
"@gauzy/plugin": "file:../../../dist/packages/plugin",
Expand Down
11 changes: 7 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -269,15 +269,18 @@
"build:package:plugin:integration-wakatime": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn nx build plugin-integration-wakatime",
"build:package:plugin:integration-wakatime:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn nx build plugin-integration-wakatime",
"build:package:plugin:integration-wakatime:docker": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=60000 yarn nx build plugin-integration-wakatime",
"build:package:all": "yarn run build:package:constants && yarn run build:package:contracts && yarn run build:package:common && yarn run build:package:utils && yarn run build:package:config && yarn run build:package:plugin && yarn run build:package:auth && yarn run build:package:plugins:pre && yarn run build:package:core && yarn run build:package:plugins:post && yarn run build:package:desktop-lib && yarn run build:package:plugin:integration-wakatime && yarn run build:package:desktop-ui-lib",
"build:package:all:prod": "yarn run build:package:constants:prod && yarn run build:package:contracts:prod && yarn run build:package:common:prod && yarn run build:package:utils:prod && yarn run build:package:config:prod && yarn run build:package:plugin:prod && yarn run build:package:auth:prod && yarn run build:package:plugins:pre:prod && yarn run build:package:core:prod && yarn run build:package:plugins:post:prod && yarn run build:package:desktop-lib:prod && yarn run build:package:plugin:integration-wakatime:prod && yarn run build:package:desktop-ui-lib:prod",
"build:package:all:docker": "yarn run build:package:constants:docker && yarn run build:package:contracts:docker && yarn run build:package:common:docker && yarn run build:package:utils:docker &&yarn run build:package:config:docker && yarn run build:package:plugin:docker && yarn run build:package:auth:docker && yarn run build:package:plugins:pre:docker && yarn run build:package:core:docker && yarn run build:package:plugins:post:docker && yarn run build:package:desktop-lib:docker && yarn run build:package:plugin:integration-wakatime:docker && yarn run build:package:desktop-ui-lib:docker",
"build:package:all": "yarn run build:package:constants && yarn run build:package:contracts && yarn run build:package:common && yarn run build:package:utils && yarn run build:package:config && yarn run build:package:plugin && yarn run build:package:auth && yarn run build:package:plugins:pre && yarn run build:package:core && yarn run build:package:plugins:post && yarn run build:package:desktop-activity && yarn run build:package:desktop-lib && yarn run build:package:plugin:integration-wakatime && yarn run build:package:desktop-ui-lib",
"build:package:all:prod": "yarn run build:package:constants:prod && yarn run build:package:contracts:prod && yarn run build:package:common:prod && yarn run build:package:utils:prod && yarn run build:package:config:prod && yarn run build:package:plugin:prod && yarn run build:package:auth:prod && yarn run build:package:plugins:pre:prod && yarn run build:package:core:prod && yarn run build:package:plugins:post:prod && yarn run build:package:desktop-activity:prod && yarn run build:package:desktop-lib:prod && yarn run build:package:plugin:integration-wakatime:prod && yarn run build:package:desktop-ui-lib:prod",
"build:package:all:docker": "yarn run build:package:constants:docker && yarn run build:package:contracts:docker && yarn run build:package:common:docker && yarn run build:package:utils:docker &&yarn run build:package:config:docker && yarn run build:package:plugin:docker && yarn run build:package:auth:docker && yarn run build:package:plugins:pre:docker && yarn run build:package:core:docker && yarn run build:package:plugins:post:docker && yarn build:package:desktop-activity:docker && yarn run build:package:desktop-lib:docker && yarn run build:package:plugin:integration-wakatime:docker && yarn run build:package:desktop-ui-lib:docker",
"build:package:api": "yarn run build:package:constants && yarn run build:package:contracts && yarn run build:package:common && yarn run build:package:utils && yarn run build:package:config && yarn run build:package:plugin && yarn run build:package:auth && yarn run build:package:core && yarn run build:package:plugins:post && yarn run build:package:plugin:integration-wakatime",
"build:package:api:prod": "yarn run build:package:constants:prod && yarn run build:package:contracts:prod && yarn run build:package:common:prod && yarn run build:package:utils:prod && yarn run build:package:config:prod && yarn run build:package:plugin:prod && yarn run build:package:auth:prod && yarn run build:package:core:prod && yarn run build:package:plugins:post:prod",
"build:package:api:docker": "yarn run build:package:constants:docker && yarn run build:package:contracts:docker && yarn run build:package:common:docker && yarn run build:package:utils:docker && yarn run build:package:config:docker && yarn run build:package:plugin:docker && yarn run build:package:auth:docker && yarn run build:package:core:docker && yarn run build:package:plugins:post:docker",
"build:package:gauzy": "yarn run build:package:constants && yarn run build:package:contracts && yarn run build:package:common && yarn run build:package:utils && yarn run build:package:config && yarn run build:package:plugin && yarn run build:package:auth && yarn run build:package:plugins:pre && yarn run build:package:core && yarn run build:package:plugins:post",
"build:package:gauzy:prod": "yarn run build:package:constants:prod && yarn run build:package:contracts:prod && yarn run build:package:common:prod && yarn run build:package:utils:prod && yarn run build:package:config:prod && yarn run build:package:plugin:prod && yarn run build:package:auth:prod && yarn run build:package:plugins:pre:prod && yarn run build:package:core:prod && yarn run build:package:plugins:post:prod",
"build:package:gauzy:docker": "yarn run build:package:constants:docker && yarn run build:package:contracts:docker && yarn run build:package:common:docker && yarn run build:package:utils:docker && yarn run build:package:config:docker && yarn run build:package:plugin:docker && yarn run build:package:auth:docker && yarn run build:package:plugins:pre:docker && yarn run build:package:core:docker && yarn run build:package:plugins:post:docker",
"build:package:desktop-activity": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn nx build desktop-activity",
"build:package:desktop-activity:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn nx build desktop-activity",
"build:package:desktop-activity:docker": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=60000 yarn nx build desktop-activity",
"copy-files-desktop": "copyfiles -f packages/core/src/**/*.gql dist/apps/desktop/data/",
"prepare:desktop-timer": "yarn run postinstall.electron && tsc -p apps/desktop-timer/tsconfig.electron.json",
"build:desktop-timer": "cross-env NODE_ENV=production yarn copy-files-i18n-desktop-timer && yarn run postinstall.electron && yarn run config:prod && yarn run config:desktop-timer:prod && yarn build:package:all:prod && yarn run pack:desktop-timer && yarn run generate:icons:desktop-timer --environment=prod && yarn ng:prod build desktop-timer --base-href=./ && yarn run prepare:desktop-timer && yarn ng:prod build desktop-api --configuration=production --output-path=dist/apps/desktop-timer/desktop-api && yarn run copy-assets-gauzy-timer",
Expand Down Expand Up @@ -338,7 +341,7 @@
"serve:agent:main": "cross-env NODE_ENV=development yarn config:agent:prod && yarn copy-files-i18n-agent && yarn prepare:agent && NODE_ENV=development NODE_PATH=dist/packages yarn electronmon ./dist/apps/agent/index.js",
"serve:agent:ui": "yarn config:prod && yarn config:agent:prod && yarn ng serve agent --configuration production",
"serve:agent": "concurrently \"yarn serve:agent:ui\" \"wait-on http://localhost:4200 && yarn serve:agent:main\"",
"build:agent": "cross-env NODE_ENV=production yarn copy-files-i18n-agent && yarn run postinstall.electron && yarn run config:agent:prod && yarn run generate:icons:agent --environment=prod && yarn config:prod && yarn pack:agent && yarn build:package:all:prod && yarn ng:prod build agent --base-href=./ && yarn run prepare:agent",
"build:agent": "cross-env NODE_ENV=production yarn copy-files-i18n-agent && yarn run postinstall.electron && yarn run config:agent:prod && yarn run generate:icons:agent --environment=prod && yarn config:prod && yarn build:package:all:prod && yarn pack:agent && yarn ng:prod build agent --base-href=./ && yarn run prepare:agent",
"copy-files-i18n-agent": "yarn run download:translations --desktop=agent",
"config:agent:prod": "yarn run config:electron -- --environment=prod --desktop=agent",
"dev:agent": "electronmon --exec ts-node ./apps/agent/src/index.ts",
Expand Down
24 changes: 24 additions & 0 deletions packages/desktop-activity/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# @gauzy/desktop-activity

This library was generated with [Nx](https://nx.dev).

## Building

Run `yarn nx build desktop-activity` to build the library.

## Running unit tests

Run `yarn nx test desktop-activity` to execute the unit tests via [Jest](https://jestjs.io).

## Publishing

After building your library with `yarn nx build desktop-activity`, go to the dist folder `dist/packages/desktop-activity` and run `npm publish`.

## Installation

Install the Desktop Activity Library using your preferred package manager:

```bash
npm install @gauzy/desktop-activity
# or
yarn add @gauzy/desktop-activity
19 changes: 19 additions & 0 deletions packages/desktop-activity/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const baseConfig = require('../../.eslintrc.json');

module.exports = [
...baseConfig,
{
files: ['**/*.json'],
rules: {
'@nx/dependency-checks': [
'error',
{
ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs}']
}
]
},
languageOptions: {
parser: require('jsonc-eslint-parser')
}
}
];
10 changes: 10 additions & 0 deletions packages/desktop-activity/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export default {
displayName: 'desktop-activity',
preset: '../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }]
},
moduleFileExtensions: ['ts', 'js'],
coverageDirectory: '../../coverage/packages/desktop-activity'
};
62 changes: 62 additions & 0 deletions packages/desktop-activity/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"name": "@gauzy/desktop-activity",
"version": "0.1.0",
"description": "Ever Gauzy Platform desktop activity",
"author": {
"name": "Ever Co. LTD",
"email": "[email protected]",
"url": "https://ever.co"
},
"repository": {
"type": "git",
"url": "https://github.com/ever-co/ever-gauzy",
"directory": "packages/desktop-activity"
},
"bugs": {
"url": "https://github.com/ever-co/ever-gauzy/issues"
},
"homepage": "https://ever.co",
"license": "AGPL-3.0",
"private": true,
"type": "commonjs",
"main": "./src/index.js",
"typings": "./src/index.d.ts",
"scripts": {
"lib:build": "yarn nx build desktop-activity",
"lib:build:prod": "yarn nx build desktop-activity",
"lib:watch": "yarn nx build desktop-activity --watch"
},
"dependencies": {
"moment": "^2.30.1",
"uiohook-napi": "^1.5.4",
"tslib": "^2.6.2"
},
"devDependencies": {
"@types/node": "^20.14.9",
"@types/unzipper": "^0.10.9",
"electron": "^30.0.1"
},
"keywords": [
"electron",
"desktop",
"desktop-activity",
"ever-gauzy",
"typescript",
"sqlite",
"knex",
"embedded-queue",
"moment",
"offline-mode",
"active-window",
"file-management",
"enterprise",
"platform",
"open-source",
"agpl"
],
"engines": {
"node": ">=20.11.1",
"yarn": ">=1.22.19"
},
"sideEffects": false
}
43 changes: 43 additions & 0 deletions packages/desktop-activity/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"name": "desktop-activity",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/desktop-activity/src",
"projectType": "library",
"release": {
"version": {
"generatorOptions": {
"packageRoot": "dist/{projectRoot}",
"currentVersionResolver": "git-tag"
}
}
},
"tags": [],
"implicitDependencies": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/packages/desktop-activity",
"main": "packages/desktop-activity/src/index.ts",
"tsConfig": "packages/desktop-activity/tsconfig.lib.json",
"assets": ["packages/desktop-activity/*.md"]
}
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint"
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "packages/desktop-activity/jest.config.ts"
}
}
}
}
3 changes: 3 additions & 0 deletions packages/desktop-activity/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './lib/kb-mouse';
export * from './lib/desktop-event-counter';
export * from './lib/kb-mouse-event-counter';
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

import { powerMonitor } from 'electron';

export class DesktopEventCounter {
Expand Down
Loading
Loading