บรรทัดคำสั่งเพื่อสลับระหว่างส่วนกำหนดค่าใน gnome-terminal


20

ฉันสร้างโปรไฟล์ใหม่สำหรับ gnome-terminal และฉันสามารถสลับระหว่างโปรไฟล์ "โดยนัย" และโปรไฟล์ที่สร้างใหม่ตามที่คุณเห็นในภาพด้านล่าง:

สลับระหว่างส่วนกำหนดค่าใน gnome-terminal

ตอนนี้ฉันสงสัยว่าฉันจะสลับระหว่างส่วนกำหนดค่าโดยใช้บรรทัดคำสั่ง / สคริปต์หรืออาจใช้ทางลัดสำหรับสิ่งนี้ได้

หมายเหตุ: การแก้ปัญหาเช่น:

gnome-terminal --tab-with-profile=Implicit && exit 

ถูกแยกออกเนื่องจากฉันไม่ต้องการปิดและเปิดเทอร์มินัลอื่นหรือรับหน้าต่างเทอร์มินัลอื่นในกระบวนการเปลี่ยนโปรไฟล์นี้


1
ด้วย gconftool-2 คุณสามารถตั้งค่าโปรไฟล์ที่มีการเปลี่ยนแปลงในทันที คุณได้ตรวจสอบสิ่งนี้ -> stackoverflow.com/questions/660442/…
Stormvirux

@Stormvirux ไม่ ... คุณสามารถอธิบายวิธีใช้ gconftool หรือ gconftool-2 เพื่อเปลี่ยนโปรไฟล์ได้อย่างไร ฉันไม่เห็นคำตอบ / คำอธิบายที่ดี
Radu Rădeanu

คำถามที่ซ้ำกัน: askubuntu.com/questions/247041/…
Jakob

คำตอบ:


9

หากต้องการเปลี่ยนเป็นโปรไฟล์ "โดยนัย":

xdotool key Alt+t p Return

วิธีเปลี่ยนเป็นโปรไฟล์ที่สอง:

xdotool key Alt+t p Down Return

xdotool ติดตั้ง xdotool ไม่ได้ติดตั้งเป็นค่าเริ่มต้นใน Ubuntu ดังนั้นจะต้องติดตั้งก่อน

แน่นอนว่าสำหรับคำสั่งเหล่านี้สามารถเพิ่มแป้นพิมพ์ลัดที่กำหนดเอง


นั่นไม่ใช่ทางลัด คุณเป็นเพียงการจำลองการกดปุ่มเป็นตัวช่วยจำของแอปพลิเคชันเท่านั้น
Braiam

1
@Braiam ใช่มันไม่ใช่ทางลัดฉันเห็น มันเป็นบรรทัดคำสั่ง (ดูman xdotoolข้อมูลเพิ่มเติม) ตามที่ฉันถามซึ่งทำงานได้อย่างที่ฉันต้องการและฉันมีความสุขกับคำตอบนี้จนกว่าสิ่งที่ดีกว่าจะปรากฏขึ้น ;)
Radu Rădeanu

คุณควรพิจารณาอย่างจริงจังบอกว่าใน bugtracker และ ...
Braiam

@Braiam อย่างที่ฉันบอกคุณว่าฉันโอเคกับโซลูชั่นนี้มันใช้งานได้อย่างมีเสน่ห์ เกี่ยวกับข้อเสนอแนะของคุณมีหนึ่งในแง่นี้จาก 2002 (แก้ไขในปี 2010: " มันจะดีเป็นพิเศษถ้าฉันสามารถใช้การกดแป้นพิมพ์สองครั้งเพื่อเปิดโพรไฟล์ของตัวเลือกของฉัน " - ดูความคิดเห็นนี้ ) ดังนั้นคุณคิดว่าฉันควรเพิ่มใหม่ทำไม คุณชอบรายการซ้ำหรือไม่
Radu Rădeanu

มันใช้งานไม่ได้โชคร้ายอีกต่อไปแล้ว
RobAu

5

มีคำตอบที่ยอดเยี่ยมมากมาย แต่ฉันต้องการเพิ่มอีกหนึ่งรูปแบบโดยใช้ xdotool ที่ไม่ต้องการให้แถบเมนูปรากฏ ...

