. Интересно, можно ли автоматически переключить принтер по умолчанию в соответствии с сетью Wi-Fi, к которой подключен компьютер.
Очевидно, Windows имеет эту функцию
Алессандро, мне стыдно за то, как долго я терпел одно и то же раздражение, прежде чем понял, насколько это было чертовски просто...!
Я сделал небольшой проект, который, я думаю, вы могли бы попробовать. Пожалуйста, дайте мне знать в любом случае.
Чтобы установить его, откройте терминал и введите следующее (вам не нужно вводить «#» и номер после него):
sudo apt install autorandr #1
mkdir -p ~/.config/autorandr && cd ~/.config/autorandr #2
git clone https://github.com/Noughtnaut/noughty-autorandr.git #3
autorandr -s some_name_here #4
и все готово. Вот что вы только что сделали:
autorandr
, который автоматически запускается всякий раз, когда вы (отключаете) дисплей от сети. Если вы предпочитаете, вы также можете сделать это с помощью графического менеджера программного обеспечения. ~/.config/autorandr
. Впредь ваш ноутбук будет автоматически менять принтер по умолчанию.
sudo
Я предполагаю, что у вас есть два места с подключениями WiFi и два разных сетевых принтера. Ваш ноутбук настроен для подключения к этим двум WiFi-соединениям. Вы также настроили принтер вашего ноутбука на два принтера, и вы можете печатать на этих двух принтерах при подключении к соответствующим сетям WiFi.
Для простоты я буду называть:
Я написал bash-скрипт, который я назвал changedefaultprinter.sh
. Вы можете назвать файл как хотите и отредактировать его по своему усмотрению. Вам понадобятся имена WiFi и принтеров в скрипте, чтобы он работал.
#!/bin/bash
# File name: changedefaultprinter.sh
# Purpose: Change the default printer to home or office based on WiFi
############################
# User modification section
# Add WiFi and Printer pairs below:
WIFI1="HomeWiFi"
PRINTER1="HomePrinter"
WIFI2="OfficeWiFi"
PRINTER2="OfficePrinter"
# End of user modification section
############################
CURRENTWIFI=$(iwgetid -r) # Get the name of the current WiFi
if [[ ! $CURRENTWIFI ]]; then # Not on WiFi
echo "Could not find any WiFi, exiting..."
exit 0
elif [[ $CURRENTWIFI == $WIFI1 ]]; then
echo "Found $WIFI1, Setting $PRINTER1 as the default..."
lpoptions -d $PRINTER1
elif [[ $CURRENTWIFI == $WIFI2 ]]; then
echo "Found $WIFI2, Setting $PRINTER2 as the default..."
lpoptions -d $PRINTER2
else
echo "On unknown WiFi, exiting..."
exit 0
fi
Скопируйте скрипт в файл changedefaultprinter.sh
и сохраните его в папке /home/$USER/bin
. Если у вас нет папки bin
, сначала создайте ее. Сделайте файл «исполняемым». См. Как сделать файл исполняемым?
Узнайте названия вашего WiFi и принтеров по умолчанию, которые вы уже настроили. Вы можете сделать это разными способами. Я использую терминал и следующие команды:
Убедитесь, что вы подключены к домашнему Wi-Fi и домашний принтер установлен по умолчанию. Откройте терминал, нажав Ctrl+Alt+T и введите команду:
iwgetid -r
Это должно показать вам имя вашего WiFi. Скопируйте это имя из терминала и вставьте его в файл выше, где указано HomeWiFi
.
Теперь, чтобы скопировать имя домашнего принтера, используйте команду:
lpstat -t
Вы увидите что-то вроде:
scheduler is running
system default destination: HomePrinter
Скопируйте имя принтера из терминала и вставьте его в файл выше, где написано Домашний принтер
.
OfficeWiFi
и OfficePrinter
в скрипте. В терминале введите команду при подключении к домашнему Wi-Fi:
changedefaultprinter.sh
Если все пойдет хорошо, вы увидите сообщение о том, что ваш принтер по умолчанию теперь настроен на ваш домашний принтер. Сделайте то же самое в офисе, чтобы убедиться, что это работает и там.
Откройте приложение «Настройки запуска приложения» и нажмите кнопку Добавить
Добавьте осмысленное имя скрипта, чтобы вы знали, что он делает , а также расположение скрипта:
/home/$USER/bin/changedefaultprinter.sh
Где $USER — ваше имя пользователя.
Нажмите Добавить, чтобы сохранить изменения и закрыть окно «Настройки запуска приложения». С этого момента каждый раз, когда вы входите в свой ноутбук, этот скрипт будет запускаться. Он определит, какой WiFi вы используете, и изменит принтер по умолчанию.
привилегии sudo
Я предполагаю, что у вас есть два места с Wi-Fi и два разных сетевых принтера. Ваш ноутбук настроен для подключения к этим двум WiFi-соединениям. Вы также настроили принтер вашего ноутбука на два принтера, и вы можете печатать на этих двух принтерах при подключении к соответствующим сетям WiFi.
Для простоты я буду называть:
Я написал bash-скрипт, который назвал 10-changedefaultprinter
. Вам нужно будет добавить свое имя пользователя и имена WiFi и принтеров в скрипт, чтобы он заработал.
#!/bin/bash
# File name: 10-changedefaultprinter
# Purpose: Change the default printer to home or office based on WiFi
# Instructions:
# 1. sudo chown root:root 10-changedefaultprinter
# 2. sudo chmod 744 10-changedefaultprinter
# 3. sudo ln -s 10-changedefaultprinter' /etc/NetworkManager/dispatcher.d
#
############################
# User personalization section
USERNAME="your_username_goes_here"
# Add WiFi and Printer pairs below:
WIFI1="HomeWiFi"
PRINTER1="HomePrinter"
WIFI2="OfficeWiFi"
PRINTER2="OfficePrinter"
# End of Personalization
############################
# Network Manager sets this value
ACTION=$2
CURRENTWIFI=$(iwgetid -r) # Get the name of the currrent WiFi
if [[ ! $CURRENTWIFI ]]; then # Not on WiFi
echo "Could not find any WiFi, exiting..."
exit 0
elif [ $CURRENTWIFI == $WIFI1 ] && [ "$ACTION" == "up" ]; then
echo "Found $WIFI1, Setting $PRINTER1 as the default..."
sudo -u $USERNAME lpoptions -d $PRINTER1
elif [ $CURRENTWIFI == $WIFI2 ] && [ "$ACTION" == "up" ]; then
echo "Found $WIFI2, Setting $PRINTER2 as the default..."
sudo -u $USERNAME lpoptions -d $PRINTER2
fi
10-changedefaultprinter
и сохраните его в папке /home/$USER/
.Если вы сохраните его в другом месте, например /home/$USER/bin
, используйте команду cd /home/$USER/bin
, чтобы изменить текущий каталог в терминале перед использованием команды с префиксом sudo
ниже. your_username_goes_here
на ваше имя пользователя. Вы можете найти имя пользователя, набрав echo $USER
в терминале. Убедитесь, что вы подключены к домашнему Wi-Fi и домашний принтер установлен по умолчанию. Откройте терминал, нажав Ctrl+Alt+T и введите команду:
iwgetid -r
Это должно показать вам имя вашего WiFi. Скопируйте это имя из терминала и вставьте его в файл выше, где указано HomeWiFi
.
Теперь, чтобы скопировать имя домашнего принтера, используйте команду:
lpstat -t
Вы увидите что-то вроде:
scheduler is running
system default destination: HomePrinter
Скопируйте имя принтера из терминала и вставьте его в файл выше, где написано ГлавнаяПринтер
.
OfficeWiFi
и OfficePrinter
в скрипте. Используйте терминал и следующие команды:
sudo chown root:root 10-changedefaultprinter
sudo chmod 744 10-changedefaultprinter
sudo ln -s 10-changedefaultprinter /etc/NetworkManager/dispatcher.d
Вы можете скопировать с помощью команды cp
или переместить с помощью команды mv
вместо создания символической ссылки с помощью ln -s
выше.
Попробуйте это дома или в офисе:
Если все пойдет хорошо, ваш принтер по умолчанию изменится в зависимости от сети Wi-Fi, к которой вы подключены. С этого момента ваш принтер по умолчанию будет меняться в зависимости от того, какой WiFi вы используете.
Если это не работает, проверьте системный журнал и найдите строки с nm-dispatcher
на наличие ошибок.
Надеюсь, это поможет