How to create a macOS SwiftUI Droplet/App? ...with SPM? - swift

If possible, how does one create a SwiftUI-based (not Cocoa-based) droplet app for macOS? ... and, as an extra step towards the newer Swift ecosystem, can this be done with the Swift Package Manger (SPM) instead of as an Xcode project?
An example use case, that I'm trying to figure out, is the Swift analog to the AppleScript Droplet/App which can launch multiple VLC instances. This VLC AS Droplet/App can be also used with the Finder Get Info "Open with:" setting.
on run
do shell script "open -n /Applications/VLC.app"
tell application "VLC" to activate
end run
on open theFiles
repeat with theFile in theFiles
do shell script "open -na /Applications/VLC.app " & quote & (POSIX path of theFile) & quote
end repeat
tell application "VLC" to activate
end open
The StackOverflow search "swift macos droplet" returns zero items at this time.
A general internet search ended up with "A Swift 4 ‘droplet’ scripting prototype, Dropsy" which is Cocoa based.

Related

How to send argument from desktop shortcut to a shell invoked UWP app that uses AUMID

I have a win32 store app (desktop-bridge) converted and it works fine.
I want to create a desktop shortcut for this Store App that
uses AUMID to start the app (solved below)
and also passes an argument to it (not solved)
Here are the things I have tried:
I know how to start the app from command line using its AUMID.
explorer shell:appsfolder\[aumid]
I see that I can even use this as a target in a desktop shortcut and it works.
Now, I also want to pass arguments to the app which I can't do with the explorer command above.
But if I use start, it works:
start shell:appsfolder\[aumid] "an-argument"
But I can not put the above start command as target in a desktop shortcut. So how do I create a desktop shortcut that is able to start the store app above with an argument?
Another way to look at this question is, how to create a desktop shortcut with the start command?
Update: Got an answer from another question and the following works in the shortcut except that there is a blink when the command line window comes and goes.
cmd /c start shell:appsfolder\[aumid] "an-argument"

Editing an Xcode project via Terminal command

I can open one of my Xcode project in Xcode and add Application supports iTunes file sharing=Yes to plist with Xcode and through Xcode directly, Now I was wandering if this work code be done completely via Terminal as well?
My Goal is type a command in Terminal that does the same work for plist just with Terminal and without opening Xcode program and doing it manually just with Terminal command. For example I have a random Xcode project saved on my Desktop, and since Xcode is accessible via Terminal, I want make this work.
As #Sweeper already answered you should got to the path of your .plist file and then write the following command:
vim Info.plist
This will open an editor which then you need to click on "i", then input the following line into the main tag:
<key>UIFileSharingEnabled</key><true/>
Then click "esc" then ":" then "w" then "q" and finally "Enter" and you are done.

How do I open an Electron app from the command line?