การกดคำสั่งผสมคีย์ + F10 จะเปิดเมนูป๊อปอัพ (เทียบเท่ากับการคลิกขวาที่เทอร์มินัล) และจากนั้นสามารถเปลี่ยนโปรไฟล์ได้

เช่นxdotool key shift+F10 r 3ไปยังโปรไฟล์ที่สาม

ฉันยังพบว่าวิธีนี้ไม่จำเป็นต้องตั้งค่าการหน่วงเวลาสำหรับ xdotool (ซึ่งฉันพบว่าจำเป็นสำหรับวิธีการแถบเมนู) ดังนั้นจึงเร็วขึ้นเล็กน้อย

ฉันมักจะเปลี่ยนรูปแบบมากมายดังนั้นฉันจึงใส่มันเข้าไปในฟังก์ชั่น:

function chp(){
      xdotool --clearmodifiers key Shift+F10 r $1
}

ดังนั้นฉันสามารถโทรchp Nไปเปลี่ยนเป็นโปรไฟล์ Nth ได้

คำแนะนำและสำนวนเพิ่มเติมจากการตั้งค่าของฉัน:

  • ด้วยการเพิ่มchpคำสั่งลงใน. bashrc ของฉันฉันสามารถบังคับให้แท็บใหม่สลับไปยังโปรไฟล์เริ่มต้นได้เสมอ

  • ฉันกำหนดรหัสเซสชัน ssh ของฉันตามโฮสต์ แต่ฉันไม่ชอบนามแฝง ssh ของฉันที่จะเปิดแท็บหรือหน้าต่างใหม่และฉันต้องการให้โปรไฟล์เปลี่ยนกลับเป็นค่าเริ่มต้นเมื่อฉันออกจาก ssh ทางออกของฉัน: alias somehost="chp 2; ssh user@somehost; chp 1"

  • ฉันให้ค่าสถานะ xdotool --clearmodifiersเพื่อที่ว่าถ้าฉันถือคีย์ตัวดัดแปลง (เมื่อเปิดแท็บ / หน้าต่างออกจาก ssh เป็นต้น) มันจะไม่รบกวน xdotool

  • ฉันเติมชื่อโปรไฟล์ด้วยตัวเลขเพื่อที่ว่าถ้าฉันจะเพิ่มชื่อใหม่มันจะไม่เปลี่ยนชื่ออื่น ๆ ทั้งหมดเนื่องจากการเรียงตามตัวอักษรของเมนูโปรไฟล์


... โปรดทราบว่าวิธีนี้ต้องใช้ปุ่มเร่งความเร็วเมนูเพื่อเปิดใช้งานในการตั้งค่าเทอร์มินัล> ทั่วไป
พี่ชาย J4mes

FYI สำหรับ xdotool ของฉัน--clearmodifiersต้องมาหลังจากkeyนั้น
lilydjwg

4

ไม่มีทางลัดที่อนุญาตให้คุณเปลี่ยนโพรไฟล์ภายในเทอร์มินัล (โดยไม่ต้องสำรวจเมนูดังที่คุณพูดในความคิดเห็น) โดยไม่ต้องใช้ GUI เธซเธฑคู่มือ ( มีเสถียรภาพ , การพัฒนา 3.9 ):

คุณสามารถเปลี่ยนโพรไฟล์ในแท็บเทอร์มินัลปัจจุบันหรือหน้าต่างโดยเลือกโพรไฟล์จากเทอร์มินัล▸เปลี่ยนโปรไฟล์

(คุณสามารถเสนอสิ่งนี้เป็นข้อเสนอแนะในตัวติดตามบั๊ก )


ที่จริงมีทางลัด: Alt + Tตามด้วยP , ลูกศรขึ้นหรือลูกศรลงและใส่ แต่นี่จะยาวไปหน่อย ...
Radu Rădeanu

@ RaduRădeanu Alt + T ไม่ทำงานในเทอร์มินัลของฉัน 3.8.3: /
Braiam

1
@ RaduRădeanuฉันเดา Alt + T คือในความเป็นจริงใช้ GUI ก็เพียงไม่ได้ใช้เมาส์
moon.musick

