জিনোম কীবোর্ড শর্টকাটগুলি কোথায় সঞ্চয় করা হয়?


53

আমি অন্য ওয়ান পার্টিশনে ব্যাকআপ হিসাবে শেষ সংস্করণটি সংরক্ষণ করার সময় আমার ওএস টাটকা রাখতে প্রতিটি রিলিজের জন্য একটি নতুন সংস্করণ লোড করি। আমি প্রচুর কাস্টম কী ম্যাপিং নিয়োগ করি।

আমি এখন পর্যন্ত সিস্টেমগুলিতে কীভাবে আমার বেশিরভাগ কনফিগারেশন স্থানান্তর করতে পারি তা খুঁজে পেয়েছি তবে কাস্টম কীবোর্ড শর্টকাট ম্যাপিংগুলি কোথায় সঞ্চয় করা আছে তা আমি বুঝতে পারি না।

জিনোম এগুলি কোথায় রাখে তা কি কেউ জানেন? পৃথক ব্যবহারকারী কনফিগারেশন (যেমন, ~ /) এবং সিস্টেম কনফিগারেশন (ie / ইত্যাদি) ফাইল আছে?


2
আপনি কীভাবে সেটিংস পরিবর্তন করেছেন? GConf সম্পাদক ব্যবহার করছেন? আমি অনুমান করছি আপনি চান gconftool-2 --dump /apps/metacityবা এরকম কিছু।
মাইকেল

1
@ মাইকেল এই মন্তব্যের জন্য একগুচ্ছ ধন্যবাদ। আমি gconf- এডিটরে যা বলতে পারি তা থেকে, বেশিরভাগ কী-বাইন্ডিংগুলি / অ্যাপস / মেটাসিটির অধীনে সংরক্ষণ করা হয় যখন বাকী চারদিকে ছড়িয়ে পড়ে। আমি বর্তমানে আমদানি / রফতানি পাইথন স্ক্রিপ্টগুলি লিখছি ব্যাকআপ / পুনরুদ্ধার কী-বাইন্ডিংগুলিকে এক-ক্লিক অপারেশন করতে।
ইভান প্লেস

উত্তর:


45

এই প্রশ্নের অন্যান্য উত্তর লিখিত হওয়ার পরে উবুন্টু পরিবর্তন হয়েছে written

কী বাইন্ডিংগুলি gconf থেকে dconf এ চলে গেছে। GConf XML ফাইল তার তথ্য সঞ্চয় করে এবং দ্বারা অ্যাক্সেস করা হয়েছে gconf-editorএবং gconf-tool2। Dconf একটি বাইনারি বিন্যাসে তার ডেটা সঞ্চয় করে এবং দ্বারা ব্যবহার করা হয় dconf-editorএবং gsettings

কী বাইন্ডিংগুলি সঞ্চিত রয়েছে সেগুলির সংখ্যা হ্রাস পেয়েছে। উইন্ডো ম্যানেজার কীবাইন্ডিংস ( org.gnome.desktop.wm.keybindings) সংরক্ষণ করার জন্য এখন একটি কেন্দ্রীভূত ডকনফ পাথ রয়েছে । ডিরেক্টরিতে ম্যাপিং ফাইল রয়েছে /usr/share/gnome-control-center/keybindings/যা দেখায় যে এটি কীভাবে আপনি উইন্ডো ম্যানেজারের (কম্পিউটার বা মেটেসিটি) ব্যবহার করছেন তার ভিত্তিতে কীভাবে প্রয়োগ করা হয়।

নন-উইন্ডো-ম্যানেজার সম্পর্কিত কী বাইন্ডিংগুলির দ্বিতীয় সেটটি ডকনফ পথে সংরক্ষণ করা হয় org.gnome.settings-daemon.plugins.media-keys

