2013-11-24 37 views
1

是否有任何方法使用bash在瀏覽器(至少firefox)中獲取當前打開的選項卡。 換句話說,那個叫從文件瀏覽器的bash腳本選項卡的URL(在頁面合併)Bash:獲取當前瀏覽器選項卡

+0

當你說「調用bash腳本的選項卡」時,我不清楚你在說什麼。標籤如何在您的系統中「調用」bash腳本? – Louis

+0

我的意思是「呼叫」:設想一個網頁,其中有一個文件瀏覽器來選擇應用程序。 (在bash腳本中,我告訴系統打開另一個網站的URL,其中一個參數是當前選項卡的網址) – 4m1nh4j1

+0

我不確定我是否清楚或不清楚,但是使事情變得非常簡單: 我想知道如果我可以使用xdotool或任何其他工具來獲取網頁瀏覽器的活動標籤的網址) – 4m1nh4j1

回答

-3

我偶然發現這一點:

#!/bin/bash 
for var in "[email protected]" 
do 
    # 
    # 
done 

$ @包含的網址該標籤。

+0

請給出正確的答案。怎麼可以用這個 –

1

火狐改變它存儲在硬盤上的URL的方式在版本33

我寫這個PHP腳本來搜索打開的標籤。我使用了PHP,因此您需要安裝php5-cli(或更新版本)的軟件包。

你需要ajust的$ displayOnlyLastActiveUrl滿足您的需求:設置爲false,以顯示所有打開的網址,真正爲去年主動打開URL

腳本可能需要改進,但它適合我的需要。

已知的侷限性:

  • migth不看的良好形象,如果你有在Firefox中設置多個配置文件。

  • 力量需要長達10秒更新

  • 如果你選擇輸出的所有URL,一些關閉的標籤可能會出現

只需創建一個PHP文件與上述內容並運行它在殼內php yourfile.php

<?php 
// 
// Display curent opened URLs in firefox. 
// Author: Julien Marin (malinuxtele[AT]tuxfamily[DOT]org) 
// Licence: GPL 3 
// 

$displayOnlyLastActiveUrl=true; //set to false to display all opened url, true for last active opened URL 

//Search for restore.js (might need to be improved for multiprofiles environement...) 
if (!$profileIniContents=fopen(getenv("HOME")."/.mozilla/firefox/profiles.ini", "r")) trigger_error("unable to open profiles file", E_USER_ERROR); 
$profile=""; 
$ar_match=array(); 
while ($ligne=fgets($profileIniContents)) 
    if (preg_match("/Path=([^.]*)[.]default/", $ligne, $ar_match)) 
     $profile=$ar_match[1]; 

//Open recovery.js file 
if(! $recoveryFileHandle=fopen(getenv("HOME")."/.mozilla/firefox/$profile.default/sessionstore-backups/recovery.js", "r")) trigger_error("unable to open recovery.js file", E_USER_ERROR); 
$recoveryData=json_decode(fread($recoveryFileHandle, 4000000), true); 

//parse data 
$ar_tabs=array(); 
foreach ($recoveryData["windows"] as $actWindow) 
    foreach ($actWindow["tabs"] as $actTabGroup) 
    { 
     $lastAccess=$actTabGroup["lastAccessed"]; 
     foreach ($actTabGroup["entries"] as $actTabEntry) 
      if(!$displayOnlyLastActiveUrl) echo($actTabEntry["url"]."\n"); 
      else $ar_tabs[$lastAccess]=$actTabEntry["url"]; 

    } 

//search last URL 
if ($displayOnlyLastActiveUrl) 
{ 
    ksort($ar_tabs); 
    echo array_pop($ar_tabs); 
} 

?> 
相關問題