Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eprev/locationchanger
Change OS X’s network location based on the name of Wi-Fi network
https://github.com/eprev/locationchanger
mac-osx network-location wi-fi wireless-network
Last synced: 1 day ago
JSON representation
Change OS X’s network location based on the name of Wi-Fi network
- Host: GitHub
- URL: https://github.com/eprev/locationchanger
- Owner: eprev
- Created: 2015-06-06T08:15:23.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-12-20T21:17:28.000Z (about 2 years ago)
- Last Synced: 2024-12-23T08:08:36.475Z (9 days ago)
- Topics: mac-osx, network-location, wi-fi, wireless-network
- Language: Shell
- Homepage:
- Size: 18.6 KB
- Stars: 406
- Watchers: 21
- Forks: 67
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Location Changer
It automatically changes OS X’s [network location](https://support.apple.com/en-us/HT202480)
based on the name of Wi-Fi network and runs arbitrary scrips when it happens.## Installation & Update
```
curl -L https://github.com/eprev/locationchanger/raw/master/locationchanger.sh | bash
```It will ask you for a root password to install `locationchanger` to the */usr/local/bin* directory.
## Basic usage
You have to name network locations after Wi-Fi networks. Let’s say, you need to have
a specific network preferences for “Corp Wi-Fi” wireless network, then you have to create
a location “Corp Wi-Fi”. Now, the network location will change to “Corp Wi-Fi” automatically,
if you connect to that wireless network. And if you connect to the Wi-Fi network that you
don’t have a location for, then the location will change to the default one (“Automatic”).If you want to run a script every time you connect to a specific Wi-Fi network, then put
those scripts in *~/.locations* and name them after Wi-Fi networks (making sure you set
corresponding network locations). For instance, you have a script that changes security
preferences when you connect to the “Corp Wi-Fi” network:```bash
#!/usr/bin/env bash
exec 2>&1# Require password immediately after sleep or screen saver begins
osascript -e 'tell application "System Events" to set require password to wake of security preferences to true'
```Then name this script as *~/.locations/Corp Wi-Fi*. And you might want to create
*~/.locations/Automatic* that will reset those changes:```bash
#!/usr/bin/env bash
exec 2>&1# Don’t require password immediately after sleep or screen saver begins
osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'
```## Aliasing
If you want to share one network location between different wireless networks (for instance, you have a wireless router which broadcasts on 2.4 and 5GHz bands simultaneously), then you can create a configuration file *~/.locations/locations.conf* (plain text file with simple key-value pairs, no spaces in between):
```bash
Wi-Fi_5GHz=Wi-Fi
```Where the keys are the wireless network names and the values are the desired location names.
## Troubleshooting
It writes quite extensive information to the log file every time the wireless network changes:
```bash
tail -f ~/Library/Logs/LocationChanger.log
```Sample output:
```
Connected to 'Wi-Fi_5GHz'
Will switch the location to 'Wi-Fi' (configuration file)
Changing the location to 'Wi-Fi'
Running '~/.locations/Wi-Fi'
```