পাওয়ার বোতামগুলির সাথে সম্পর্কিত কী-বাইন্ডিংগুলির একটি তৃতীয় সেট রয়েছে যা ডকনফ পথে সঞ্চিত থাকে org.gnome.settings-daemon.plugins.power। জিইউআইতে বর্তমানে একটি বাগ রয়েছে যা আপনাকে কী-বাইন্ডিংগুলি কনফিগার করতে দেয়। এটি এই সেটিংস সম্পর্কে জানে না। আমার কীবোর্ডে আমার একটি "ঘুম" বোতাম রয়েছে। যদি আমি এটিকে অন্য কার্যকারিতাটিতে পুনরায় নিয়োগ করতে চাই, আমাকে org.gnome.settings-daemon.plugins.powerনিজেই সেটিংটি অক্ষম করতে হবে । জিইউআই এটি আমার জন্য করে না (যদিও এটি নতুন কার্যকারিতা ঠিকঠাক বরাদ্দ করেছে)।

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

আমি আরও জানতে পেরেছি যে জিইউআই আপনাকে কী-বাইন্ডিংগুলি নির্ধারণ করতে দেয় তা এমনভাবে সীমাবদ্ধ যা আমাকে বিরক্ত করে। জিইউআই প্রতিটি ক্রিয়াকে হ'ল এক কী-বাইন্ডিং নির্ধারিত করার অনুমতি দেয়। Dconf এ, আপনি একক ক্রিয়াকলাপের জন্য একটি বিন্যাসের অ্যারে সেট করতে পারেন। এটি আমার পক্ষে কার্যকর। উদাহরণস্বরূপ, আমি ট্রেডিটোনাল অল্ট-এফ 4 এর পাশাপাশি "কিবোর্ডে একক বোতামটি হিট করা সহজ করার জন্য" ক্লোজ উইন্ডো "অ্যাকশন নির্ধারণ করতে চাই।

আমি একটি সিএসভি ফাইলে সমস্ত কীবাইন্ডিংগুলি ফেলে দিতে, বা সেগুলি সিএসভি ফাইল থেকে পুনরুদ্ধার করতে পার্ল স্ক্রিপ্ট লিখেছি। উদাহরণস্বরূপ আপনি যে কীবাইন্ডিংগুলি ব্যবহার করতে পারেন তা ডাম্প করতে:

./keybindings.pl -e /tmp/keys.csv

এবং সেগুলি পুনরুদ্ধার করতে আপনি ব্যবহার করতে পারেন:

./keybindings.pl -i /tmp/keys.csv

#!/usr/bin/perl

use strict;

my $action = '';
my $filename = '-';

for my $arg (@ARGV){
    if ($arg eq "-e" or $arg eq "--export"){
        $action = 'export';
    } elsif ($arg eq "-i" or $arg eq "--import"){
        $action = 'import';
    } elsif ($arg eq "-h" or $arg eq "--help"){
        print "Import and export keybindings\n";
        print " -e, --export <filename>\n";
        print " -i, --import <filename>\n";
        print " -h, --help\n";
        exit;
    } elsif ($arg =~ /^\-/){
        die "Unknown argument $arg";
    } else {
        $filename = $arg;
        if (!$action){
            if ( -e $filename){
                $action='import';
            } else {
                $action='export';
            }
        }
    }
}

$action='export' if (!$action);
if ($action eq 'export'){
    &export();
} else {
    &import();
}