Question
I want to open a installed electron app from the Command prompt. Similar to Visual Studio Code. Typing code opens VScode.
How to do something like that? I also want to provide custom arguments when opening from CLI. Example:-
printapp --option1=foo --option2
Then, in the app I would use those to perform different tasks. Is this possible? I want it to be cross-platform? It should not have .exe extensions. I want it to be like VScode. It should not be something like this:-
printapp.exe --options
Other References
Take a look at https://hyper.is. It also has a CLI to open the app and do tasks. I want something like hyper or VScode. Even atom has something similar like this.
Other possibilities
If opening a app from the command line is impossible in electron,
is there a way to bundle a CLI with a app using electron-builder (I would bundle a Node JS CLI with the app and when the user installs my app, they could use the GUI / CLI, without installing the CLI separately. Something like hyper I mentioned above)?
If possible, I would use the extra files option in electron-builder and move the CLI to the resources folder and set the PATH variable. But,
It may not be cross-platform
How to set the PATH variable when installing a app? (I don't know macros)
Any method to open the app from the CLI which is cross-platform is appreciated.

How to use the console within Sublime Text

I'm using Sublime Text 2 to code my programs, and want to run the console within it to compile and run them. Is there any way to embed the console command line inside Sublime Text 2? Is it already there?
I'm using both Windows and Linux.
I think you can try creating a custom Build System. Tools --> Build System --> New Build System... This is a simple build script for the C programming language:
{
"cmd" : ["gcc", "$file", "-o", "$file_base_name"],
"cmd" : ["$file_base_name"],
"selector" : "source.c",
"shell" : true,
"working_dir" : "$file_path"
}
Change the current build system to the new one in Tools. When you press CTRL + b it will compile your code and run your executable file. A few syntaxes and options that you can use: http://sublimetext.info/docs/en/reference/build_systems.html There are definitely many more other options that you can declare in the build system. A very useful one is file_regex.
Terminus is a recent plugin, highly under development. It's the best cross-platform console in Sublime Text that I have seen yet.
Will Bond created an excellent plugin for called "Terminal" for calling the terminal at project or file levels.
There are also several plugins available that compile at the click of a button:
"C# Compile & Run"
"Type​Script Compiler"
"Coffee​Compile"
...and so on, depending on your programming language.
I recommend browsing Will's "Package Control" page if you are not happy with this terminal plugin.

Open multiple Eclipse workspaces on the Mac

How can I open multiple Eclipse workspaces at the same time on the Mac?
On other platforms, I can just launch extra Eclipse instances, but the Mac will not let me open the same application twice. Is there a better way than keeping two copies of Eclipse?
This seems to be the supported native method in OS X:
cd /Applications/eclipse/
open -n Eclipse.app
Be sure to specify the ".app" version (directory); in OS X Mountain Lion erroneously using the symbolic link such as open -n eclipse, might get one GateKeeper stopping access:
"eclipse" can't be opened because it is from an unidentified developer.
Your security preferences allow installation of only apps from the Mac App Store and identified developers.
Even removing the extended attribute com.apple.quarantine does not fix that. Instead, simply using the ".app" version will rely on your previous consent, or prompt you once:
"Eclipse" is an application downloaded from the Internet. Are you sure you want to open it?
By far the best solution is the OSX Eclipse Launcher presented in http://torkild.resheim.no/2012/08/opening-multiple-eclipse-instances-on.html It can be downloaded in the Marketplace http://marketplace.eclipse.org/content/osx-eclipse-launcher#.UGWfRRjCaHk
I use it everyday and like it very much! To demonstrate the simplicity of usage just take a look at the following image:
EDIT: Milhous's answer seems to be the officially supported way to do this as of 10.5. Earlier version of OS X and even 10.5 and up should still work using the following instructions though.
Open the command line (Terminal)
Navigate to your Eclipse installation folder, for instance:
cd /Applications/eclipse/
cd /Developer/Eclipse/Eclipse.app/Contents/MacOS/eclipse
cd /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse
cd /Users/<usernamehere>/eclipse/jee-neon/Eclipse.app/Contents/MacOS
Launch Eclipse: ./eclipse &
This last command will launch eclipse and immediately background the process.
Rinse and repeat to open as many unique instances of Eclipse as you want.
Warning
You might have to change the Tomcat server ports in order to run your project in different/multiple Tomcat instances, see Tomcat Server Error - Port 8080 already in use
To make this you need to navigate to the Eclipse.app directory and use the following command:
open -n Eclipse.app
Actually a much better (GUI) solution is to copy the Eclipse.app to e.g. Eclipse2.app and you'll have two Eclipse icons in Dock as well as Eclipse2 in Spotlight. Repeat as necessary.
If the question is how to easily use Eclipse with multiple different workspaces, then you have to use a kludge because shortcuts in OS X do not provide a mechanism for passing command line arguments, for example the "--data" argument that Eclipse takes to specify the workspace. While there may be different reasons to create a duplicate copy of your Eclipse install, doing it for this purpose is, IMNSHO, lame (now you have to maintain multiple eclipse configurations, plugins, etc?).
In any case, here is a workaround. Create the following script in the (single) Eclipse directory (the directory that contains Eclipse.app), and give it a ".command" suffix (e.g. eclipse-workspace2.command) so that you can create an alias from it:
#!/bin/sh
# open, as suggested by Milhous
open -n $(dirname $0)/Eclipse.app --args -data /path/to/your/other/workspace
Now create an alias to that file on your desktop or wherever you want it.
You will probably have to repeat this process for each different workspace, but at least it will use the same Eclipse installation.
2018 Update since many answers are no longer valid
OS X Heigh Sierra (10.13) with Eclipse Oxygen
Go to wherever your Eclipse is installed. Right-click -> Show Package Contents -> Contents -> MacOS -> Double-click the executable called eclipse
A terminal window will open and a new instance of eclipse will start.
Note that if you close the terminal window, the new Eclipse instance will be closed also.
To make your life easier, you can drag the executable to your dock for easy access
Instead of copying Eclipse.app around, create an automator that runs the shell script above.
Run automator, create Application.
choose Utilities->Run shell script, and add in the above script (need full path to eclipse)
Then you can drag this to your Dock as a normal app.
Repeat for other workspaces.
You can even simply change the icon - https://discussions.apple.com/message/699288?messageID=699288&#699288
One another way is just to duplicate only the "Eclipse.app" file instead of making multiple copies of entire eclipse directory. Right-Click on the "Eclipse.app" file and click the duplicate option to create a duplicate.
If you're like me, you probably have terminal running most of the time as well.
You could just create an alias in /Users//.bash_profile like this
alias eclipse='open -n path_to_eclipse.app'
then all you have to do is just open the terminal and type eclipse.
Based on a previous answer that helped me, but different directory:
cd /Applications/Eclipse.app/Contents/MacOS
./eclipse &
Thanks
You can create an AppleScript file to open Eclipse with a given workspace. You can even save the AppleScript file as an Application, which is equivalent to creating an alias with arguments in Windows OS.
Open Script Editor and type the following:
do shell script "open '/path/to/your/Eclipse/installation' -n --args -data /path/to/your/workspace"
For instance:
do shell script "open '/Applications/Eclipse.app' -n --args -data /MyWorkspaces/Personal"
Press the Run button to check it's working.
This script can be saved as such, but I prefer to save it as an Application. That way I can customize the icon by copying the *.icns icon from the original Eclipse.app bundle to the script application bundle.
To open an App folder, use the "see contents" contextual menu option. It should look like this:
Where "main.scpt" is the AppleScript file and "applet.icns" is the icon from the original Eclipse bundle.
Launch terminal and run open -n /Applications/Eclipse.app for a new instance.
I found this solution a while back, can't remember where but it still seems to work well for me.
Create a copy of Eclipse.app for each workspace you want to work in (for this example ProjectB.app), then open ProjectB.app/Contents/MacOS/eclipse.ini and add these two lines at the beginning of the file:
-data
/Users/eric/Workspaces/projectb
... substituting where your workspace is located. When you launch ProjectB.app it will automatically start with that workspace instead of prompting for a location, and you should be able to run it at the same time as other Eclipse instances with no problem.
In Terminal simply paste below line and hit enter ..
/Applications/Eclipse.app/Contents/MacOS/eclipse ; exit;
If you want to open multiple workspaces and you are not a terminal guy, just locate the Unix executable file in your eclipse folder and click it.
The path to the said file is
Eclipse(folder) -> eclipse(right click) -> Show package
Contents -> Contents -> MacOs -> eclipse(unix executable file)
Clicking on this executable will open a separate instance of eclipse.
A more convenient way:
Create an executable script as mentioned above:
#!/bin/sh
cd /Applications/Adobe\ Flash\ Builder\ 4.6
open -n Adobe\ Flash\ Builder\ 4.6.app
In you current instance of Flashbuilder or Eclipse, add a new external tool configuration. This is the button next to the debug/run/profile buttons on your toolbar. In that dialog, click on "Program" and add a new one. Give it the name you want and in the "Location" field, put the path to the script from step 1:
/Users/username/bin/flashbuilder
You can stop at step 2, but I prefer adding a custom icon to the toolbar. I use a the Quick Launch plugin to do that:
http://sourceforge.net/projects/quicklaunch/files/
After adding the plugin, go to "Run"->"Organize Quick Lauches" and add the external tool config from step 2. Then you can configure the icon for it.
After you save that, you'll see the icon in your toolbar. Now you can just click it every time you want a new Flashbuilder/Eclipse instance.
You can run multiple instances of Eclipse by creating a pseudonym for Eclipse application in it's folder and using it for running new Eclipse instance
Lets try downloading this in your eclipse on Mac you will be able to open multiple eclipse at a time Link
Name : macOS Eclipse Launcher
Steps :
Go to eclipse Market place.
Search for "macOS Eclipse Launcher" and install.
It will restart .
Now under file menu check for open option > there you will find other projects to open also at same time .
Window -> New Window
This opens a new window and you can then open another project in it. You can use this as a workaround hopefully.
It actually allows you to work in same workspace.