@Braiam หากคุณใช้เวอร์ชั่นที่ไม่ใช่ภาษาอังกฤษให้gnome-terminalกดaltและดูตัวอักษรที่ถูกไฮไลต์สำหรับเวอร์ชันภาษาของคุณ 'Terminal' (เป็นรายการที่ 5 ในรุ่นโปแลนด์ของฉันเหลือแค่ 'Help') จากนั้นใช้ตัวอักษรนั้น altกับ
moon.musick

@ moon.musick ฉันใช้รุ่น Debian ของ gnome-terminal 3.8.3 และดูเหมือนว่ามันไม่มีตัวดัดแปลง Alt เพื่อเข้าถึงเมนู
Braiam

3

ผมกำลังมองหาที่จะทำเช่นเดียวกันและในที่สุดก็มีการทำงานสคริปต์ผมใส่มันขึ้นมาบนของGitHub

เช่นเดียวกับที่ฉันอธิบายใน README.md มันไม่ได้เปลี่ยนจริง ๆ แต่โหลดการกำหนดค่าโปรไฟล์ลงในโปรไฟล์เริ่มต้น ในการทำเช่นนี้การกำหนดค่าของแต่ละโปรไฟล์จะถูกบันทึกเป็นไฟล์ในการเรียกใช้ครั้งแรกของสคริปต์ สคริปต์ทำให้ดูเหมือนว่าคุณกำลังสลับระหว่างส่วนกำหนดค่าซึ่งดีพอสำหรับฉัน หวังว่าจะช่วยให้ทุกคน ...


2

ขึ้นอยู่กับวัตถุประสงค์ของคุณคุณอาจพบว่าสคริปต์นี้มีประโยชน์: https://github.com/xyrix/gnome-terminal-profile-switcher

มันทำหน้าที่เป็นตัวเรียงลำดับของลิงและสร้างโปรไฟล์ใหม่สำหรับแต่ละเทอร์มินัลจากนั้นตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างเพื่อให้โปรแกรมแสดงสลับธีมของโปรไฟล์สำหรับเทอร์มินัลปัจจุบันของคุณ

หวังว่าสคริปต์ safe_ssh ตัวอย่างจะทำให้สิ่งที่ชัดเจน :-) ฉันใช้มันมานานกว่าหนึ่งปีแล้วและมันช่วยฉันไม่ให้ทำลายฐานข้อมูลสดของ บริษัท ^ _ ^


2

หากคุณมีรายการเซิร์ฟเวอร์ที่คุณเข้าถึงบ่อยครั้งฉันเชื่อว่าวิธีที่ง่ายที่สุดคือการเรียกใช้หน้าต่างที่สองสำหรับเซสชันของกล่องนั้น

ก่อนอื่นสร้างโปรไฟล์ gnome-terminal แยกสำหรับแต่ละตำแหน่งระยะไกลที่คุณใช้บ่อย จากนั้นในแต่ละโปรไฟล์ระบุว่าเทอร์มินัลควรดำเนินการคำสั่งการเข้าสู่ระบบ SSH สำหรับกล่องนั้นแทนที่จะเป็นเชลล์ธรรมดา

ssh alice@athena

สุดท้ายเขียนสคริปต์สั้น ๆ เพื่อเปิดหน้าต่างระยะไกลใหม่ให้รหัสโปรไฟล์