sub export(){
    my $gsettingsFolders = [
        ['org.gnome.desktop.wm.keybindings','.'],
        ['org.gnome.settings-daemon.plugins.power','button'],
        ['org.gnome.settings-daemon.plugins.media-keys','.'],
    ];

    my $customBindings = [
    ];

    $filename = ">$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    for my $folder (@$gsettingsFolders){
        my @keylist = split(/\n/, `gsettings list-recursively $folder->[0]`);
        foreach my $line (@keylist){
            if ($line =~ /^([^ ]+) ([^ ]+)(?: \@[a-z]+)? (.*)/){
                my ($path, $name, $value) = ($1,$2,$3);
                if ($name eq "custom-keybindings"){
                    $value =~ s/[\[\]\' ]//g;
                    my @c = split(/,/, $value);
                    $customBindings = \@c;
                } elsif ($name =~ /$folder->[1]/){
                    if ($value =~ /^\[|\'/){
                        if ($value =~ /^\[\'(?:disabled)?\'\]$/){
                            $value = '[]';
                        } 
                        print $fh "$path\t$name\t$value\n";
                    }
                }        
            } else {
                die "Could note parse $line";
            }
        }
    }   

    for my $folder (@$customBindings){
        my $gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$folder`;
        my ($binding) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\'[^\n]+\')/g;
        my ($command) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\'[^\n]+\')/g;
        my ($name) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\'[^\n]+\')/g;
        $command =~ s/\"/\\\"/g;
        $command =~ s/^'(.*)'$/$1/g;
        $command =~ s/\'/\'\\\'\'/g;
        $command = "\'$command\'";
        print $fh "custom\t$name\t$command\t$binding\n"    
    }

    close($fh);
}

sub import(){

    $filename = "<$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    my $customcount=0;

    while (my $line = <$fh>){
        chomp $line;
        if ($line){
            my @v = split(/\t/, $line);
            if (@v[0] eq 'custom'){
                my ($custom, $name, $command, $binding) = @v;
                print "Installing custom keybinding: $name\n";
                    print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ name \"$name\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ command \"$command\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ binding \"$binding\"`;
                $customcount++;
            } else {
                my ($path, $name, $value) = @v;
                print "Importing $path $name\n";
                print `gsettings set \"$path\" \"$name\" \"$value\"`;
            }
        }       
    }
    if ($customcount > 0){
        my $customlist = "";
        for (my $i=0; $i<$customcount; $i++){
            $customlist .= "," if ($customlist);
            $customlist .= "'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$i/'";            
        }
        $customlist = "[$customlist]";
        print "Importing list of custom keybindings.\n";
        print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \"$customlist\"`;
    }

    close($fh);
}

এতে ব্যবহারকারীর দ্বারা নির্ধারিত 2589537 এর মধ্যে কোটগুলির সাথে কাস্টম কমান্ডগুলি মঞ্জুর করতে হবে।


2
আমি উবুন্টু জিনোম-নিয়ন্ত্রণ কেন্দ্র-কীবোর্ড শর্টকাটগুলির বিরুদ্ধে দুটি বাগ দায়ের করেছি filed এই স্ক্রিপ্টটি তৈরি করার সময় আমি তাদের খুঁজে পেয়েছি। bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/… এবং bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/…
স্টিফেন ওস্টেরমিলার

1
@ স্টিফেন লিপিটির জন্য ধন্যবাদ, কেবল উবুন্টু ১৩.১০ তে চেষ্টা করেছিলাম এবং এটি ঠিক কাজ করেছে! সহজেই ভাগ করে নেওয়ার জন্য একটি সূচনা
লিও

সুনির্দিষ্ট দস্তাবেজগুলি দুর্দান্ত কাজ এবং ভাল কাজ job
ইভান প্লেইস

2
এখনও উবুন্টু জিনোম ৩.২ এ কাজ করে - আপনাকে ধন্যবাদ!
klequis

1
আমার জন্য টেকনিক্যালি "কাজ করে", কিন্তু সম্ভবত উবুন্টু-mate (অর্থাত জন্য বিভিন্ন dconf বিভাগে ঘড়ি করতে হবে [org/mate/marco/global-keybindings], [org/mate/marco/window-keybindings], ...)
ফ্রাঙ্ক Nocke

17

কী-বোর্ড শর্টকাটগুলির মতো dconf সেটিংস ব্যাকআপ করবেন

  1. সেগুলি একটি ফাইলে ফেলে দিন:

    dconf dump / >~/.config/dconf/user.conf
    
  2. কোনও পাঠ্য সম্পাদক এ ফাইলটি খুলুন এবং আপনার সেটিংগুলির জন্য সেটিংস নির্বাচন করুন:

    editor ~/.config/dconf/user.conf
    

    আপনি যদি ভিম ব্যবহার করেন তবে আপনি এই সিনট্যাক্স হাইলাইটটি চাইবেন ।

    আপনি শীঘ্রই নিজেকে জিজ্ঞাসা করবেন কি<Primary>

  3. আপনি যদি সেটিংটির নামটি না জানেন তবে GUI এর মতো এটি কীভাবে পরিবর্তন করবেন তা জানেন unity-control-center, চালান:

    dconf watch /
    

    এবং তারপরে এগুলি সংশোধন করুন। সঠিক সেটিংসটি টার্মিনালে উপস্থিত হবে।

  4. আপনি যখন এই সেটিংসটি পুনরুদ্ধার করতে চান, চালান:

    dconf load / <~/.config/dconf/user.conf
    
  5. কনফিগার ফাইলটি কখনই এটি হারাতে না পারে তার গিট করুন https://github.com/andsens/homeshick আমার বর্তমান প্রিয় পদ্ধতি।

