Tmux কনফিগারেশন ফাইলটি কীভাবে পুনরায় লোড করবেন যা একাধিক সেশন সংজ্ঞায়িত করেছে?


9

আমি এখানে দুটি পৃথক পৃথক অধিবেশন ব্যবহার করছি tmuxএবং আমার নিম্নলিখিত প্রবেশদ্বার রয়েছে /etc/tmux.conf:

set -g base-index 1

new -s logi -n cmd
neww -n logi "cat /dev/logi | ccze -m ansi -p syslog -C"
splitw -t 1 -v -p 50
selectw -t 2
selectp -t 0

new -s standard -n htop "htop"
neww -n cmd
splitw -t 2 -v -p 50
selectw -t 2 
selectp -t 1

আমি standardনিম্নলিখিত কমান্ডটি ব্যবহার করে অধিবেশন শুরু করি :

urxvtc -name 'tmux' -e bash -c 'tmux attach-session -t standard'

যদি কোনও অধিবেশন না থাকে তবে এটি একটি তৈরি করে, যদি একটি থাকে তবে এটি সংযুক্ত করে। আপনি দেখতে পাচ্ছেন যে আমার কাছে দুটি উইন্ডো রয়েছে যার মধ্যে একটি দুটি প্যানে বিভক্ত। আমি যখন কনফিগার ফাইলটি পুনরায় লোড করছি তখন আমি অন্যান্য সেশন থেকে 2 টি অতিরিক্ত উইন্ডোজ পেয়েছি এবং উভয়ই পূর্বনির্ধারিতগুলিতে যুক্ত করা হয়েছে। তদতিরিক্ত, পূর্ববর্তী উইন্ডোজগুলি একটি অতিরিক্ত ফলক পেয়েছিল। অতিরিক্ত দুটি প্যানগুলি পরিষ্কার, তাদের কোনওটিতে কোনও এক্সিকিউটেড কমান্ড (এইচটিপি) নেই।

কনফিগার ফাইলটি এমনভাবে পুনরায় লোড করার কোনও উপায় আছে যে এটি কেবল সংযুক্ত সেশনে প্রয়োগ করা হবে? অথবা আমি যখন সেশনগুলি ব্যবহার করছি তখন কনফিগার ফাইলটি পুনরায় লোড করা সম্পর্কে আমার কী ভুলে যেতে হবে tmux kill-serverএবং নতুন সেটিং প্রয়োগ করার জন্য আমার পুনরায় সেশন ব্যবহার করা এবং শুরু করা উচিত ?

উত্তর:


5

একটি মোড়ক তৈরি করুন

আমি মনে করি আপনার প্রয়োজনগুলি কাস্টম সেশন সেটআপ করতে কোনও কোনও র‌্যাপার স্ক্রিপ্ট দ্বারা সর্বোত্তমভাবে পরিবেশন করা হয়েছে। এর উত্তরটির মতো কিছু ।

এটি দেখতে এ জাতীয় কিছু দেখাচ্ছে তবে আপনার নির্দিষ্ট প্রয়োজনের জন্য আপনার এটি পরিবর্তন করা উচিত।

#!/bin/bash

# test if the session has windows
is_closed(){ 
    sess=$1
    n=$(tmux ls 2> /dev/null | grep "^$sess" | wc -l)
    [[ $n -eq 0 ]]
}

# either create it or attach to it
if is_closed logi ; then
  tmux new -d -s logi -n cmd
  tmux neww -t logi -n logi "cat /dev/logi | ccze -m ansi -p syslog -C"
  tmux splitw -t logi:1 -v -p 50
  tmux selectw -t logi:2
  tmux selectp -t logi:1
fi
if is_closed standard ; then
  tmux new -d -s standard -n htop "htop"
  tmux neww -n cmd -t standard
  tmux splitw -t standard:2 -v -p 50
  tmux selectw -t standard:2 
  tmux selectp -t standard:1
fi

একটি কনফিগারেশন ফাইল পুনরায় লোড করতে

Tmux ব্যবহার করার সময় আপনি যদি কনফিগারেশন ফাইলে একটি সম্পাদনা করেন তবে আপনি এটি প্রম্পটটি চালাতে পারেন

tmux source-file /path/to/conf

অথবা, আপনি এটি একটি কীতে আবদ্ধ করতে পারেন .tmux.conf