#!/bin/bash
if [[ $# -ne 1 ]] ; then
  echo "Give me a server/profile name!"
  exit 1
fi
gnome-terminal --window-with-profile=$1
exit 0

การใช้กลยุทธ์นี้คุณสามารถ "อนันต์" เปลี่ยนแปลงลักษณะของหน้าต่างเทอร์มินัลของแต่ละกล่องและแตกต่างจากเทอร์มินัล "ควบคุม" เดียว ตัวอย่างเช่นถ้าเราเรียกสคริปต์นี้ว่า "rlv" เราสามารถวางไข่ของหน้าต่างระยะไกลโดยเพียงแค่เรียกใช้สคริปต์ด้วยชื่อโปรไฟล์

>> rlv athena

หากคุณเคยอ้วนชื่อโฮสต์หรือละเลยที่จะตั้งค่าโปรไฟล์สำหรับโฮสต์นั้นคุณก็จะได้รับหน้าต่างโปรไฟล์เริ่มต้นอีกหน้าต่างหนึ่งในกล่องท้องถิ่น มีวิธีการเขียนโค้ดสคริปต์เพื่อหลีกเลี่ยงปัญหานี้โดยใส่ข้อมูลการลงชื่อเข้าใช้สคริปต์เองแทนที่จะอยู่ใน gnome-terminal:

#!/bin/bash
if [[ $# -ne 1 ]] ; then
  echo "Give me a server/profile name!"
  exit 1
fi
gnome-terminal --window-with-profile=$1 -e "ssh $1"
exit 0

... แต่คุณจะสูญเสียความยืดหยุ่นในการกำหนดชื่อผู้ใช้สำหรับเข้าสู่ระบบของคุณ คุณลักษณะเพิ่มเติมของสคริปต์ที่ฉันปล่อยไว้เป็นแบบฝึกหัดให้กับผู้อ่าน


ขอบคุณที่ให้แนวคิดนี้แก่ฉัน :-) ฉันต้องการเพิ่มว่าคุณสามารถเขียนไฟล์ .desktop ที่จะเปิดตำแหน่งโปรดของคุณด้วย (ดับเบิล) - คลิกด้วยวิธีนั้น
Hinz

1

ฉันเพิ่งสังเกตเห็นว่าโซลูชันดั้งเดิมของฉันถูกปฏิเสธไปแล้วในคำถาม แม้ว่าจะไม่มีวิธีง่ายๆในการเปลี่ยนโปรไฟล์ แต่คุณสามารถเปลี่ยนสีพื้นหลัง / พื้นหน้าได้โดยใช้settermคำสั่ง

ดังนั้นนี่setterm -term linux -background black -foreground greenจะทำให้คุณมีพื้นหลังสีดำพร้อมข้อความสีเขียว ปัญหาเดียวคือ ls มีเอาต์พุต colorized ดังนั้นคุณอาจต้องการปิด ls ระบายสี มิฉะนั้นจะรีเซ็ตเป็นชุดสีก่อนหน้า

โพสต์ต้นฉบับ : มีวิธีเรียงรอบ จากมนุษย์ gnome-terminal:

--window ที่มีรายละเอียด = โปรไฟล์

             Open a new window containing a  tab  with  the
             given profile.  More than one of these options
             can be provided.

นี่คือตัวอย่างจากเครื่องของฉัน ฉันมีสามโปรไฟล์: B&G (ดำบนเขียว), ForPrinting (แบบอักษรดำพื้นหลังสีขาว) และค่าเริ่มต้น gnome-terminal --window-with-profile=ForPrintingดังนั้นสิ่งที่ฉันทำอยู่ในประเภทหน้าต่างปัจจุบัน จากนั้นฉันสามารถฆ่าหน้าต่างเก่าจากบรรทัดคำสั่งหรือเปลี่ยนแล้วปิดหน้าต่างกราฟิก

โปรไฟล์ B&G ไม่ทำงาน อาจเป็นเพราะ & ไม่ใช่ตัวอักษรที่ถูกต้องดังนั้นควรคำนึงถึงเรื่องนี้เมื่อตั้งชื่อโปรไฟล์


0

วิธีแก้ปัญหาที่น่าเกลียดที่สุดที่ฉันเคยใช้คือ

unset x y
eval $(xwininfo -id $(xdotool getactivewindow) |
       sed -n -e 's/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p' \
              -e 's/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p')
xdotool mousemove $(($x + 50)) $(($y + 50))
xdotool click 3; xdotool key --repeat 3 Up; xdotool key Right; xdotool key --delay 50 Down; xdotool key --delay 50 Return

(นี่เป็นการเลือกโปรไฟล์ที่สอง แต่คุณสามารถเปลี่ยนสิ่งนั้นเพื่อพูดโปรไฟล์ htir โดยการเปลี่ยนคำสั่ง "key Down" ที่สองเป็น xdotool key --delay 50 --repeat 2 Downสองเป็น

กำลังทำอะไรอยู่:

  1. ค้นหาพิกัดด้านซ้ายบนของหน้าต่างปัจจุบัน (เช่นเทอร์มินัล gnome ที่ใช้งาน)
  2. เลื่อนเมาส์ไปที่เทอร์มินัลนั้น
  3. คลิกขวาและไปที่เมนูบริบทเพื่อเลือกโปรไฟล์ที่สอง

sudo apt install xdotoolคุณจะต้องติดตั้ง xdotool

ชนิดพิเศษที่เทอร์มินัลเองไม่อนุญาตการกำหนดค่าผ่านเทอร์มินัล!


0

มันจะยอดเยี่ยมของ gnome-terminal ที่เสนอคำสั่ง "โปรไฟล์ต่อไป" และทางลัด น่าเสียดายที่มันไม่ได้

วิธีแก้ปัญหาสำหรับผู้ที่Alt+Tปิดใช้งาน (แก้ไข> การกำหนดค่าตามความชอบ> เปิดใช้ช่วยในการจำ - ไม่เลือก) คือ: F10 left left down rightและเลือกโปรไฟล์ อุ๊ยตาย


เป็นที่น่าสังเกตว่าสิ่งนี้จะต้องมีแถบเมนูที่สามารถมองเห็นได้
Gauthier

0

นี่เป็นโพสต์ที่ค่อนข้างเก่า แต่เนื่องจากมันยังคงปรากฏขึ้นในขณะที่ฉันค้นหาเพื่อแก้ไขปัญหาเดียวกันนี้ฉันคิดว่าฉันจะโพสต์โซลูชันของฉัน

นี่เกี่ยวข้องกับสคริปต์หลามขนาดเล็กและทำการแมปปุ่ม CTRL + ALT + T ใหม่เพื่อเรียกใช้สคริปต์แทนที่จะเรียกใช้งานเทอร์มินัล

สร้างไฟล์ข้อความฉันชื่อเหมือง terminal.py และตรวจสอบให้แน่ใจว่าสามารถเรียกใช้งานได้ วางรหัสต่อไปนี้ลงไป สิ่งนี้จะเปิดหน้าต่างเทอร์มินัลโดยใช้โพรไฟล์ที่มีอยู่ทั้งหมดตามลำดับเพื่อให้แน่ใจว่าหนึ่งที่มีเครื่องหมายว่า "ค่าเริ่มต้น" เป็นรายการแรกในรายการ

#!/usr/bin/python
#
# Launch a gnome-terminal window trying to assign each new window 
# to a different profile.
# 
import json
import os
import commands

profiles=[]

try:
    profileList = commands.getoutput("gsettings get org.gnome.Terminal.ProfilesList list").replace("'",'"')
    profileDefault = commands.getoutput("gsettings get org.gnome.Terminal.ProfilesList default").replace("'",'"')

    profiles.append(json.loads(profileDefault))
    ls = json.loads(profileList)
    ls.remove(profiles[0])
    profiles+=ls

    # find the next available terminal number
    # when terminals are closed, gaps in the numbers can happen
    # terminals are numeric and the lowest slot is filled first
    terminals = commands.getoutput("ls /dev/pts/  | grep -E '^[0-9]+$'").split("\n")
    next = 0
    try:
        while terminals.index(str(next))>=0:
            next += 1
    except:
        pass

    # determine the profile to use
    prof = next % len(profiles)

    # launch the terminal with the specific profile
    cmd="gnome-terminal --window-with-profile='%s'" % (profiles[prof])
    os.system(cmd)
except:
    # if anything fails, launch a default terminal
    print("error")
    os.system("gnome-terminal")

ใช้ยูทิลิตีการตั้งค่าแป้นพิมพ์เพื่อกำหนดทางลัดใหม่ให้กับสคริปต์นี้ สำหรับฉันฉันกำหนด CTRL + ALT + T ใหม่เนื่องจากเป็นทางลัดที่ฉันใช้เพื่อเปิดหน้าต่างเทอร์มินัล

ตรวจสอบให้แน่ใจว่าสร้างโปรไฟล์หลายรายการในเทอร์มินัลของคุณ สคริปต์นี้จะใช้ประโยชน์จากโปรไฟล์ทั้งหมดของคุณ ดังนั้นยิ่งคุณสร้างมากเท่าไหร่คุณก็จะสามารถเข้าถึงชุดรูปแบบต่างๆได้มากขึ้นเช่นกัน ฉันมีหลายอย่างที่เหมือนกันทั้งหมดยกเว้นสีพื้นหลัง สิ่งนี้ช่วยให้ฉันจำพวกเขาได้ในขณะที่ฉันแท็บผ่านพวกเขา

ตัวอย่างหน้าต่างเทอร์มินัล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.