উবুন্টু 15.10 এ পরীক্ষা করা হয়েছে। টিপ: http://catern.com/2014/12/21/plain-text-configration-gnome.html থেকে অভিযোজিত

অপ্রত্যাশিত প্রোফাইল আইডিগুলির কারণে জিনোম টার্মিনাল দুর্ভাগ্যক্রমে এই সম্পাদনাগুলির বিরুদ্ধে প্রতিরোধী: 18.04-এ কমান্ড লাইন থেকে জিনোম-টার্মিনাল প্রোফাইল সম্পাদনা করুন


15

কীবোর্ড শর্টকাটগুলি কোনও এক জায়গায় সংরক্ষণ করা হয় না

আপনার ডিস্ট্রো সংস্করণের উপর নির্ভর করে কীবোর্ড শর্টকাট অ্যাপ্লিকেশনকে জিইউআইতে বিভিন্ন জিনিস বলা যেতে পারে তবে কমান্ড লাইনে একে 'জিনোম-কী-বাইন্ডিং-বৈশিষ্ট্য' বলা উচিত। দেখা যাচ্ছে যে এই ঝরঝরে সামান্য অ্যাপ্লিকেশনটি ব্যবহারকারীদের সম্পাদনা করার জন্য সমস্ত শর্টকাটকে একটি সুবিধাজনক স্থানে নিয়ে আসে।

যেহেতু উবুন্টুতে কী-বাইন্ডিংয়ের জন্য কোনও ক্লিক-রফতানি / আমদানি সরঞ্জাম উপস্থিত নেই তাই আমি পাইথনে একটি লিখেছিলাম:

এখানে লিপির লিঙ্ক link

একটি এক্সপোর্ট সিস্টেম থেকে সেটিংস টান দেয়। মূলত এটিতে কী-বাইন্ডিং-এর সমস্ত অবস্থানের তালিকা রয়েছে স্ক্রিপ্টের একটি অভিধানে হার্ড-কোডড od স্ক্রিপ্টটি তালিকাটি ইমিউরেটেড করে এবং প্রতিটি কী-এর জন্য "gconftool-2 --get [লোকেশন]" কমান্ডটি চালায় এবং কী-র পাশাপাশি অভিধানে মান সংরক্ষণ করে। তারপরে আপনি সেটিংসটি সংরক্ষণ করার জন্য অবস্থানটি নির্দিষ্ট করে দিলে এটি অভিধানে এটি জসন ফর্ম্যাটে ফাইলটিতে সংরক্ষণ করে।

একটি আমদানি স্ক্রিপ্ট এই প্রক্রিয়াটিকে বিপরীত করে। এটি json ফাইল থেকে অভিধানটি লোড করে। তারপরে এটি এর মাধ্যমে অঙ্কিত হয় এবং সংরক্ষিত সমস্ত সেটিংস পুনরুদ্ধার করতে "gconftool-2 - টাইপ স্ট্রিং --set [অবস্থান] [মান]" কমান্ডটি চালায়।

উভয় প্রান্তে একটি শট এবং এটি অন্য কোনও সিস্টেমের কনফিগারেশন সেটিংসের স্পর্শ না করে প্রতিটি একক কীবোর্ড শর্টকাট সংরক্ষণ / পুনরুদ্ধার করে।

এই স্ক্রিপ্টগুলির জন্য একমাত্র নির্ভরতা:

  • অজগর (পরীক্ষিত এবং 2.6, 2.7 এবং 3.1 এ কাজ করছে)
  • gconftool-2 (একটি উবুন্টু ইনস্টল সঙ্গে স্ট্যান্ডার্ড আসে)
  • Zenity (একটি উবুন্টু ইনস্টল সঙ্গে স্ট্যান্ডার্ড আসে)

পাইথনটি স্ক্রিপ্টটি সম্পাদন করার জন্য প্রয়োজন, সেটিংস পেতে / সেট করতে gconftool-2 ব্যবহার করা হয়, ফাইল লোড / সেভ গুই সংলাপগুলির জন্য জেনটিটি প্রয়োজন।