bind r source-file ${HOME}/.tmux.conf \; display-message "source-file reloaded"

হোম ডিরেক্টরি কনফিগারেশন

পরিশেষে, আপনার সত্যিকার অর্থে উল্লেখযোগ্য কাস্টমাইজেশন যুক্ত করা উচিত নয় /etc/tmux.confকারণ আপনার যদি একটি ভাগ করে নেওয়া সিস্টেম ব্যবহার করার প্রয়োজন হয় তবে এটি অন্যদের জন্য অসহনীয় হবে। পরিবর্তে, আমি আপনাকে কোনও কাস্টমাইজেশন যুক্ত করার পরামর্শ দিচ্ছি ~/.tmux.confকারণ এটি স্থানীয় এবং আপনার ব্যক্তিগত প্রয়োজনের সাথে নির্দিষ্ট।


স্ক্রিপ্টটি কার্যকর করতে আমি একটি ত্রুটি পেয়েছি: [[: not found(7 তম লাইন)
মিখাইল মরফিকভ

1
@ মিখাইলমর্ফিকভ এটি অন্য সংস্করণ হওয়ার কারণে হতে পারে। উপরের লাইনটি এ পরিবর্তন করার চেষ্টা করুন #!/bin/bash
স্কেলিকুলেটর

হ্যাঁ, এটি কাজ করে।
মিখাইল মরফিকভ

1

আপনাকে একটি র‌্যাপার স্ক্রিপ্ট ব্যবহার করতে হবে না, আপনি source-fileকমান্ড দিয়ে এটি করতে পারেন ।

আমি আমার .tmux.confটুকরো টুকরো টুকরো করে ফেলেছি এবং এটি কেবলমাত্র তাদের উত্স:

source-file ~/.config/tmux/options.conf
source-file ~/.config/tmux/session.conf

তারপরে, session.confফলকের সংজ্ঞা রয়েছে:

new -s logi -n cmd
neww -n logi "cat /dev/logi | ccze -m ansi -p syslog -C"
splitw -t 1 -v -p 50
selectw -t 2
selectp -t 0

new -s standard -n htop "htop"
neww -n cmd
splitw -t 2 -v -p 50
selectw -t 2 
selectp -t 1

এবং options.confকেবল বিকল্প সংজ্ঞা রয়েছে:

bind R source-file ~/.config/tmux/options.conf \; display-message "Config reloaded..."
set -g base-index 1

এইভাবে, bind Rকেবলমাত্র উত্সটি তৈরি options.confকরতে পারে এবং সবকিছুই পুনরায় লোড করা হবে, তবে কোনও নতুন ফলক তৈরি করা হবে না।
একটি ছোট অসুবিধা হ'ল আপনি যদি উইন্ডো বিন্যাসটি পরিবর্তন করতে চান তবে আপনাকে প্রস্থান করে একটি নতুন সেশন শুরু করতে হবে।


0

আমি এই স্ক্রিপ্ট তৈরি করেছি । এটিতে tmuxinator, রুবি বা অন্যের দরকার নেই। এটি কেবল একটি বাশ স্ক্রিপ্ট, কনফিগারযোগ্য।

আমি মাই কনফিগারেশন ফাইলটি কনফিগার করি:

combo=()
combo+=('logs' 'cd /var/log; clear; pwd')
combo+=('home' 'cd ~; clear; pwd')

আমি আমার সমস্ত প্রকল্প কনফিগার করতে পারি। বাকীটি স্ক্রিপ্ট দ্বারা সম্পন্ন হয়েছে:

#!/bin/bash

if [ -r config ]; then
    echo ""
    echo "Loading custom file"
    . config
else
    . config.dist
fi

tmux start-server

window=0
windownumber=-1

for i in "${combo[@]}"; do

    if [ $((window%2)) == 0 ]; then
        name=${i}
        ((windownumber++))
    else
        command=${i}
    fi

    if [ ${combo[0]} == "${i}" ]; then
        tmux new-session -d -s StarTmux -n "${name}"
    else
        if [ $((window%2)) == 0 ]; then
            tmux new-window -tStarTmux:$windownumber -n "${name}"
        fi
    fi

    if [ $((window%2)) == 1 ]; then
        tmux send-keys -tStarTmux:$windownumber "${command}" C-m
    fi

    ((window++))
done

tmux select-window -tStarTmux:0
tmux attach-session -d -tStarTmux
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.