Skip to content

Commit

Permalink
Merge pull request #228 from quexten/feature/macos
Browse files Browse the repository at this point in the history
Mac Support
  • Loading branch information
quexten authored Jun 2, 2024
2 parents 9ae9401 + 53271c3 commit d32147b
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 14 deletions.
10 changes: 8 additions & 2 deletions cli/agent/systemauth/pinentry/go-pinentry.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
//go:build freebsd || linux
//go:build freebsd || linux || darwin

package pinentry

import (
"errors"
"runtime"

"github.com/twpayne/go-pinentry"
)

func getPassword(title string, description string) (string, error) {
binaryClientOption := pinentry.WithBinaryNameFromGnuPGAgentConf()
if runtime.GOOS == "darwin" {
binaryClientOption = pinentry.WithBinaryName("pinentry-mac")
}

client, err := pinentry.NewClient(
pinentry.WithBinaryNameFromGnuPGAgentConf(),
binaryClientOption,
pinentry.WithGPGTTY(),
pinentry.WithTitle(title),
pinentry.WithDesc(description),
Expand Down
2 changes: 1 addition & 1 deletion cli/agent/systemauth/pinentry/keybase-pinentry.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build windows || darwin
//go:build windows

package pinentry

Expand Down
12 changes: 10 additions & 2 deletions gui/goldwarden_ui_main.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
#!/usr/bin/env python3
import src.linux.main as linux_main

linux_main.main()
import platform

if platform.system() == 'Darwin':
import src.macos.main as macos_main
macos_main.main()
elif platform.system() == 'Linux':
import src.linux.main as linux_main
linux_main.main()
else:
print("Unsupported OS " + platform.system() + "... exiting...")
11 changes: 5 additions & 6 deletions gui/src/gui/quickaccess.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
gi.require_version('Notify', '0.7')
# gi.require_version('Notify', '0.7')
import gc
import time
from gi.repository import Gtk, Adw, GLib, Notify, Gdk
from gi.repository import Gtk, Adw, GLib, Gdk
from ..services import goldwarden
from ..services.autotype import autotype
from threading import Thread
from .resource_loader import load_template
import sys
import os
from ..services import totp
Notify.init("Goldwarden")

class GoldwardenQuickAccessApp(Adw.Application):
def __init__(self, **kwargs):
Expand Down Expand Up @@ -115,8 +114,8 @@ def update(self):

def run_autotype(self, text):
def perform_autotype(text):
self.window.hide()
time.sleep(0.1)
GLib.idle_add(self.window.hide)
time.sleep(2)
autotype.autotype(text)
time.sleep(0.1)
os._exit(0)
Expand Down Expand Up @@ -148,7 +147,7 @@ def update_list(self):
self.filtered_logins = self.filtered_logins[0:7]

def render_list(self):
if len(self.filtered_logins) > 1:
if len(self.filtered_logins) > 0:
self.results_list.set_visible(True)
while self.results_list.get_first_child() != None:
self.results_list.remove(self.results_list.get_first_child())
Expand Down
3 changes: 1 addition & 2 deletions gui/src/gui/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,7 @@ def render(self):
if status == None:
is_daemon_running = goldwarden.is_daemon_running()
if not is_daemon_running:
self.status_row.set_subtitle("Daemon not running")
self.vault_status_icon.set_icon("dialog-error", "error")
print("Daemon not running")
return

logged_in = status["loggedIn"]
Expand Down
30 changes: 30 additions & 0 deletions gui/src/macos/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import sys
import subprocess
import os
import secrets
from src.services import goldwarden
from src.services import pinentry
import time

root_path = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, os.pardir))

def main():
token = secrets.token_hex(32)
if not os.environ.get("GOLDWARDEN_DAEMON_AUTH_TOKEN") == None:
token = os.environ["GOLDWARDEN_DAEMON_AUTH_TOKEN"]
print("Starting Goldwarden GUI")
goldwarden.run_daemon_background(token)
time.sleep(1)
#pinentry.daemonize()
if not "--hidden" in sys.argv:
p = subprocess.Popen(["python3", "-m", "src.gui.settings"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=root_path, start_new_session=True)
p.stdin.write(f"{token}\n".encode())
p.stdin.flush()
# print stdout
while True:
line = p.stderr.readline()
if not line:
break
print(line.decode().strip())
while True:
time.sleep(60)
5 changes: 4 additions & 1 deletion gui/src/services/autotype/pyautogui_autotype.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@

def autotype_pyautogui(text):
print("autotypeing with pyautogui")
pyautogui.write(text, interval=0.02)
pyautogui.write(text, interval=0.02)

if __name__ == "__main__":
autotype_pyautogui("hello world")

0 comments on commit d32147b

Please sign in to comment.