আমি উবুন্টু মস্তিষ্কে একটি এন্ট্রি তৈরি করেছি এবং এই বৈশিষ্ট্যটি 'জিনোম-কী-বাইন্ডিং-বৈশিষ্ট্যগুলি' জিইউআই মেনুতে চালু করার বিষয়ে অগ্রগতি করছি।

হালনাগাদ:

আমি আমদানি ও রফতানি স্ক্রিপ্টগুলি এক সাথে সংযুক্ত করে আপডেট করেছি, সম্পূর্ণ কমান্ড লাইন কার্যকারিতা (--help তথ্য সহ) যুক্ত করেছি এবং এটিকে পাইথন 2 এক্স এবং পাইথন 3 কে উভয়ের জন্য সামঞ্জস্যপূর্ণ করেছি। এছাড়াও, উবুন্টু মস্তিষ্কের ধারণা সম্পর্কে লিঙ্কটি যুক্ত করা হয়েছে।


উবুন্টুর প্রকৃত উন্নতির জন্য মস্তিষ্ক খুব কমই খুব ভাল জায়গা - কেবল শীর্ষ দশটি বিষয়ই আসলে বিকাশকারীদের দৃষ্টি আকর্ষণ করে। আমি আপনাকে লঞ্চপ্যাড পৃষ্ঠাটি সন্ধান করার জন্য পরামর্শ দিচ্ছি gnome-keybinding-propertiesএবং আপনার স্ক্রিপ্টের সাথে একটি প্যাচ পোস্ট করব।
অক্সভিভি

আপনার স্ক্রিপ্টটি gconftool-2 / gconf- সম্পাদক দ্বারা পরিচালিত / পরিচালিত শর্টকাটগুলির জন্য ভাল ... এবং আমি মনে করি এটি কোনও জিনোম কীবোর্ড শর্টকাট বলে তার উপর নির্ভর করে ... তবে এটি সিস্টেম-ব্যাপী ব্যবহারকারী শর্টকাটগুলি বেছে নিচ্ছে না দ্বারা Keyboard Shortcutsgnome-keybinding-properties... বা অন্যান্য কী-বাইন্ডিংগুলি উদাহরণস্বরূপ যুক্ত করা হয়নি Xbindkeys... সুতরাং আমি সন্দেহ করি যে gconf 'যেখানে সিসটেম-প্রশস্ত শর্টকাটগুলি তারা "সঞ্চিত" থাকে তা নয়, তবে এটি কোনও কিছুর / আরও গভীরতর ইন্টারফেস ... (আমি 'জায়গাটি খুঁজছিলাম .. :)। হয়তো আমার এখনই 3 টি রফতানি করা তালিকাগুলি রাখা দরকার ...
পিটার.ও

@ ফ্রেড.বায়ার আমি নিশ্চিত যে এগুলি সবগুলি জিকনফে সংরক্ষিত রয়েছে তবে আমি যখন খুঁজে পেলাম যে আপনি কন্ট্রোল প্যানেলে ডিফল্ট থেকে পরিবর্তন করবেন তখন জিনোম-কী-বাইন্ডিং-বৈশিষ্ট্যে নতুন কী-বাইন্ডিং যুক্ত হবে। বর্তমান স্ক্রিপ্টটি জিইউআইতে পাওয়া ডিফল্ট শর্টকাটগুলি করবে তবে এটি জিইউআইতে শক্ত সংহতকরণ ছাড়া সমস্ত শর্টকাটকে সমর্থন করতে সক্ষম হবে না। ইতিমধ্যে এটির জন্য একটি নীলনকশা খোলা রয়েছে তাই আমি অন্য বিকাশকারীদের সাথে যোগাযোগ করার চেষ্টা করছি যারা লঞ্চপ্যাডের বিষয়ে বিশদটি প্রকাশের প্রস্তাব দিয়েছিল। আপাতত ... এটি কাজ করে।
ইভান প্লেইস

3

১১.১০-এ জিনোম ক্লাসিক চলমান অবস্থায় আমি ডিরেক্টরিগুলির একটি সেট (কাস্টম0, কাস্টম 1 ...) এর নীচে পেয়েছি

$HOME/.gconf/desktop/gnome/keybindings

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


2

