Mac Terminal App Location
Installation
Open up Terminal (Applications Utilities) and type in: sudo find / -iname.app. This will display all the apps you have on your computer. From there, you can copy and paste the results into a.
latest version: 3.0.2What is the Console App? Back in the early years of computing, the console was a terminal that was attached to a computer to monitor the status of the system. If you go back even further, the console may have been a bank of meters, lights, and switches that indicated how well the computer was operating. (The Console app from macOS High Sierra. The command line is not only powerful, it can also be dangerous. Learn how to use commands for deleting files and folders correctly to make sure your time with Terminal is a productivity godsend. Location of startup items and applications on MAC (OS X) Quick cheatsheet to know where to look when you need to rid off some startup item, app or service. Applications that run on Startup.
- Next double click on the Terminal option or press the enter key on your Mac’s keyboard to open up Terminal. In the terminal type in top –o cpu and press the enter key on your keyboard. This will show you a list of all running apps and processes with the apps consuming the.
- Open the Terminal on macOS. Use the cd command to move to the folder that the script is in. The location in the command below is just an example. Make sure you change it to whichever folder your script is actually in. Once you’re in the folder, you need to give the script permission to run.
- But if you'd prefer they save elsewhere, it's an easy Terminal trick to make it so. Defaults write com.apple.screencapture location /your/location/here killall SystemUIServer. You can also drag the folder of your choice on top of the Terminal window after typing 'location' if you don't want to manually type out the file path.
64-bit | |
macOS (.app) | 3.0.2 |
Windows (.exe) | 3.0.2 |
Debian (.deb) | 3.0.2 |
Fedora (.rpm) | 3.0.2 |
Other Linux distros (.AppImage) | 3.0.2 |
Project Goals
The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards. In the beginning, our focus will be primarily around speed, stability and the development of the correct API for extension authors.
In the future, we anticipate the community will come up with innovative additions to enhance what could be the simplest, most powerful and well-tested interface for productivity.
Extensions
Extensions are available on npm. We encourage everyone to includehyper
in the keywords
field in package.json
.
Then edit .hyper.js
and add it to plugins
Hyper
will show a notification when your modules are installed to .hyper_plugins
.
Keymaps
All command keys can be changed. In order to change them, edit.hyper.js
and add your desired change to keymaps
.
Then Hyper will change the default with your custom change.
Example: 'window:devtools': 'Cmd+Alt+O'
Default keymaps:
Configuration
Config location
macOS | ~/Library/Application Support/Hyper/.hyper.js |
Windows | $Env:AppData/Hyper/.hyper.js |
Linux | ~/.config/Hyper/.hyper.js |
Note: config at ~/.hyper.js
still supported, but will be ignored, if config in application directory present. Otherwise it will be moved to the application directory at first run.
The config
object seen above in.hyper.js
admits the following
Property | Default | Description |
updateChannel | 'stable' | The update channel to receive updates from |
fontSize | 12 | The default size in pixels for the terminal |
fontFamily | 'Menlo, DejaVu Sans Mono, Lucida Console, monospace' | The font family to use with optional fallbacks |
uiFontFamily | '-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, ..' | The font family to use for the UI with optional fallbacks |
fontWeight | 'normal' | The default font weight: 'normal' or 'bold' |
fontWeightBold | 'bold' | The font weight for bold characters: 'normal' or 'bold' |
cursorColor | 'rgba(248,28,229,0.8)' | The color of the caret in the terminal |
cursorAccentColor | '#000' | The text color under BLOCK cursor |
cursorShape | 'BLOCK' | The shape of the caret in the terminal. Available options are: 'BEAM', 'UNDERLINE', 'BLOCK' |
cursorBlink | 'false' | If true, cursor will blink |
foregroundColor | '#fff' | The color of the main text of the terminal |
backgroundColor | '#000' | The color and opacity of the window and main terminal background |
selectionColor | 'rgba(248,28,229,0.3)' | The background color/opacity of the text selection in terminal |
borderColor | '#333' | The color of the main window border and tab bar |
css | ' | Custom CSS to include in the main window |
padding | '12px 14px' | CSS padding values for the space around each term |
colors | { black: '#000000', red: '#ff0000', .. } | A list of overrides for the color palette. The names of the keys represent the 'ANSI 16', which can all be seenin the default config. |
shell | ' | A path to a custom shell to run when Hyper starts a new session |
shellArgs | '['--login']' | An array of shell arguments |
env | {} | An object of environment variables to set before launching shell |
windowSize | [540, 380] | The default width/height in pixels of a new window |
scrollback | 1000 | The number of rows to be persisted in terminal buffer for scrolling |
copyOnSelect | false | If true, selected text will automatically be copied to the clipboard |
quickEdit | false | If true, on right click selected text will be copied or pasted if no selection is present (true by default on Windows) |
defaultSSHApp | true | If true, Hyper will be set as the default protocol client for SSH |
modifierKeys | {altIsMeta: false} | Change the behaviour of modifier keys to act as meta key |
showHamburgerMenu | true on Linux/Windows, false on macOS | Change the visibility of the hamburger menu. Available options are: true, false |
showWindowControls | ' | Change the position/visibility of the window controls. Available options are: true, false, 'left' |
Extensions API
Extensions are universal Node.js modules loaded by both Electron and the renderer process.
The extension system is designed around composition of the APIs we use to build the terminal: React
components andRedux
actions.
Instead of exposing a custom API method or parameter for every possible customization point, we allow you to intercept and compose every bit of functionality!
The only knowledge that is therefore required to successfully extendHyper
is that of its underlying open source libraries.
You can find additional details about plugin developmentin the Hyper repository.
Your module has to expose at least one of these methods:
Method | Invoked from | Description | ||||||
onApp | Electron | Invoked when the app first loads. If a plugin reloads, it's invoked again with the existing app. Parameters:
| ||||||
onWindow | Electron | Invoked when each window is created. If a plugin reloads, it's invoked again with the existing windows. Parameters:
| ||||||
onUnload | Electron | Invoked when a plugin is removed by the user. Parameters:
| ||||||
decorateConfig | Electron / Renderer | v0.5.0+. Allows you to decorate the user's configuration. Parameters:
| ||||||
decorateEnv | Electron | v0.7.0+. Allows you to decorate the user's environment by returning a modified environment object. Parameters:
| ||||||
decorateMenu | Electron | Invoked with the Electron's Parameters:
| ||||||
decorateBrowserOptions | Electron | Allows you to decorate Electron's Parameters:
| ||||||
onRendererWindow | Renderer | Invoked when a plugin is first loaded or subsequently reloaded in each window. Parameters:
| ||||||
middleware | Renderer | A custom Redux middleware that can intercept any action. Subsequently we invoke the | ||||||
reduceUI reduceSessions reduceTermGroups | Renderer | A custom reducer for the
| ||||||
getTabsProps | Renderer | Passes down props from
| ||||||
getTabProps | Renderer | Passes down props from
| ||||||
getTermGroupProps | Renderer | Passes down props from
| ||||||
getTermProps | Renderer | Passes down props from
| ||||||
mapHyperState mapTermsState mapHeaderState mapNotificationsState | Renderer | A custom mapper for the state properties thatcontainer componentsreceive. Note that for children components to get these properties, you have to pass them down using the corresponding methods (like Must return an extended object of the map passed.
| ||||||
mapHyperDispatch mapTermsDispatch mapHeaderDispatch mapNotificationsDispatch | Renderer | A custom mapper for the dispatch properties. Must return an extended object of the map passed.
| ||||||
decorateHyper decorateNotifications decorateNotification decorateHeader decorateTabs decorateTab decorateTerms decorateTermGroup decorateSplitPane decorateTerm | Renderer | Invoked with the Parameters:
|
Module loading
The user can hot-load and hot-reload plugins by pressing Command + R (refresh). Please strive to make plugins that don't require a complete restart of the application to work.
Notice
Plugins affecting the `BrowserWindow` will the effect on new windows after hot-reload.
In the future we might do this automatically.
When developing, you can add your plugin to.hyper_plugins/local
and then specify it under the localPlugins
array in.hyper.js
. We load new plugins:
- Periodically (every few hours)
- When changes are made to the configuration file (
plugins
orlocalPlugins
) - When the user clicks Plugins > Update all now
The process of reloading involves
- Running
npm prune
andnpm install
in.hyper_plugins
. - Pruning the
require.cache
in both electron and the renderer process - Invoking
on*
methods on the existing instances and re-rendering components with the fresh decorations in place.
Plugins location
macOS | ~/Library/Application Support/Hyper/.hyper_plugins |
Windows | $Env:AppData/Hyper/.hyper_plugins |
Linux | ~/.config/Hyper/.hyper_plugins |
Note: plugins at ~/.hyper_plugins
still supported, but will be ignored, if plugins in application directory present. Otherwise they will be moved to the application directory at first run.
Note: on the main process, plugins are registered as soon as possible (we fire onLoad
). On the browser, it's up to the user to trigger their load by pressing command+R. We put the user in control of the loading in this way to prevent them from losing critical work by extensions that reset state or don't preserve it correctly.
Decorating components
We give you the ability to provide a higher order component for every piece of the Hyper
UI.
Its structure is as follows:
All the decorate*
methods receive the following references in an object passed as the second parameter:
React | The entire React namespace. |
notify | A helper function that shows a desktop notification. The first parameter is the title, the second is the optional body of the notification, and the third is another optional parameter which can be used to log details to the development console. To pass these details, simply provide and object with an |
Notification | The Notification component in case you want to re-use it. |
All the components accept the following two properties to extend their markup:
customChildren | An array of Element or a singleElement to insert at the bottom of the component. |
customChildrenBefore | The same as the above property, but inserted as the first child element(s) of the component. |
Your higher order component can supply a onDecorated
property to the decorated component to get a reference to its instance.
Your Term higher order component can supply anonCursorMove
handler property that be called when cursor has moved with an object parameter representing its relative position to Term origin:
x | Horizontal position in pixels |
y | Vertical position in pixels |
width | Cursor width in pixels |
height | Cursor height in pixels |
col | Horizontal position in columns |
row | Vertical position in rows |
We encourage you to maintain compatibility with other decorators. Since many can be set, don't assume that yours is the only one.
For example, if you're passing children, compose potential existing values:
Or if you use onDecorated
property
Actions and Effects
All theRedux actionsare available for you to handle through your middleware and reducers. For an example, refer to the Hyperpowerreference plugin.
Side effects occur in two fundamental forms:
- Some actions dispatch other actions based on state.
- Some actions do async work by communicating over the RPC channel to the main process
In all cases, the side effect is passed as the effect
key in the action and later handled by our middleware.
This means that you can override, compose or completely eliminate effects! In other words, this is how you can change the default functionality or behavior of the app.
As an example, consider the action we use to increase the font size when you press Command+=
:
The underlying terminal
Hyper
achieves a lot of its speed and functionality thanks to the power ofxterm.js
Additional APIs
The Electron app
objects are extended with the following properties:
config | An Object with the config block from.hyper.js . |
plugins | An Object with helpers for plugins. |
getWindows | A Function that returns an Set of all the open windows. |
createWindow | A Function that will create a new window. Accepts an optional callback that will be passed as the new window's init callback. |
Electron BrowserWindow
objects are extended with the following parameters:
rpc | An EventEmitter that allows for communication with the window process. |
sessions | A Map of Session objects which hold the communication with each term's pty. |
Renderer windows are similarly extended with:
rpc | An EventEmitter that allows for communication with the window process. |
store | The Redux Store object. This allows access todispatch actions or read the global state withgetState . |
The rpc
object is symmetrical between browser and renderer process. The API is the same as Node.js, with the exception that it only admits a single object as its parameters only:
Example theme: Hyperyellow
The following extension simply alters the config to add CSS and yellow colors! Here's thecode.
Themes are simply plugins! Only one hook, decorateConfig
is needed:
I grabbed the class names by inspecting the term with Devtools, which you can trigger from View -> Toggle Developer Tools
. When you do so, notice that some classes are automatically generated and followed by a random nonce (e.g.: term_13hv8io
). Ignore those: they change with every new window!
Notice the emphasis on playing nice with other extensions. Specifically, we create a new object, extend only the keys we are interested in, and we compose the CSS to preserve the user's setting and that of other authors':
Example extension: Hyperpower
The following extension renders particles as the caret moves:
Let's walk throughits code.
First, we intercept the Redux action SESSION_ADD_DATA
. You can find the full list of actionsin the repository.
Notice that we don't re-dispatch the action, which means we never render the output of the command to the terminal. Instead, we dispatch an action of our own, which we grab in the uiReducer
and later map:
We then want to decorate the <Term>
component so that we can access the underlying caret.
However, <Term>
is not a container that we can map props to. So we use getTermProps
to pass the property further down:
The extension thenreturnsa higher order component to wrap <Term>
. Notice we pass the onDecorated
property to access the base Term component and its DOM ref, and theonCursorMove
property to use Hyper cursor API:
Remote access to Mac, anywhere
Open Terminal In Mac
While many countries are on a lockdown due to COVID-19, remote work is becoming a lifestyle. Remotely accessing a Mac is designed to be easy. Apple has spent a lot of time ensuring anyone can log in to their Macs — both desktop and laptop — from any other Mac device, anywhere. And, besides, there are a variety of third-party apps ready to help with that too.
Still, remotely managing their Mac sounds overly complicated to a lot of people. From how you connect to sharing files or screens to using your Apple device as a remote mouse, we want to demystify the process in the easy-to-follow guide below.
Best Remote Access Apps for Mac
/mac-vpn-free-apps.html.
There are times when you want to access your Mac remotely, and there are many different solutions to remote access your Mac. Best utilities in one pack, give it a go!
How to access your Mac from another location
There're two ways: you can allow remote login to your Mac from another computer, or allow others to access your computer using Remote Desktop (it's available from the App Store).
Allow remote login to your Mac from another computer
For devices using the same macOS, you can allow remote Mac login using a Secure Shell (SSH). This enables Mac remote desktop access using a Secure File Transfer Protocol (SFTP).
To set up Remote Login:
- Go to System Preferences > Sharing
- Select Remote Login.
- Choose which users you want to have remote access or the ability to control your Mac.
You can either select All Users, which means any other device on your network, or any Mac you own, can access and connect, or click the plus sign to pick the exact users.
When you want to remotely log in to your Mac from another device, you need to know your username (the name that appears when you login) and your computer's IP address. Write them down and keep them safe, as allowing access to your Mac does make it potentially less secure, especially over cellular or public Wi-Fi networks.
Accessing, controlling, or viewing information on your Mac can be done with a built-in Terminal or any other SSH app using your username and IP address.
Allow others to access your computer using Apple Remote Desktop
With macOS remote Mac access and control is even easier. To set up it:
- Go to Menu > System Preferences > Sharing
- Select Remote Management - it should appear as a checkbox.
- Now you can select who has remote desktop access. Either select, All Users, which means any other device on your network, or Mac you own, can access and connect, or click the Add button(+), which gives you the ability to select who can have remote access and/or control.
If you are using a VPN or VNC viewer and want to access your Mac remotely, you will need to setup a password first. It is also possible to use iOS devices, such as an iPhone and iPad, through Apple Remote Desktop, available from the App Store.
How to stay on the same page with Screens
Collaboration has become of utmost importance to today's workplaces. And with more and more people working remotely, being on the same screen (ahem, page) is a must.
Screens allows you to work remotely with any computer regardless of your location. Whether you are on a business trip or traveling, stay confident knowing you can access any file on your home computer at any time.
This robust screen sharing tool for Mac supports:
- Multiple displays
- Drag-and-drop file sharing
- Hiding your remote screen while accessing it
- Accessing other computers (e.g. colleague's) as a guest
- Alternative shortcuts (useful when connecting Mac to PC)
- Custom actions in case of disconnection
To start using Screens, get the app from Setapp and configure the following:
- Remote login and remote management (as per the guide above)
- Install Screens Connect helper app and create a Screens ID on every machine you'd like to connect to in the future
- Use your Screens ID in the Screens app and it will automatically determine which of your computers are available for connection
Remote desktop client for Mac
Control any computer remotely – a perfect way to access your Mac from anywhere without limitations.
Share files between devices
Today we have plenty of ways to send and share files. But ask someone to send something, and you are likely to get it through email. Due to the ubiquitousness of email, it's still the default method for file sharing, despite its obvious flaws and constraints.
Fortunately, there are much better ways:
Native macOS File Sharing
Few people know that their Mac has native file sharing functionality built in. To use this feature, activate it in the Sharing pane of System Preferences by checking File Sharing. If you only want to share specific folders, add them to the Shared Folders list. If you only want specific users to access the folder, add them to its Users list. Otherwise, everyone will be able to access it.
AirDrop
Although not the most reliable solution, AirDrop works fine for occasional sharing a file between Apple devices. In the Finder, choose Go and then AirDrop on both the sending and receiving Mac. As soon as you see the receiver's user icon, drag the desired file onto it to send.
Read more about how to use AirDrop
Dropshare
If you don't want to send files Mac-to-Mac directly but rather through a cloud storage, there is no easier way than Dropshare. The app works with numerous cloud providers, from Dropbox to Google Drive, and saves your files for sharing by simply dragging them onto its menu bar icon.
File Transfer Protocol (FTP)
The most technical but also the most robust way to share files from your mac is to use FTP, which you could do either through Terminal or an FTP Client, the latter being much more user friendly.
There are a few popular FTP clients one could choose from. The robust file managing app ForkLift covers most of the FTP functionality but takes it to the next level and could be a viable replacement for the Finder altogether with its quick search, instant previews, and file comparison.
DCommander is another full-featured file transfer app for Mac that combines speed and reliability, able to handle thousands of files, schedule backups, and even automate transfers.
At last, when it comes to sharing the same files on different devices, an app like ChronoSync Express becomes invaluable.
ChronoSync Express is powerful tool for sharing and transferring files from Mac to Mac, or any another Apple device. With a feature called Synchronizer Document, you can select which files need to be automatically synchronized and shared between devices, just like that:
- Create a new synchronizer document for each folder synchronization you'd like to perform
- Name the synchronization
- Change the Operation to Synchronize Bidirectional
- Select folders to sync on the left and right
- Test with a Trial Sync
Do you need to use a VPN (Virtual Private Network)?
Whether you are working on your Mac directly, logging into your Mac remotely, or sharing access with someone else, security should be on top of your mind.
As a rule of thumb, you should always use a VPN when connected to a public Wi-Fi network, as someone could log in and see the information you send just as easily as you do.
And with remote access — even in the View Only mode — someone can see every file and document on your Mac, except those that are password protected. Unfortunately, if you leave passwords in a visible document, you expose yourself to immense risks.
A secure VPN client for Mac like Shimo is well worth using to stop unwanted eyes from lurking around, especially if you are sharing sensitive files, financial records or customer data.
However, for extra peace of mind and security, consider firing up your VPN automatically on all networks you are not 100% sure about to keep your emails, bank accounts and personal documents safe.
To share your Mac with someone else, download a remote Virtual Network Computing (VNC) app like Jump Desktop. With full remote access and Mac remote control, the other person — or yourself connecting to another Mac — can have the same level of control as the person using that device. Except for Admin level access, since it's password protected.
Starting with Jump Desktop is easy: either yourself (gaining access) or the person you are giving a remote view or control access to your Mac, needs to add details of the device and the password.
Secure your access with VPN
Get a VPN client for Mac to avoid privacy infringement while connecting remotely. It's secure and free to try.
Once permission is granted at the other end, remote Mac screen sharing or control (whereby you can use the iOS device as a remote mouse) becomes possible.
How to use your iOS device as a remote mouse
If your remote work starts on a patio hammock somewhere in east Asia, you should note that Apple iOS devices, such as an iPhone or iPad, can be used to control a Mac remotely, much like a mouse can control a desktop or laptop. Apps that make this possible work on VNC.
Remote Mouse is the easiest, most effective way to turn your iOS device into a wireless remote control for your Mac.
Although remote access through a local network would be most effective, since the closer you are to the device the quicker the connection, it's also possible from anywhere in the world, providing the network is secure and fast enough.
Setting up and granting access to the iOS device is the same process as when someone wants to access using a Mac. Except you need to give them a password. And make sure it is different from your primary Mac or iOS (App Store) one.
So working together or checking on your devices can be done from anywhere in the world and there are lots of ways to do that, from sharing screens and files to having complete access to a system set up far away. Setapp equips you with all the apps needed to remotely access any device you need and elevate your work to the global level.
These might also interest you:
Meantime, prepare for all the awesome things you can do with Setapp.
Read onMac Terminal Program
Sign Up