Tautulli / Tautulli-Issues

Bug reports for Tautulli
18 stars 3 forks source link

Nightly builds fail to launch using Python version 3 branch. #249

Closed Rogue-Git-Dev closed 4 years ago

Rogue-Git-Dev commented 4 years ago

Describe the Bug Nightly builds of Tautulli fail to launch unless using Python version 2.

Steps to Reproduce

  1. Instal the Nightly build of Tautulli, Python version 3, and all Python dependencies.
  2. Launch Tautulli via python3 Tautulli.py
  3. The trace back says a module called Foundation does not exist after an import of Foundation is attempted.

Expected Behaviour Tautulli should launch with assistance of Python version version 3.

Relevant Settings No relevant settings

Tautulli and System Info (see Tautulli settings page)

Link to logs (required) No logs exist when this error is reproduced. I deleted all previous logs and verified no logs were created when the aforementioned error is reproduced. However, the Terminal output is below.


Tautulli on  nightly [!?] ➜ python Tautulli.py
Traceback (most recent call last): File "Tautulli.py", line 38, in import plexpy File "/Users/User/Library/Application Support/Tautulli/plexpy/init.py", line 81, in from plexpy import webstart File "/Users/User/Library/Application Support/Tautulli/plexpy/webstart.py", line 33, in from plexpy.webserve import WebInterface, BaseRedirect File "/Users/User/Library/Application Support/Tautulli/plexpy/webserve.py", line 110, in from plexpy import macos File "/Users/User/Library/Application Support/Tautulli/plexpy/macos.py", line 22, in import rumps File "/Users/User/Library/Application Support/Tautulli/lib/rumps/init.py", line 25, in from .rumps import (separator, debug_mode, alert, notification, application_support, timers, quit_application, timer, File "/Users/User/Library/Application Support/Tautulli/lib/rumps/rumps.py", line 13, in import Foundation ModuleNotFoundError: No module named 'Foundation'

Tautulli on  nightly [!?] ➜

Rogue-Git-Dev commented 4 years ago

Tautulli was updated to commit hash 4390f5cbc84e0276726cf88fd8154ef6801d55a0. I attempted to launch the same way and the same Foundation module error was revealed in Terminal. I know not if this fix is part of the latest Nightly build, but it does not work for me. Also, the ‘tray icon’ setting is disabled.

Postscript: On Mac OS, it is called a ‘menu extras’ item because that is the Menu Extras bar not a System Tray as is on Windows.

JonnyWong16 commented 4 years ago

Try again.

The menu bar icon is only available if the pyobjc module is installed on MacOS. It must be installed manually.

pip install pyobjc
Rogue-Git-Dev commented 4 years ago

Right, and it was instaled before the first time I attempted to launch via Python version 3. Regardless, it says Foundation is not found even if the ‘System Tray icon’ is disabled.

JonnyWong16 commented 4 years ago

I meant try again now after I made some more changes.

Rogue-Git-Dev commented 4 years ago

Okay, inform me thusly when.

JonnyWong16 commented 4 years ago

I said now...

Rogue-Git-Dev commented 4 years ago

Thank you, it works on commit hash 89307dad01b5ddbda31fe4c44b605868da2e4eef.

However, the Menu Bar Icon [thanks for that] option says missing pyobjc module, but my instalation Python version 3 is not missing that module at all.

JonnyWong16 commented 4 years ago

Then it's not installed correctly or it's not part of the path where Tautulli can find it.

Rogue-Git-Dev commented 4 years ago

The following is output in the console when I attempt to instal pyobjc. Note python is an alias to python3. Perhaps the paths can be included in Tautulli if not already.


➜ pip install pyobjc
Requirement already satisfied: pyobjc in /Library/Python/3.7/site-packages (6.2)
Requirement already satisfied: pyobjc-framework-Speech==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-StoreKit==6.2; platform_release >= "11.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ServiceManagement==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Intents==6.2; platform_release >= "16.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Contacts==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AppleScriptKit==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-IOSurface==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-LatentSemanticMapping==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SpriteKit==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ScreenSaver==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-OpenDirectory==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ColorSync==6.2; platform_release >= "17.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SystemExtensions==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-InstallerPlugins==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-DiscRecordingUI==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MetalKit==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-InputMethodKit==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ExceptionHandling==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-FileProvider==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreText==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-LocalAuthentication==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-DiscRecording==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AVFoundation==6.2; platform_release >= "11.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-UserNotifications==6.2; platform_release >= "18.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-libdispatch==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Photos==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Quartz==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Security==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ExternalAccessory==6.2; platform_release >= "17.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-BusinessChat==6.2; platform_release >= "18.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-DiskArbitration==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-EventKit==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-GameCenter==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MediaLibrary==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-LaunchServices==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MultipeerConnectivity==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MapKit==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreMediaIO==6.2; platform_release >= "11.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SceneKit==6.2; platform_release >= "11.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ImageCaptureCore==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-IMServicePlugIn==6.2; platform_release >= "11.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-GameplayKit==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-PubSub==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AdSupport==6.2; platform_release >= "18.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-LinkPresentation==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ContactsUI==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SearchKit==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-NotificationCenter==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-iTunesLibrary==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CFNetwork==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CalendarStore==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreLocation==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Social==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MediaAccessibility==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ExecutionPolicy==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SafariServices==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Vision==6.2; platform_release >= "17.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Collaboration==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-DVDPlayback==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AuthenticationServices==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-PencilKit==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreMedia==6.2; platform_release >= "11.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-WebKit==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ApplicationServices==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Automator==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SystemConfiguration==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MediaToolbox==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-DeviceCheck==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AddressBook==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreML==6.2; platform_release >= "17.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreServices==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ScriptingBridge==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CryptoTokenKit==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-VideoToolbox==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Network==6.2; platform_release >= "18.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreAudioKit==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-MediaPlayer==6.2; platform_release >= "16.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-NetFS==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-DictionaryServices==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AppleScriptObjC==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AVKit==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-ModelIO==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-OSLog==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Accounts==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-OSAKit==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SyncServices==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreAudio==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Cocoa==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-PreferencePanes==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CloudKit==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SoundAnalysis==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-InstantMessage==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreMotion==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-NetworkExtension==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-FinderSync==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SecurityFoundation==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-GameKit==6.2; platform_release >= "12.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-PushKit==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-QuickLookThumbnailing==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreSpotlight==6.2; platform_release >= "17.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-NaturalLanguage==6.2; platform_release >= "18.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-SecurityInterface==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-VideoSubscriberAccount==6.2; platform_release >= "18.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreData==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-FSEvents==6.2; platform_release >= "9.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreWLAN==6.2; platform_release >= "10.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-AutomaticAssessmentConfiguration==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-Metal==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-GameController==6.2; platform_release >= "13.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-FileProviderUI==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreBluetooth==6.2; platform_release >= "14.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-CoreHaptics==6.2; platform_release >= "19.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-framework-PhotosUI==6.2; platform_release >= "15.0" in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
Requirement already satisfied: pyobjc-core==6.2 in /Library/Python/3.7/site-packages (from pyobjc) (6.2)
JonnyWong16 commented 4 years ago

Paths are part of your system not part of Tautulli. You would have to make sure it's included on your system.

Rogue-Git-Dev commented 4 years ago

I meant to write perhaps Tautulli can be made to check something it does not currently. That is, if Tautulli checks certain paths for Python instalations. My knowledge of how Tautulli verifies if any given module is present is meagre.

I instaled Python via Homebrew and instaled all dependencies via Pip. What must I do to make Tautulli find this module. It seems to find everything else required. Python 3.8.3 is not linked because it is not the main version and is used by other formulae, hence 3.7.7 is used.

JonnyWong16 commented 4 years ago

I don't use a Mac so I couldn't tell you.

Rogue-Git-Dev commented 4 years ago

Okay. I am certain the module is instaled correctly. Does Tautulli recognise Python 3.7? I assume it does because it launches properly, but thought to ask because that is where all modules are instaled correctly.

JonnyWong16 commented 4 years ago

Python 3.6, 3.7, and 3.8 is supported. You have to be really careful with your paths conflicting with each other when you have multiple versions of Python installed.

Rogue-Git-Dev commented 4 years ago

Right, I know dependencies can be quite messy. Version 3.8 on my system does not have pyobjc, or any other required module.

Rogue-Git-Dev commented 4 years ago

Problem solved. Every dependency, including pip, depended on the instalation of an IDE called Xcode which is the environment Apple provides free of charge. It was on my machine because other things depended on it some time ago, but discovered it conflicted with my entire instalation of Python version 3. After removal of Xcode, I was able to fix every dependency via pip-review which are now completely independent of Xcode as they should have been, and the pyobjc module works as intended with Tautulli. The option to enable the menu bar icon is disabled no longer.

Rogue-Git-Dev commented 4 years ago

I know you do not have a Mac but it hurts none to enquire. Do you know why, when the Menu Bar Icon tick box is ticked, a blank Python application appears in the app switcher [accessible via ⌘⇥]? Usually – 99% of the time [this accounting for the 1%], when a programme is in the Menu Bar exclusively, it is not in the app switcher. Conversely, if it is included in the Dock [which I do not prefer or use], it is an item in the app switcher. In this case, Python is resides both in the Dock and in the Menu Bar with the name of Python. If there is any manner by which to make Tautulli appear in the Menu Bar exclusively and not the Dock, that would be quite nice. If you wish for me to create an issue for this specifically I will.

JonnyWong16 commented 4 years ago

Can't you just remove it from the dock?

Rogue-Git-Dev commented 4 years ago

I believe that is possible. My point was the function does more than just add to the Menu Bar, and I know not why or how to correct that.