স্বীকৃত উত্তরের সাথে সামান্য সমস্যা আছে, এটিতে উক্ত কাস্টম কমান্ডগুলি উক্ত হ্যান্ডেলগুলির সাথে পরিচালনা করতে পারে না। আমি কেবল সঠিক আউটপুট উত্পন্ন করতে কাস্টম কমান্ডগুলির প্রক্রিয়াকরণটি পরিবর্তন করেছি।

#!/usr/bin/perl

use strict;

my $action = '';
my $filename = '-';

for my $arg (@ARGV){
    if ($arg eq "-e" or $arg eq "--export"){
        $action = 'export';
    } elsif ($arg eq "-i" or $arg eq "--import"){
        $action = 'import';
    } elsif ($arg eq "-h" or $arg eq "--help"){
        print "Import and export keybindings\n";
        print " -e, --export <filename>\n";
        print " -i, --import <filename>\n";
        print " -h, --help\n";
        exit;
    } elsif ($arg =~ /^\-/){
        die "Unknown argument $arg";
    } else {
        $filename = $arg;
        if (!$action){
            if ( -e $filename){
                $action='import';
            } else {
                $action='export';
            }
        }
    }
}

$action='export' if (!$action);
if ($action eq 'export'){
    &export();
} else {
    &import();
}

sub export(){
    my $gsettingsFolders = [
        ['org.gnome.desktop.wm.keybindings','.'],
        ['org.gnome.settings-daemon.plugins.power','button'],
        ['org.gnome.settings-daemon.plugins.media-keys','.'],
    ];

    my $customBindings = [
    ];

    $filename = ">$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    for my $folder (@$gsettingsFolders){
        my @keylist = split(/\n/, `gsettings list-recursively $folder->[0]`);
        foreach my $line (@keylist){
            if ($line =~ /^([^ ]+) ([^ ]+)(?: \@[a-z]+)? (.*)/){
                my ($path, $name, $value) = ($1,$2,$3);
                if ($name eq "custom-keybindings"){
                    $value =~ s/[\[\]\' ]//g;
                    my @c = split(/,/, $value);
                    $customBindings = \@c;
                } elsif ($name =~ /$folder->[1]/){
                    if ($value =~ /^\[|\'/){
                        if ($value =~ /^\[\'(?:disabled)?\'\]$/){
                            $value = '[]';
                        } 
                        print $fh "$path\t$name\t$value\n";
                    }
                }        
            } else {
                die "Could note parse $line";
            }
        }
    }   

    for my $folder (@$customBindings){
        my $gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$folder`;
        my ($binding) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\'[^\n]+\')/g;
        my ($command) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\'[^\n]+\')/g;
        my ($name) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\'[^\n]+\')/g;
        $command =~ s/\"/\\\"/g;
        $command =~ s/^'(.*)'$/$1/g;
        $command =~ s/\'/\'\\\'\'/g;
        $command = "\'$command\'";
        print $fh "custom\t$name\t$command\t$binding\n"    
    }

    close($fh);
}

sub import(){

    $filename = "<$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    my $customcount=0;

    while (my $line = <$fh>){
        chomp $line;
        if ($line){
            my @v = split(/\t/, $line);
            if (@v[0] eq 'custom'){
                my ($custom, $name, $command, $binding) = @v;
                print "Installing custom keybinding: $name\n";
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ name \"$name\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ command \"$command\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ binding \"$binding\"`;
                $customcount++;
            } else {
                my ($path, $name, $value) = @v;
                print "Importing $path $name\n";
                print `gsettings set \"$path\" \"$name\" \"$value\"`;
            }
        }       
    }
    if ($customcount > 0){
        my $customlist = "";
        for (my $i=0; $i<$customcount; $i++){
            $customlist .= "," if ($customlist);
            $customlist .= "'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$i/'";            
        }
        $customlist = "[$customlist]";
        print "Importing list of custom keybindings.\n";
        print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \"$customlist\"`;
    }

    close($fh);
}

আসকউবুন্টুতে দুর্দান্ত প্রথম উত্তর! অভিনন্দন!
ফাব্বী

আমি আপনার পরিবর্তনগুলি গ্রহণযোগ্য উত্তরে একীভূত করেছি।
স্টিফেন অস্টেরমিলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.