packages feed

bustle 0.5.4 → 0.6.1

raw patch · 39 files changed

+554/−1107 lines, 39 filesdep −gtk2hs-buildtoolsdep −parsecdep ~hgettextbinary-added

Dependencies removed: gtk2hs-buildtools, parsec

Dependency ranges changed: hgettext

Files

Bustle.hs view
@@ -24,6 +24,7 @@ import System.Environment (getArgs) import System.Exit (exitFailure) import Control.Monad (when)+import System.Glib.Utils (setApplicationName) import Bustle.Noninteractive import Bustle.Translation import Bustle.UI@@ -51,6 +52,7 @@ main :: IO () main = do     initTranslation+    setApplicationName (__ "Bustle")     args <- getArgs      case args of
Bustle/Loader.hs view
@@ -25,17 +25,11 @@   ) where -import Control.Exception import Control.Monad.Except import Control.Arrow ((***)) -import Text.Printf--import qualified Bustle.Loader.OldSkool as Old import qualified Bustle.Loader.Pcap as Pcap-import Bustle.Upgrade (upgrade) import Bustle.Types-import Bustle.Translation (__) import Bustle.Util (io)  data LoadError = LoadError FilePath String@@ -48,27 +42,15 @@         -> ExceptT LoadError io ([String], Log) readLog f = do     pcapResult <- io $ Pcap.readPcap f-    liftM (id *** filter (isRelevant . deEvent)) $ case pcapResult of-        Right ms -> return ms-        Left _ -> liftM ((,) []) readOldLogFile-  where-    readOldLogFile = do-        result <- liftIO $ try $ readFile f-        case result of-            Left e      -> throwError $ LoadError f (show (e :: IOException))-            Right input -> do-                let oldResult = fmap upgrade $ Old.readLog input-                case oldResult of-                    Left e  -> throwError $ LoadError f (printf (__ "Parse error %s") (show e))-                    Right r -> return r+    case pcapResult of+        Right ms -> return $ (id *** filter (isRelevant . deEvent)) ms+        Left ioe -> throwError $ LoadError f (show ioe)  isRelevant :: Event            -> Bool isRelevant (NOCEvent _) = True isRelevant (MessageEvent m) = case m of-    Signal {}       -> none [ senderIsBus-                            , isDisconnected-                            ]+    Signal {}       -> not senderIsBus     MethodCall {}   -> none3     MethodReturn {} -> none3     Error {}        -> none3@@ -79,11 +61,7 @@     destIsBus = destination m == busDriver     busDriver = O (OtherName dbusName) -    -- When the monitor is forcibly disconnected from the bus, the-    -- Disconnected message has no sender; the old logger spat out <none>.-    isDisconnected = sender m == O (OtherName Old.senderWhenDisconnected)-     none bs = not $ or bs-    none3 = none [senderIsBus, destIsBus, isDisconnected]+    none3 = none [senderIsBus, destIsBus]  
− Bustle/Loader/OldSkool.hs
@@ -1,248 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{--Bustle.Loader.OldSkool: reads the output of bustle-dbus-monitor-Copyright © 2008–2011 Collabora Ltd.--This library is free software; you can redistribute it and/or-modify it under the terms of the GNU Lesser General Public-License as published by the Free Software Foundation; either-version 2.1 of the License, or (at your option) any later version.--This library is distributed in the hope that it will be useful,-but WITHOUT ANY WARRANTY; without even the implied warranty of-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU-Lesser General Public License for more details.--You should have received a copy of the GNU Lesser General Public-License along with this library; if not, write to the Free Software-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA--}-module Bustle.Loader.OldSkool-  ( readLog-  , senderWhenDisconnected-  )-where--import Bustle.Types-import qualified DBus as D-import Text.ParserCombinators.Parsec hiding (Parser)-import Data.Map (Map)-import Data.Maybe (isJust)-import qualified Data.Map as Map-import Control.Monad (when, guard)-import Control.Applicative ((<$>), (<*>), (<*))--type Parser a = GenParser Char (Map (TaggedBusName, Serial) (Detailed Message)) a--t :: Parser Char-t = char '\t'--nameChars :: Parser String-nameChars = many1 (noneOf "\t\n")--- this should be---   nameChars = many1 (oneOf "._-" <|> alphaNum)--- but making it more tolerant lets us shoehorn misc into this field until the--- log format is less shit.--parseUniqueName :: Parser UniqueName-parseUniqueName = do-    char ':'-    rest <- nameChars-    case D.parseBusName (':':rest) of-        Just n  -> return $ UniqueName n-        Nothing -> fail $ "':" ++ rest ++ "' is not a valid unique name"-  <?> "unique name"---- FIXME: this shouldn't exist.-senderWhenDisconnected :: D.BusName-senderWhenDisconnected = D.busName_ "org.freedesktop.DBus.Local"--parseMissingName :: Parser OtherName-parseMissingName = do-    none-    return $ OtherName senderWhenDisconnected--parseSpecifiedOtherName :: Parser OtherName-parseSpecifiedOtherName = do-    x <- nameChars-    case D.parseBusName x of-        Just n  -> return $ OtherName n-        Nothing -> fail $ "'" ++ x ++ "' is not a valid name"--parseOtherName :: Parser OtherName-parseOtherName = parseMissingName <|> parseSpecifiedOtherName-  <?>-    "non-unique name"--parseBusName :: Parser TaggedBusName-parseBusName = (fmap U parseUniqueName) <|> (fmap O parseOtherName)--parseSerial :: Parser Serial-parseSerial = read <$> many1 digit <?> "serial"--parseTimestamp :: Parser Microseconds-parseTimestamp = do-    seconds <- i-    t-    µs <- i-    return $ µsFromPair seconds µs-  where i = read <$> many1 digit <?> "timestamp"--none :: Parser (Maybe a)-none = do-    string "<none>"-    return Nothing--pathify :: String -> D.ObjectPath-pathify s = case D.parseObjectPath s of-    Just p -> p-    Nothing -> D.objectPath_ "/unparseable/object/path"--interfacify :: String -> Maybe D.InterfaceName-interfacify = D.parseInterfaceName--memberNamify :: String -> D.MemberName-memberNamify s = case D.parseMemberName s of-    Just m -> m-    Nothing -> D.memberName_ "UnparseableMemberName"--entireMember :: Parser Member-entireMember = do-    let p = pathify <$> many1 (oneOf "/_" <|> alphaNum) <?> "path"-        i = none <|> fmap interfacify (many1 (oneOf "._" <|> alphaNum)) <?> "iface"-        m = memberNamify <$> many1 (oneOf "_" <|> alphaNum) <?> "membername"-    Member <$> p <* t <*> i <* t <*> m-  <?> "member"--addPendingCall :: Detailed Message -> Parser ()-addPendingCall dm = updateState $ Map.insert (sender m, serial m) dm-  where-    m = deEvent dm--findPendingCall :: TaggedBusName -> Serial -> Parser (Maybe (Detailed Message))-findPendingCall dest s = do-    pending <- getState-    let key = (dest, s)-        ret = Map.lookup key pending-    when (isJust ret) $ updateState (Map.delete key)-    return ret--methodCall :: Parser DetailedEvent-methodCall = do-    char 'c'-    t-    µs <- parseTimestamp-    t-    m <- MethodCall <$> parseSerial <* t-                    <*> parseBusName <* t <*> parseBusName <* t <*> entireMember-    let dm = Detailed µs m Nothing-    addPendingCall dm-    return $ fmap MessageEvent dm-  <?> "method call"--parseReturnOrError :: String-                   -> (Maybe (Detailed Message) -> TaggedBusName -> TaggedBusName -> Message)-                   -> Parser DetailedEvent-parseReturnOrError prefix constructor = do-    string prefix <* t-    ts <- parseTimestamp <* t-    parseSerial <* t-    replySerial <- parseSerial <* t-    s <- parseBusName <* t-    d <- parseBusName-    call <- findPendingCall d replySerial-    -- If we can see a call, use its sender and destination as the destination-    -- and sender for the reply. This might prove unnecessary in the event of-    -- moving the name collapsing into the UI.-    let (s', d') = case call of-            Just (Detailed _ m _) -> (destination m, sender m)-            Nothing               -> (s, d)-        message = constructor call s' d'-    return $ Detailed ts (MessageEvent message) Nothing- <?> "method return or error"--methodReturn, parseError :: Parser DetailedEvent-methodReturn = parseReturnOrError "r" MethodReturn <?> "method return"-parseError = parseReturnOrError "err" Error <?> "error"--signal :: Parser DetailedEvent-signal = do-    string "sig"-    t-    µs <- parseTimestamp-    t-    -- Ignore serial-    m <- Signal <$> (parseSerial >> t >> parseBusName) <* t-                <*> return Nothing-                <*> entireMember-    return $ Detailed µs (MessageEvent m) Nothing-  <?> "signal"--method :: Parser DetailedEvent-method = char 'm' >> (methodCall <|> methodReturn)-  <?> "method call or return"--noName :: Parser ()-noName = char '!' >> return ()-  <?> "the empty name '!'"--perhaps :: Parser a -> Parser (Maybe a)-perhaps act = (noName >> return Nothing) <|> fmap Just act--sameUnique :: UniqueName -> UniqueName -> Parser ()-sameUnique u u' = guard (u == u')-  <?> "owner to be " ++ unUniqueName u ++ ", not " ++ unUniqueName u'--atLeastOne :: OtherName -> Parser a-atLeastOne n = fail ""-  <?> unOtherName n ++ " to gain or lose an owner"--nameOwnerChanged :: Parser DetailedEvent-nameOwnerChanged = do-    string "nameownerchanged"-    t-    ts <- parseTimestamp-    t-    n <- parseBusName-    t-    m <- parseNOCDetails n-    return $ Detailed ts (NOCEvent m) Nothing--parseNOCDetails :: TaggedBusName-                -> Parser NOC-parseNOCDetails n =-    case n of-        U u -> do-            old <- perhaps parseUniqueName-            case old of-                Nothing -> do-                    t-                    u' <- parseUniqueName-                    sameUnique u u'-                    return $ Connected u-                Just u' -> do-                    sameUnique u u'-                    t-                    noName-                    return $ Disconnected u-        O o -> do-            old <- perhaps parseUniqueName-            t-            new <- perhaps parseUniqueName-            c <- case (old, new) of-                (Nothing, Nothing) -> atLeastOne o-                (Just  a, Nothing) -> return $ Released a-                (Nothing, Just  b) -> return $ Claimed b-                (Just  a, Just  b) -> return $ Stolen a b-            return $ NameChanged o c--event :: Parser DetailedEvent-event = method <|> signal <|> nameOwnerChanged <|> parseError--events :: Parser [DetailedEvent]-events = sepEndBy event (char '\n') <* eof--readLog :: String -> Either ParseError [DetailedEvent]-readLog filename = runParser events Map.empty "" filename---- vim: sw=2 sts=2
Bustle/Loader/Pcap.hs view
@@ -156,7 +156,7 @@          -> StateT PendingMessages m B.DetailedEvent bustlify µs bytes m = do     bm <- buildBustledMessage-    return $ B.Detailed µs bm (Just (bytes, m))+    return $ B.Detailed µs bm bytes m   where     sender = receivedMessageSender m     -- FIXME: can we do away with the un-Maybe-ing and just push that Nothing@@ -173,7 +173,7 @@                              }             -- FIXME: we shouldn't need to construct almost the same thing here             -- and 10 lines above maybe?-            insertPending sender serial mc (B.Detailed µs call (Just (bytes, m)))+            insertPending sender serial mc (B.Detailed µs call bytes m)             return $ B.MessageEvent call          (ReceivedMethodReturn _serial mr) -> do
Bustle/Renderer.hs view
@@ -376,12 +376,15 @@             ai <- lookupUniqueName bus u             return (u, ai) -        -- … but more than one match means we're screwed.-        several   -> error $ concat [ "internal error: "-                                    , show o-                                    , " in several apps: "-                                    , show several-                                    ]+        -- … but more than one match means we've messed up. This can happen+        -- with logs generated by dbus-monitor --pcap, which doesn't perform+        -- an initial dump of all names on the bus.+        (d:ds)    -> do+            warn $ concat [ unOtherName o+                          , " owned by several apps: "+                          , show (d:ds)+                          ]+            return d  -- Finds a TaggedBusName in a map of applications lookupApp :: Bus@@ -661,7 +664,7 @@ processMessage :: Bus                -> Detailed Message                -> Renderer ()-processMessage bus dm@(Detailed _ m _) = do+processMessage bus dm@(Detailed _ m _ _) = do     orly <- shouldShow bus m     when orly $ case m of         Signal {}       -> do
Bustle/Stats.hs view
@@ -45,8 +45,8 @@  repr :: DetailedEvent      -> Maybe (TallyType, Maybe InterfaceName, MemberName)-repr (Detailed _ (NOCEvent _) _) = Nothing-repr (Detailed _ (MessageEvent msg) _) =+repr (Detailed _ (NOCEvent _) _ _) = Nothing+repr (Detailed _ (MessageEvent msg) _ _) =     case msg of         MethodCall { member = m } -> Just (TallyMethod, iface m, membername m)         Signal     { member = m } -> Just (TallySignal, iface m, membername m)@@ -72,8 +72,7 @@  mean :: (Eq a, Fractional a) => [a] -> a mean = acc 0 0-   where acc 0 _ [] = error "mean of empty list"-         acc n t [] = t / n+   where acc n t [] = t / n          acc n t (x:xs) = acc (n + 1) (t + x) xs  data TimeInfo =@@ -109,7 +108,7 @@           methodReturn dm = do               let m = deEvent dm               guard (isReturn m)-              Detailed start (call@(MethodCall {})) _ <- inReplyTo m+              Detailed start (call@(MethodCall {})) _ _ <- inReplyTo m               return ( iface (member call)                      , membername (member call)                      , deTimestamp dm - start@@ -159,14 +158,14 @@     f :: Detailed Message       -> Map (SizeType, Maybe InterfaceName, MemberName) [Int]       -> Map (SizeType, Maybe InterfaceName, MemberName) [Int]-    f dm = case (sizeKeyRepr dm, deDetails dm) of-        (Just key, Just (size, _)) -> Map.insertWith' (++) key [size]-        _                          -> id+    f dm = case sizeKeyRepr dm of+        Just key -> Map.insertWith' (++) key [deMessageSize dm]+        _        -> id      callDetails :: Message                 -> Maybe (Maybe InterfaceName, MemberName)     callDetails msg = do-        Detailed _ msg' _ <- inReplyTo msg+        Detailed _ msg' _ _ <- inReplyTo msg         return (iface (member msg'), membername (member msg'))      sizeKeyRepr :: Detailed Message
Bustle/Translation.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} module Bustle.Translation     (       initTranslation@@ -5,13 +6,18 @@     ) where +#ifdef USE_HGETTEXT import Text.I18N.GetText import System.Locale.SetLocale import System.IO.Unsafe  import GetText_bustle+#endif  initTranslation :: IO ()+__ :: String -> String++#ifdef USE_HGETTEXT initTranslation = do     setLocale LC_ALL (Just "")     domain <- getMessageCatalogDomain@@ -21,5 +27,8 @@     return ()  -- FIXME: I do not like this unsafePerformIO one little bit.-__ :: String -> String __ = unsafePerformIO . getText+#else+initTranslation = return ()+__ = id+#endif
Bustle/Types.hs view
@@ -165,14 +165,15 @@ data Detailed e =     Detailed { deTimestamp :: Microseconds              , deEvent :: e-             , deDetails :: Maybe (MessageSize, ReceivedMessage)+             , deMessageSize :: MessageSize+             , deReceivedMessage :: ReceivedMessage              }   deriving (Show, Eq, Functor)  type DetailedEvent = Detailed Event  instance Ord e => Ord (Detailed e) where-    compare (Detailed µs x _) (Detailed µs' y _)+    compare (Detailed µs x _ _) (Detailed µs' y _ _)         = compare (µs, x) (µs', y)  data Change = Claimed UniqueName@@ -184,10 +185,10 @@                    -> ([Detailed NOC], [Detailed Message]) partitionDetaileds = partitionEithers . map f   where-    f (Detailed µs e details) =+    f (Detailed µs e size rm) =         case e of-            NOCEvent n -> Left $ Detailed µs n details-            MessageEvent m -> Right $ Detailed µs m details+            NOCEvent n -> Left $ Detailed µs n size rm+            MessageEvent m -> Right $ Detailed µs m size rm  mentionedNames :: Message -> [TaggedBusName] mentionedNames m = sender m:dest
Bustle/UI/AboutDialog.hs view
@@ -46,11 +46,11 @@     dialog `set` [ aboutDialogName := __ "Bustle"                  , aboutDialogVersion := showVersion version                  , aboutDialogComments := __ "Someone's favourite D-Bus profiler"-                 , aboutDialogWebsite := "http://www.freedesktop.org/wiki/Software/Bustle/"+                 , aboutDialogWebsite := "https://www.freedesktop.org/wiki/Software/Bustle/"                  , aboutDialogAuthors := authors-                 , aboutDialogCopyright := "© 2008–2015 Will Thompson, Collabora Ltd. and contributors"+                 , aboutDialogCopyright := "© 2008–2017 Will Thompson, Collabora Ltd. and contributors"                  , aboutDialogLicense := license-                 , aboutDialogLogoIconName := Just "bustle"+                 , aboutDialogLogoIconName := Just "org.freedesktop.Bustle"                  , windowModal := True                  , windowTransientFor := window                  ]@@ -68,4 +68,5 @@           , "Sergei Trofimovich"           , "Alex Merry"           , "Philip Withnall"+          , "Jonny Lamb"           ]
Bustle/UI/DetailsView.hs view
@@ -100,7 +100,7 @@     return $ DetailsView table title pathLabel memberLabel view  pickTitle :: Detailed Message -> Marquee-pickTitle (Detailed _ m _) = case m of+pickTitle (Detailed _ m _ _) = case m of     MethodCall {} -> b (escape (__ "Method call"))     MethodReturn {} -> b (escape (__ "Method return"))     Error {} -> b (escape (__ "Error"))@@ -114,7 +114,7 @@     toPangoMarkup $ formatMember (iface m) (membername m)  getMember :: Detailed Message -> Maybe Member-getMember (Detailed _ m _) = case m of+getMember (Detailed _ m _ _) = case m of     MethodCall {}   -> Just $ member m     Signal {}       -> Just $ member m     MethodReturn {} -> callMember@@ -123,10 +123,7 @@     callMember = fmap (member . deEvent) $ inReplyTo m  formatMessage :: Detailed Message -> String-formatMessage (Detailed _ _ Nothing) =-    __ "No message body information is available. Please capture a fresh log \-       \using a recent version of Bustle!"-formatMessage (Detailed _ _ (Just (_size, rm))) =+formatMessage (Detailed _ _ _ rm) =     formatArgs $ D.receivedMessageBody rm   where     formatArgs = intercalate "\n" . map (format_Variant VariantStyleSignature)
− Bustle/Upgrade.hs
@@ -1,63 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{--Bustle.Upgrade: synthesise information missing from old logs-Copyright (C) 2009 Collabora Ltd.--This library is free software; you can redistribute it and/or-modify it under the terms of the GNU Lesser General Public-License as published by the Free Software Foundation; either-version 2.1 of the License, or (at your option) any later version.--This library is distributed in the hope that it will be useful,-but WITHOUT ANY WARRANTY; without even the implied warranty of-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU-Lesser General Public License for more details.--You should have received a copy of the GNU Lesser General Public-License along with this library; if not, write to the Free Software-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA--}-module Bustle.Upgrade (upgrade) where--import Control.Monad.State-import Data.Set (Set)-import qualified Data.Set as Set--import Bustle.Types---- Bustle <0.2.0 did not log NameOwnerChanged; this adds fake ones to logs--- lacking them-upgrade :: [DetailedEvent] -> [DetailedEvent]-upgrade es =-    case partitionDetaileds es of-        ([], ms) -> concat $ evalState (mapM synthesiseNOC ms) Set.empty-        _        -> es--synthesiseNOC :: Detailed Message -> State (Set TaggedBusName) [DetailedEvent]-synthesiseNOC de@(Detailed µs m _) = do-    fakes <- mapM synthDM $ mentionedNames m-    return ( concat fakes ++ [fmap MessageEvent de] )-  where-    synthDM :: TaggedBusName -> State (Set TaggedBusName) [DetailedEvent]-    synthDM n = do-        fakes <- synth n-        return $ map (\fake -> Detailed µs (NOCEvent fake) Nothing) fakes--synth :: TaggedBusName-      -> State (Set TaggedBusName) [NOC]-synth n = do-    b <- gets (Set.member n)-    if b-      then return []-      else do-        modify (Set.insert n)-        return $ case n of-          U u -> [ Connected u ]-          O o -> [ Connected (fakeName o)-                 , NameChanged o (Claimed (fakeName o))-                 ]--fakeName :: OtherName -> UniqueName-fakeName = fakeUniqueName . unOtherName---- vim: sw=2 sts=2
INSTALL.md view
@@ -14,7 +14,6 @@         libghc-mtl-dev \         libghc-cairo-dev \         libghc-gtk-dev \-        libghc-parsec3-dev \         libghc-glade-dev \         libghc-dbus-dev \         libghc-pcap-dev \
− LICENSE.bundled-libraries
@@ -1,238 +0,0 @@-Shipping these libraries in the tarball is monstrous, and I'm sorry. I just-wanted to ship this thing. Anyway, these libraries are slurped right out of the-OS packages on the system the tarball was built on. Here are some licenses:--libffi:--    libffi - Copyright (c) 1996-2010  Red Hat, Inc and others.-    See source files for details.--    Permission is hereby granted, free of charge, to any person obtaining-    a copy of this software and associated documentation files (the-    ``Software''), to deal in the Software without restriction, including-    without limitation the rights to use, copy, modify, merge, publish,-    distribute, sublicense, and/or sell copies of the Software, and to-    permit persons to whom the Software is furnished to do so, subject to-    the following conditions:--    The above copyright notice and this permission notice shall be included-    in all copies or substantial portions of the Software.--    THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,-    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF-    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.-    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY-    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,-    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE-    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.--libpcap:--    Copyright (C) 1993-2008 The Regents of the University of California.--    Redistribution and use in source and binary forms, with or without-    modification, are permitted provided that the following conditions-    are met:--      1. Redistributions of source code must retain the above copyright-         notice, this list of conditions and the following disclaimer.-      2. Redistributions in binary form must reproduce the above copyright-         notice, this list of conditions and the following disclaimer in-         the documentation and/or other materials provided with the-         distribution.-      3. The names of the authors may not be used to endorse or promote-         products derived from this software without specific prior-         written permission.--    THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR-    IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED-    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.--libgmp:--    Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,-    2004, 2005, 2006, 2007 Free Software Foundation, Inc.--    This file is part of the GNU MP Library.--    The GNU MP Library is free software; you can redistribute it and/or modify-    it under the terms of the GNU Lesser General Public License as published by-    the Free Software Foundation; either version 3 of the License, or (at your-    option) any later version.--    The GNU MP Library is distributed in the hope that it will be useful, but-    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public-    License for more details.--    You should have received a copy of the GNU Lesser General Public License-    along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.--The source code is available from http://www.freedesktop.org/software/bustle/-Your complimentary copy of the GNU Lesser General Public License follows:--                   GNU LESSER GENERAL PUBLIC LICENSE-                       Version 3, 29 June 2007-- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>- Everyone is permitted to copy and distribute verbatim copies- of this license document, but changing it is not allowed.---  This version of the GNU Lesser General Public License incorporates-the terms and conditions of version 3 of the GNU General Public-License, supplemented by the additional permissions listed below.--  0. Additional Definitions.--  As used herein, "this License" refers to version 3 of the GNU Lesser-General Public License, and the "GNU GPL" refers to version 3 of the GNU-General Public License.--  "The Library" refers to a covered work governed by this License,-other than an Application or a Combined Work as defined below.--  An "Application" is any work that makes use of an interface provided-by the Library, but which is not otherwise based on the Library.-Defining a subclass of a class defined by the Library is deemed a mode-of using an interface provided by the Library.--  A "Combined Work" is a work produced by combining or linking an-Application with the Library.  The particular version of the Library-with which the Combined Work was made is also called the "Linked-Version".--  The "Minimal Corresponding Source" for a Combined Work means the-Corresponding Source for the Combined Work, excluding any source code-for portions of the Combined Work that, considered in isolation, are-based on the Application, and not on the Linked Version.--  The "Corresponding Application Code" for a Combined Work means the-object code and/or source code for the Application, including any data-and utility programs needed for reproducing the Combined Work from the-Application, but excluding the System Libraries of the Combined Work.--  1. Exception to Section 3 of the GNU GPL.--  You may convey a covered work under sections 3 and 4 of this License-without being bound by section 3 of the GNU GPL.--  2. Conveying Modified Versions.--  If you modify a copy of the Library, and, in your modifications, a-facility refers to a function or data to be supplied by an Application-that uses the facility (other than as an argument passed when the-facility is invoked), then you may convey a copy of the modified-version:--   a) under this License, provided that you make a good faith effort to-   ensure that, in the event an Application does not supply the-   function or data, the facility still operates, and performs-   whatever part of its purpose remains meaningful, or--   b) under the GNU GPL, with none of the additional permissions of-   this License applicable to that copy.--  3. Object Code Incorporating Material from Library Header Files.--  The object code form of an Application may incorporate material from-a header file that is part of the Library.  You may convey such object-code under terms of your choice, provided that, if the incorporated-material is not limited to numerical parameters, data structure-layouts and accessors, or small macros, inline functions and templates-(ten or fewer lines in length), you do both of the following:--   a) Give prominent notice with each copy of the object code that the-   Library is used in it and that the Library and its use are-   covered by this License.--   b) Accompany the object code with a copy of the GNU GPL and this license-   document.--  4. Combined Works.--  You may convey a Combined Work under terms of your choice that,-taken together, effectively do not restrict modification of the-portions of the Library contained in the Combined Work and reverse-engineering for debugging such modifications, if you also do each of-the following:--   a) Give prominent notice with each copy of the Combined Work that-   the Library is used in it and that the Library and its use are-   covered by this License.--   b) Accompany the Combined Work with a copy of the GNU GPL and this license-   document.--   c) For a Combined Work that displays copyright notices during-   execution, include the copyright notice for the Library among-   these notices, as well as a reference directing the user to the-   copies of the GNU GPL and this license document.--   d) Do one of the following:--       0) Convey the Minimal Corresponding Source under the terms of this-       License, and the Corresponding Application Code in a form-       suitable for, and under terms that permit, the user to-       recombine or relink the Application with a modified version of-       the Linked Version to produce a modified Combined Work, in the-       manner specified by section 6 of the GNU GPL for conveying-       Corresponding Source.--       1) Use a suitable shared library mechanism for linking with the-       Library.  A suitable mechanism is one that (a) uses at run time-       a copy of the Library already present on the user's computer-       system, and (b) will operate properly with a modified version-       of the Library that is interface-compatible with the Linked-       Version.--   e) Provide Installation Information, but only if you would otherwise-   be required to provide such information under section 6 of the-   GNU GPL, and only to the extent that such information is-   necessary to install and execute a modified version of the-   Combined Work produced by recombining or relinking the-   Application with a modified version of the Linked Version. (If-   you use option 4d0, the Installation Information must accompany-   the Minimal Corresponding Source and Corresponding Application-   Code. If you use option 4d1, you must provide the Installation-   Information in the manner specified by section 6 of the GNU GPL-   for conveying Corresponding Source.)--  5. Combined Libraries.--  You may place library facilities that are a work based on the-Library side by side in a single library together with other library-facilities that are not Applications and are not covered by this-License, and convey such a combined library under terms of your-choice, if you do both of the following:--   a) Accompany the combined library with a copy of the same work based-   on the Library, uncombined with any other library facilities,-   conveyed under the terms of this License.--   b) Give prominent notice with the combined library that part of it-   is a work based on the Library, and explaining where to find the-   accompanying uncombined form of the same work.--  6. Revised Versions of the GNU Lesser General Public License.--  The Free Software Foundation may publish revised and/or new versions-of the GNU Lesser General Public License from time to time. Such new-versions will be similar in spirit to the present version, but may-differ in detail to address new problems or concerns.--  Each version is given a distinguishing version number. If the-Library as you received it specifies that a certain numbered version-of the GNU Lesser General Public License "or any later version"-applies to it, you have the option of following the terms and-conditions either of that published version or of any later version-published by the Free Software Foundation. If the Library as you-received it does not specify a version number of the GNU Lesser-General Public License, you may choose any version of the GNU Lesser-General Public License ever published by the Free Software Foundation.--  If the Library as you received it specifies that a proxy can decide-whether future versions of the GNU Lesser General Public License shall-apply, that proxy's public statement of acceptance of any version is-permanent authorization for you to choose that version for the-Library.
Makefile view
@@ -13,13 +13,13 @@ 	$(NULL)  MANPAGE = bustle-pcap.1-DESKTOP_FILE = bustle.desktop-APPDATA_FILE = bustle.appdata.xml+DESKTOP_FILE = org.freedesktop.Bustle.desktop+APPDATA_FILE = org.freedesktop.Bustle.appdata.xml ICON_SIZES = 16x16 22x22 32x32 48x48 256x256 ICONS = \-	data/icons/scalable/bustle.svg \-	data/icons/scalable/bustle-symbolic.svg \-	$(foreach size,$(ICON_SIZES),data/icons/$(size)/bustle.png) \+	data/icons/scalable/org.freedesktop.Bustle.svg \+	data/icons/scalable/org.freedesktop.Bustle-symbolic.svg \+	$(foreach size,$(ICON_SIZES),data/icons/$(size)/org.freedesktop.Bustle.png) \ 	$(NULL)  all: $(BINARIES) $(MANPAGE) $(DESKTOP_FILE) $(APPDATA_FILE) $(ICONS)@@ -31,12 +31,20 @@ bustle-pcap.1: dist/build/bustle-pcap 	help2man --output=$@ --no-info --name='Generate D-Bus logs for bustle' $< -bustle.desktop: data/bustle.desktop.in+org.freedesktop.Bustle.desktop: data/org.freedesktop.Bustle.desktop.in 	LC_ALL=C intltool-merge -d -u po $< $@ -bustle.appdata.xml: data/bustle.appdata.xml.in+org.freedesktop.Bustle.appdata.xml: data/org.freedesktop.Bustle.appdata.xml.in 	LC_ALL=C intltool-merge -x -u po $< $@ +# https://github.com/flathub/flathub/wiki/Review-Guidelines+validate-metadata: org.freedesktop.Bustle.desktop org.freedesktop.Bustle.appdata.xml+	desktop-file-validate org.freedesktop.Bustle.desktop+	appstream-util validate-relax org.freedesktop.Bustle.appdata.xml+	# This is only a SHOULD. Screenshots currently violate it because they+	# are hidpi.+	appstream-util validate org.freedesktop.Bustle.appdata.xml || true+ dist/build/bustle-pcap: $(BUSTLE_PCAP_SOURCES) $(BUSTLE_PCAP_HEADERS) 	@mkdir -p dist/build 	$(CC) -Idist/build/autogen $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) \@@ -61,9 +69,9 @@ 	mkdir -p $(DATADIR)/appdata 	cp $(APPDATA_FILE) $(DATADIR)/appdata 	$(foreach size,$(ICON_SIZES),mkdir -p $(DATADIR)/icons/hicolor/$(size)/apps; )-	$(foreach size,$(ICON_SIZES),cp data/icons/$(size)/bustle.png $(DATADIR)/icons/hicolor/$(size)/apps; )+	$(foreach size,$(ICON_SIZES),cp data/icons/$(size)/org.freedesktop.Bustle.png $(DATADIR)/icons/hicolor/$(size)/apps; ) 	mkdir -p $(DATADIR)/icons/hicolor/scalable/apps-	cp data/icons/scalable/bustle-symbolic.svg $(DATADIR)/icons/hicolor/scalable/apps+	cp data/icons/scalable/org.freedesktop.Bustle-symbolic.svg $(DATADIR)/icons/hicolor/scalable/apps 	$(MAKE) update-icon-cache  uninstall:@@ -71,8 +79,8 @@ 	rm -f $(MAN1DIR)/$(MANPAGE) 	rm -f $(DATADIR)/applications/$(DESKTOP_FILE) 	rm -f $(DATADIR)/appdata/$(APPDATA_FILE)-	$(foreach size,$(ICON_SIZES),rm -f $(DATADIR)/icons/hicolor/$(size)/apps/bustle.png)-	rm -f $(DATADIR)/icons/hicolor/scalable/apps/bustle-symbolic.svg+	$(foreach size,$(ICON_SIZES),rm -f $(DATADIR)/icons/hicolor/$(size)/apps/org.freedesktop.Bustle.png)+	rm -f $(DATADIR)/icons/hicolor/scalable/apps/org.freedesktop.Bustle-symbolic.svg 	$(MAKE) update-icon-cache  clean:@@ -92,28 +100,13 @@ 		echo "***   $(gtk_update_icon_cache)"; \ 	fi -# Binary tarball stuff. Please ignore this unless you're making a release.-TOP := $(shell pwd)-TARBALL_PARENT_DIR := dist-TARBALL_DIR := $(shell git describe --tags)-$(shell gcc -dumpmachine | perl -pe 's/-.*//')-TARBALL_FULL_DIR := $(TARBALL_PARENT_DIR)/$(TARBALL_DIR)-TARBALL := $(TARBALL_DIR).tar.bz2-maintainer-binary-tarball: all-	mkdir -p $(TARBALL_FULL_DIR)-	cabal install --prefix=$(TOP)/$(TARBALL_FULL_DIR) \-		--datadir=$(TOP)/$(TARBALL_FULL_DIR) --datasubdir=.-	cp bustle.sh README.md $(TARBALL_FULL_DIR)-	perl -pi -e 's{^    bustle-pcap}{    ./bustle-pcap};' \-		-e  's{^    bustle}     {    ./bustle.sh};' \-		$(TARBALL_FULL_DIR)/README.md-	cp $(BINARIES) $(MANPAGE) $(DESKTOP_FILE) $(APPDATA_FILE) $(TARBALL_FULL_DIR)-	mkdir -p $(TARBALL_FULL_DIR)/lib-	cp LICENSE.bundled-libraries $(TARBALL_FULL_DIR)/lib-	./ldd-me-up.sh $(TARBALL_FULL_DIR)/bin/bustle \-		| xargs -I XXX cp XXX $(TARBALL_FULL_DIR)/lib-	cd $(TARBALL_PARENT_DIR) && tar cjf $(TARBALL) $(TARBALL_DIR)-	rm -r $(TARBALL_FULL_DIR)+# Flatpak stuff+org.freedesktop.Bustle.flatpak: flatpak/org.freedesktop.Bustle.json+	rm -rf _build+	flatpak-builder --repo=repo -v _build $<+	flatpak build-bundle repo org.freedesktop.Bustle.flatpak org.freedesktop.Bustle +# Maintainer stuff maintainer-update-messages-pot: 	find Bustle -name '*.hs' -print0 | xargs -0 hgettext -k __ -o po/messages.pot @@ -122,9 +115,7 @@ 	cabal sdist 	git tag -s -m 'Bustle '`cat dist/build/autogen/version.txt` \ 		bustle-`cat dist/build/autogen/version.txt`-	make maintainer-binary-tarball 	gpg --detach-sign --armor dist/bustle-`cat dist/build/autogen/version.txt`.tar.gz-	gpg --detach-sign --armor dist/bustle-`cat dist/build/autogen/version.txt`-x86_64.tar.bz2  .travis.yml: bustle.cabal make_travis_yml.hs 	./make_travis_yml.hs $< libpcap-dev libgtk-3-dev libcairo2-dev happy-1.19.4 alex-3.1.3 > $@
NEWS.md view
@@ -1,3 +1,22 @@+Bustle 0.6.1 (2017-07-27)+-------------------------++* Trivial fix to bustle.cabal.++Bustle 0.6.0 (2017-07-26)+-------------------------++* Fix leaks in bustle-pcap.c. (Jonny Lamb, <https://bugs.freedesktop.org/show_bug.cgi?id=93904>)+* Add a Flatpak build manifest.+* Don't crash if reading a file with libpcap fails. <https://bugs.freedesktop.org/show_bug.cgi?id=100220>+* Note that libpcap 1.8.0 and 1.8.1 (and hence Bustle) will still refuse to read log files generated by Bustle. This is fixed in libpcap Git by commits [1a6b088](https://github.com/the-tcpdump-group/libpcap/commit/1a6b088a88886eac782008f37a7219a32b86da45) and [42c3865](https://github.com/the-tcpdump-group/libpcap/commit/42c3865d71a3d3ad3fc61ee382ad3b5113d40552).+* Add a Flatpak build manifest, which bundles a new-enough Git snapshot of libpcap.+* Remove scripts to build artisan binary tarballs.+* Drop support for pre-0.3.1 text-only log files. If you still have any valuable logs from before 2012, I can only apologise.+* Add a Cabal flag to disable hgettext support. Since there are no non-English translations, the only user-visible impact is that some ‘curly quotes’ in three dialog boxes become 'legacy quotes'.+* Rename bustle.desktop (etc.) to org.freedesktop.Bustle.desktop (etc.).+* Fix a crash when reading logs generated with `dbus-monitor --pcap`.+ Bustle 0.5.4 (2016-01-27) ------------------------- 
bustle.cabal view
@@ -1,15 +1,15 @@ Name:           bustle Category:       Network, Desktop-Version:        0.5.4-Cabal-Version:  >= 1.18-Tested-With:    GHC >= 7.8.4 && < 7.11+Version:        0.6.1+Cabal-Version:  >= 1.24+Tested-With:    GHC == 7.8.*, GHC == 7.10.* Synopsis:       Draw sequence diagrams of D-Bus traffic Description:    Draw sequence diagrams of D-Bus traffic License:        OtherLicense License-file:   LICENSE Author:         Will Thompson <will@willthompson.co.uk> Maintainer:     Will Thompson <will@willthompson.co.uk>-Homepage:       http://www.freedesktop.org/wiki/Software/Bustle/+Homepage:       https://www.freedesktop.org/wiki/Software/Bustle/ Data-files:     data/dfeet-method.png,                 data/dfeet-signal.png,                 data/bustle.ui,@@ -31,11 +31,6 @@                     run-uninstalled.sh                   , Test/data/log-with-h.bustle -                  -- Stuff for the stupid binary tarballs-                  , bustle.sh-                  , ldd-me-up.sh-                  , LICENSE.bundled-libraries-                   -- inlined copy of the Cabal hooks from hgettext;                   -- see https://github.com/fpco/stackage/issues/746                   , GetText.hs@@ -45,25 +40,37 @@                   , po/*.pot                    -- intl bits-                  , data/bustle.appdata.xml.in-                  , data/bustle.desktop.in+                  , data/org.freedesktop.Bustle.appdata.xml.in+                  , data/org.freedesktop.Bustle.desktop.in                    -- icons-                  , data/icons/16x16/bustle.png-                  , data/icons/22x22/bustle.png-                  , data/icons/32x32/bustle.png-                  , data/icons/48x48/bustle.png-                  , data/icons/256x256/bustle.png-                  , data/icons/scalable/bustle.svg-                  , data/icons/scalable/bustle-symbolic.svg+                  , data/icons/16x16/org.freedesktop.Bustle.png+                  , data/icons/22x22/org.freedesktop.Bustle.png+                  , data/icons/32x32/org.freedesktop.Bustle.png+                  , data/icons/48x48/org.freedesktop.Bustle.png+                  , data/icons/256x256/org.freedesktop.Bustle.png+                  , data/icons/scalable/org.freedesktop.Bustle.svg+                  , data/icons/scalable/org.freedesktop.Bustle-symbolic.svg  x-gettext-po-files:     po/*.po x-gettext-domain-name:  bustle +custom-setup+  setup-depends:+    base >= 4 && < 5,+    Cabal >= 1.24,+    filepath,+    directory,+    process+ Source-Repository head   Type:           git   Location:       git://anongit.freedesktop.org/bustle +Flag hgettext+  Description:    Enable translations. Since there are no translations this is currently rather pointless.+  Default:        True+ Flag InteractiveTests   Description:    Build interactive test programs   Default:        False@@ -72,19 +79,11 @@   Description:    Build with the multi-threaded runtime   Default:        True -Flag WithGtk2HsBuildTools-  Description:    Build-depend on gtk2hs-buildtools. They aren't (currently)-                  used to build Bustle itself but are needed to build-                  dependencies like gtk3, which for whatever reason do not-                  Build-Depend on the tools.-  Default:        False- Executable bustle   Main-is:       Bustle.hs   Other-modules: Bustle.Application.Monad                , Bustle.Diagram                , Bustle.Loader-               , Bustle.Loader.OldSkool                , Bustle.Loader.Pcap                , Bustle.Marquee                , Bustle.Monitor@@ -103,7 +102,6 @@                , Bustle.UI.OpenTwoDialog                , Bustle.UI.Recorder                , Bustle.UI.Util-               , Bustle.Upgrade                , Bustle.Util                , Bustle.VariantFormatter   default-language: Haskell2010@@ -124,18 +122,16 @@                , glib                , gio                , gtk3-               , hgettext >= 0.1.5                , mtl >= 2.2.1                , pango-               , parsec                , pcap                , process-               , setlocale                , text                , time--  if flag(WithGtk2HsBuildTools)-    Build-Depends: gtk2hs-buildtools+  if flag(hgettext)+    Build-Depends: hgettext >= 0.1.5+                 , setlocale+    cpp-options: -DUSE_HGETTEXT  Executable test-monitor   if flag(InteractiveTests)@@ -161,14 +157,12 @@                -- 0.13.6 doesn't compile with GCC 5: https://github.com/gtk2hs/gtk2hs/issues/104                , gtk3 >= 0.13.7                , glib-               , hgettext                , mtl                , pango-               , parsec                , pcap-               , setlocale                , text + Executable dump-messages   if flag(InteractiveTests)     buildable: True@@ -221,8 +215,6 @@                  , mtl                  , text                  , pango-                 , hgettext-                 , setlocale                  , test-framework                  , test-framework-hunit                  , HUnit
− bustle.sh
@@ -1,17 +0,0 @@-#!/bin/sh-set -e--root="$(dirname $(readlink -f ${0}))"--bustle_datadir="${root}"-export bustle_datadir--bustle_localedir="${root}/locale"-export bustle_localedir--LD_LIBRARY_PATH="${root}/lib:${LD_LIBRARY_PATH}"-export LD_LIBRARY_PATH--bustle="${root}"/bin/bustle--exec $bustle "${@}"
c-sources/bustle-pcap.c view
@@ -109,6 +109,7 @@   gchar *usage;   GError *error = NULL;   gboolean ret;+  gint exit_status = -1;    context = g_option_context_new ("FILENAME");   g_option_context_add_main_entries (context, entries, NULL);@@ -121,7 +122,9 @@     {       fprintf (stderr, "%s\n", error->message);       fprintf (stderr, "%s", usage);-      exit (2);++      exit_status = 2;+      goto out;     }    if (version)@@ -130,13 +133,17 @@       fprintf (stdout, "Copyright 2011 Will Thompson <will@willthompson.co.uk>\n");       fprintf (stdout, "This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n");       fprintf (stdout, "Written by Will Thompson <will@willthompson.co.uk>\n");-      exit (0);++      exit_status = 0;+      goto out;     }   else if (session_specified && system_specified)     {       fprintf (stderr, "You may only specify one of --session and --system\n");       fprintf (stderr, "%s", usage);-      exit (2);++      exit_status = 2;+      goto out;     }   else if (system_specified)     {@@ -153,10 +160,21 @@     {       fprintf (stderr, "You must specify exactly one output filename\n");       fprintf (stderr, "%s", usage);-      exit (2);++      exit_status = 2;+      goto out;     } -  *filename = filenames[0];+  *filename = g_strdup (filenames[0]);++out:+  g_free (usage);+  g_strfreev (filenames);+  g_option_context_free (context);+  g_clear_error (&error);++  if (exit_status > -1)+    exit (exit_status); }  static void@@ -196,6 +214,7 @@   if (pcap == NULL)     {       fprintf (stderr, "%s", error->message);+      g_clear_error (&error);       exit (1);     } @@ -214,6 +233,7 @@    bustle_pcap_monitor_stop (pcap);   g_object_unref (pcap);+  g_free (filename);    return 0; }
data/OpenTwoDialog.ui view
@@ -8,7 +8,7 @@     <property name="resizable">False</property>     <property name="modal">True</property>     <property name="type_hint">dialog</property>-    <property name="icon-name">bustle</property>+    <property name="icon-name">org.freedesktop.Bustle</property>     <child internal-child="vbox">       <object class="GtkBox" id="dialog-vbox1">         <property name="visible">True</property>
− data/bustle.appdata.xml.in
@@ -1,30 +0,0 @@-<?xml version="1.0" encoding="UTF-8"?>-<!-- Copyright 2014 Philip Withnall <philip@tecnocode.co.uk> -->-<application>-	<id type="desktop">bustle.desktop</id>-	<metadata_license>CC-BY-SA-3.0</metadata_license>-	<project_license>LGPL-2.1+ and GPL-2.0+ and GPL-3.0</project_license>-	<description>-		<!-- Translators: These are the application description paragraphs in the AppData file. -->-		<_p>Bustle draws sequence diagrams of D-Bus activity.</_p>-		<_p>It shows signal emissions, method calls and their-		    corresponding returns, with time stamps for each individual-		    event and the duration of each method call. This can help-		    you check for unwanted D-Bus traffic, and pinpoint why your-		    D-Bus-based application isn't performing as well as you-		    like. It also provides statistics like signal frequencies-		    and average method call times.</_p>-	</description>-	<screenshots>-		<screenshot type="default">-			<!-- Translators: This should be the URI of a 2400×1350, pixel screenshot of Bustle in your language. If you can't take a screenshot, leave the string as the English screenshot. -->-			<_image type="source">https://wiki.freedesktop.org/www/Software/Bustle/bustle-0.5.2-1.png</_image>-			</screenshot>-		<screenshot>-			<!-- Translators: This should be the URI of a 2400×1350, pixel screenshot of Bustle in your language. If you can't take a screenshot, leave the string as the English screenshot. -->-			<_image type="source">https://wiki.freedesktop.org/www/Software/Bustle/bustle-0.5.2-2.png</_image>-		</screenshot>-	</screenshots>-	<url type="homepage">http://willthompson.co.uk/bustle/</url>-	<updatecontact>philip_at_tecnocode.co.uk</updatecontact>-</application>
− data/bustle.desktop.in
@@ -1,10 +0,0 @@-[Desktop Entry]-_Name=Bustle-_Comment=Draw sequence diagrams of D-Bus activity-Exec=bustle-Icon=bustle-Terminal=false-Type=Application-Categories=GTK;Development;Debugger;Profiling;-StartupNotify=true-_Keywords=debug;profile;d-bus;dbus;sequence;monitor;
data/bustle.ui view
@@ -5,7 +5,7 @@     <property name="can_focus">False</property>     <property name="default_width">900</property>     <property name="default_height">700</property>-    <property name="icon-name">bustle</property>+    <property name="icon-name">org.freedesktop.Bustle</property>     <property name="title" translatable="yes">Bustle</property>     <child type="titlebar">         <object class="GtkHeaderBar" id="header">
− data/icons/16x16/bustle.png

binary file changed (519 → absent bytes)

+ data/icons/16x16/org.freedesktop.Bustle.png view

binary file changed (absent → 519 bytes)

− data/icons/22x22/bustle.png

binary file changed (716 → absent bytes)

+ data/icons/22x22/org.freedesktop.Bustle.png view

binary file changed (absent → 716 bytes)

− data/icons/256x256/bustle.png

binary file changed (8774 → absent bytes)

+ data/icons/256x256/org.freedesktop.Bustle.png view

binary file changed (absent → 8774 bytes)

− data/icons/32x32/bustle.png

binary file changed (1049 → absent bytes)

+ data/icons/32x32/org.freedesktop.Bustle.png view

binary file changed (absent → 1049 bytes)

− data/icons/48x48/bustle.png

binary file changed (1669 → absent bytes)

+ data/icons/48x48/org.freedesktop.Bustle.png view

binary file changed (absent → 1669 bytes)

− data/icons/scalable/bustle-symbolic.svg
@@ -1,104 +0,0 @@-<?xml version="1.0" encoding="UTF-8" standalone="no"?>-<!-- Created with Inkscape (http://www.inkscape.org/) -->--<svg-   xmlns:dc="http://purl.org/dc/elements/1.1/"-   xmlns:cc="http://creativecommons.org/ns#"-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"-   xmlns:svg="http://www.w3.org/2000/svg"-   xmlns="http://www.w3.org/2000/svg"-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"-   width="600"-   height="600"-   id="svg2"-   version="1.1"-   inkscape:version="0.91 r13725"-   sodipodi:docname="bustle-symbolic.svg">-  <defs-     id="defs4" />-  <sodipodi:namedview-     id="base"-     pagecolor="#ffffff"-     bordercolor="#666666"-     borderopacity="1.0"-     inkscape:pageopacity="0.0"-     inkscape:pageshadow="2"-     inkscape:zoom="1.18"-     inkscape:cx="296.02826"-     inkscape:cy="407.83651"-     inkscape:document-units="px"-     inkscape:current-layer="layer1"-     showgrid="false"-     inkscape:window-width="1440"-     inkscape:window-height="824"-     inkscape:window-x="0"-     inkscape:window-y="27"-     inkscape:window-maximized="1"-     fit-margin-top="0"-     fit-margin-left="0"-     fit-margin-right="0"-     fit-margin-bottom="0"-     showguides="true"-     inkscape:guide-bbox="true">-    <inkscape:grid-       type="xygrid"-       id="grid3834"-       empspacing="5"-       visible="true"-       enabled="true"-       snapvisiblegridlinesonly="true"-       originx="-56.941089px"-       originy="-465.18127px" />-  </sodipodi:namedview>-  <metadata-     id="metadata7">-    <rdf:RDF>-      <cc:Work-         rdf:about="">-        <dc:format>image/svg+xml</dc:format>-        <dc:type-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />-        <dc:title></dc:title>-      </cc:Work>-    </rdf:RDF>-  </metadata>-  <g-     inkscape:label="Layer 1"-     inkscape:groupmode="layer"-     id="layer1"-     transform="translate(-56.941089,12.819102)">-    <path-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#dedede;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:57.94400024;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:5.19999981;stroke-dasharray:115.88800049, 57.94400024;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"-       d="m 349.58008,-12.728516 c -19.78034,0.499891 -39.51808,2.890348 -58.82031,7.2539096 4.10872,18.8723954 8.21745,37.7447914 12.32617,56.6171874 33.74925,-7.665785 69.12626,-7.971229 103.02539,-1.0293 3.71633,-18.821141 8.65912,-38.435398 11.61328,-56.7636714 -22.39128,-4.5980686 -45.29405,-6.6135646 -68.14453,-6.0781256 z m 105.80078,78.716797 c 31.47813,14.008295 59.87299,34.867319 82.70703,60.664059 14.44727,-12.81901 28.89453,-25.63802 43.3418,-38.457028 C 553.05494,56.141376 517.74279,30.253699 478.60547,12.900391 470.86393,30.596354 463.1224,48.292318 455.38086,65.988281 Z M 227.18164,16.626953 C 189.51961,34.723972 155.71119,60.77538 128.625,92.591797 c 14.7487,12.470703 29.49739,24.941413 44.24609,37.412113 22.37137,-26.20404 50.37565,-47.593699 81.60157,-62.169926 -8.17123,-17.501302 -16.34245,-35.002604 -24.51368,-52.503906 -0.92578,0.432292 -1.85156,0.864583 -2.77734,1.296875 z M 568.0293,168.66016 c 16.99699,30.09909 27.33124,63.91871 30.12695,98.36914 19.23893,-1.70833 38.47787,-3.41667 57.7168,-5.125 -3.5014,-42.55686 -16.29754,-84.32012 -37.26568,-121.51953 -16.85936,9.42513 -33.71871,18.85026 -50.57807,28.27539 z M 89.939453,150.27539 c -18.701268,36.38678 -29.811885,76.6502 -32.357428,117.48438 19.276042,1.22135 38.552083,2.44271 57.828125,3.66406 2.15345,-34.4883 11.88032,-68.47463 28.29492,-98.88281 -17.08268,-9.01302 -34.16536,-18.02605 -51.248045,-27.03907 -0.839191,1.59115 -1.678381,3.18229 -2.517572,4.77344 z"-       id="path4626"-       inkscape:connector-curvature="0" />-    <circle-       style="fill:none;stroke:#bebebe;stroke-width:75.08624021;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"-       id="path2985-7"-       cx="381.42856"-       cy="433.79074"-       transform="matrix(0.50880116,0,0,0.55776489,164.13818,45.848517)"-       ry="118.57143"-       rx="130" />-    <path-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"-       d="m 430,220 30,55 -85,0 0,50 85,0 -30,55 170,-80 z"-       transform="translate(56.941089,-12.819102)"-       id="path3757-7"-       inkscape:connector-curvature="0"-       sodipodi:nodetypes="cccccccc" />-    <path-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"-       d="m 170,220 -170,80 170,80 -30,-55 85,0 0,-50 -85,0 z"-       transform="translate(56.941089,-12.819102)"-       id="path3761-7"-       inkscape:connector-curvature="0"-       sodipodi:nodetypes="cccccccc" />-    <path-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.40008163;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:94.40000153;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"-       d="m 356.94141,187.18164 c -55.02475,0 -100.00001,44.97526 -100,100 -1e-5,55.02475 44.97525,100 100,100 55.02475,0 100,-44.97525 100,-100 0,-55.02475 -44.97525,-100 -100,-100 z m 0,34.39844 c 36.43357,0 65.59961,29.168 65.59961,65.60156 0,36.43356 -29.16604,65.59961 -65.59961,65.59961 -36.43357,0 -65.59961,-29.16605 -65.59961,-65.59961 0,-36.43356 29.16604,-65.60156 65.59961,-65.60156 z"-       id="path4619"-       inkscape:connector-curvature="0" />-  </g>-</svg>
− data/icons/scalable/bustle.svg
@@ -1,253 +0,0 @@-<?xml version="1.0" encoding="UTF-8" standalone="no"?>-<!-- Created with Inkscape (http://www.inkscape.org/) -->--<svg-   xmlns:dc="http://purl.org/dc/elements/1.1/"-   xmlns:cc="http://creativecommons.org/ns#"-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"-   xmlns:svg="http://www.w3.org/2000/svg"-   xmlns="http://www.w3.org/2000/svg"-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"-   width="605.06"-   height="605.06"-   id="svg2"-   version="1.1"-   inkscape:version="0.48.4 r9939"-   sodipodi:docname="bustle.svg">-  <defs-     id="defs4">-    <inkscape:path-effect-       is_visible="true"-       id="path-effect4126"-       effect="spiro" />-    <inkscape:path-effect-       is_visible="true"-       id="path-effect4123"-       effect="spiro" />-    <inkscape:path-effect-       is_visible="true"-       id="path-effect4120"-       effect="spiro" />-    <inkscape:path-effect-       is_visible="true"-       id="path-effect4117"-       effect="spiro" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3763"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3759"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770-1"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770-3"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3759-7"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3763-2"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770-6"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770-3-1"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770-6-2"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3763-2-7"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3770-3-1-2"-       is_visible="true" />-    <inkscape:path-effect-       effect="spiro"-       id="path-effect3759-7-2"-       is_visible="true" />-    <filter-       id="filter4104"-       inkscape:label="Chalk and sponge"-       inkscape:menu="Distort"-       inkscape:menu-tooltip="Low turbulence gives sponge look and high turbulence chalk"-       width="1.6"-       height="2"-       y="-0.5"-       x="-0.30000001"-       color-interpolation-filters="sRGB">-      <feTurbulence-         id="feTurbulence4106"-         baseFrequency="0.4"-         type="fractalNoise"-         seed="0"-         numOctaves="5"-         result="result1" />-      <feOffset-         id="feOffset4108"-         dx="-5"-         dy="-5"-         result="result2" />-      <feDisplacementMap-         id="feDisplacementMap4110"-         in2="result1"-         xChannelSelector="R"-         yChannelSelector="G"-         scale="30"-         in="SourceGraphic" />-    </filter>-    <filter-       id="filter4183"-       inkscape:label="Chalk and sponge"-       inkscape:menu="Distort"-       inkscape:menu-tooltip="Low turbulence gives sponge look and high turbulence chalk"-       width="1.6"-       height="2"-       y="-0.5"-       x="-0.30000001"-       color-interpolation-filters="sRGB">-      <feTurbulence-         id="feTurbulence4185"-         baseFrequency="0.4"-         type="fractalNoise"-         seed="0"-         numOctaves="5"-         result="result1" />-      <feOffset-         id="feOffset4187"-         dx="-5"-         dy="-5"-         result="result2" />-      <feDisplacementMap-         id="feDisplacementMap4189"-         in2="result1"-         xChannelSelector="R"-         yChannelSelector="G"-         scale="30"-         in="SourceGraphic" />-    </filter>-    <inkscape:path-effect-       is_visible="true"-       id="path-effect4117-2"-       effect="spiro" />-  </defs>-  <sodipodi:namedview-     id="base"-     pagecolor="#ffffff"-     bordercolor="#666666"-     borderopacity="1.0"-     inkscape:pageopacity="0.0"-     inkscape:pageshadow="2"-     inkscape:zoom="0.59"-     inkscape:cx="351.05408"-     inkscape:cy="216.30891"-     inkscape:document-units="px"-     inkscape:current-layer="layer1"-     showgrid="false"-     inkscape:window-width="1388"-     inkscape:window-height="833"-     inkscape:window-x="50"-     inkscape:window-y="223"-     inkscape:window-maximized="0"-     fit-margin-top="0"-     fit-margin-left="0"-     fit-margin-right="0"-     fit-margin-bottom="0">-    <inkscape:grid-       type="xygrid"-       id="grid3834"-       empspacing="5"-       visible="true"-       enabled="true"-       snapvisiblegridlinesonly="true"-       originx="-56.941089px"-       originy="-465.18127px" />-  </sodipodi:namedview>-  <metadata-     id="metadata7">-    <rdf:RDF>-      <cc:Work-         rdf:about="">-        <dc:format>image/svg+xml</dc:format>-        <dc:type-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />-        <dc:title />-      </cc:Work>-    </rdf:RDF>-  </metadata>-  <g-     inkscape:label="Layer 1"-     inkscape:groupmode="layer"-     id="layer1"-     transform="translate(-56.941089,17.879098)">-    <path-       style="fill:none;stroke:#74b674;stroke-width:27.59247017;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:82.77741051, 27.59247017;stroke-dashoffset:27.59247017"-       d="m 70.761814,288.36996 c -0.01207,-1.2669 -0.02449,-2.53589 -0.02449,-3.80671 0,-159.41492 129.271656,-288.6461129 288.736206,-288.6461129 159.46457,0 288.73621,129.2311929 288.73621,288.6461129 l 0,0 0,0 c 0,1.27082 -0.009,2.53969 -0.0245,3.80671"-       id="path3802-8"-       inkscape:connector-curvature="0" />-    <path-       sodipodi:type="arc"-       style="fill:none;stroke:#000000;stroke-width:34.42315674;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"-       id="path2985-7"-       sodipodi:cx="381.42856"-       sodipodi:cy="433.79074"-       sodipodi:rx="130"-       sodipodi:ry="118.57143"-       d="m 511.42856,433.79074 a 130,118.57143 0 1 1 -260,0 130,118.57143 0 1 1 260,0 z"-       transform="matrix(0.50880116,0,0,0.55776489,164.13818,45.848517)"-       />-    <path-       style="fill:none;stroke:#000000;stroke-width:18.45480156;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"-       d="m 417.41556,287.80173 211.44171,0"-       id="path3757-7"-       inkscape:path-effect="#path-effect3759-7"-       inkscape:original-d="m 417.41556,287.80173 211.44171,0"-       inkscape:connector-curvature="0"-       />-    <path-       style="fill:none;stroke:#000000;stroke-width:18.17925262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"-       d="m 294.08479,287.66116 -211.718251,0.2812"-       id="path3761-7"-       inkscape:path-effect="#path-effect3763-2"-       inkscape:original-d="m 294.08479,287.66116 -211.718251,0.2812"-       inkscape:connector-curvature="0"-       />-    <path-       style="fill:none;stroke:#000000;stroke-width:18.33793068;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"-       d="M 200.97285,226.67532 77.897224,289.6408 200.97285,348.92819"-       id="path3768-2"-       inkscape:path-effect="#path-effect3770-6"-       inkscape:original-d="M 200.97285,226.67532 77.897224,289.6408 200.97285,348.92819"-       inkscape:connector-curvature="0"-       sodipodi:nodetypes="ccc"-       />-    <path-       style="fill:none;stroke:#000000;stroke-width:18.33793068;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"-       d="M 520.66838,225.39683 643.74401,288.36232 520.66838,347.6497"-       id="path3768-9-7"-       inkscape:path-effect="#path-effect3770-3-1"-       inkscape:original-d="M 520.66838,225.39683 643.74401,288.36232 520.66838,347.6497"-       inkscape:connector-curvature="0"-       sodipodi:nodetypes="ccc"-       />-  </g>-</svg>
+ data/icons/scalable/org.freedesktop.Bustle-symbolic.svg view
@@ -0,0 +1,104 @@+<?xml version="1.0" encoding="UTF-8" standalone="no"?>+<!-- Created with Inkscape (http://www.inkscape.org/) -->++<svg+   xmlns:dc="http://purl.org/dc/elements/1.1/"+   xmlns:cc="http://creativecommons.org/ns#"+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"+   xmlns:svg="http://www.w3.org/2000/svg"+   xmlns="http://www.w3.org/2000/svg"+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+   width="600"+   height="600"+   id="svg2"+   version="1.1"+   inkscape:version="0.91 r13725"+   sodipodi:docname="bustle-symbolic.svg">+  <defs+     id="defs4" />+  <sodipodi:namedview+     id="base"+     pagecolor="#ffffff"+     bordercolor="#666666"+     borderopacity="1.0"+     inkscape:pageopacity="0.0"+     inkscape:pageshadow="2"+     inkscape:zoom="1.18"+     inkscape:cx="296.02826"+     inkscape:cy="407.83651"+     inkscape:document-units="px"+     inkscape:current-layer="layer1"+     showgrid="false"+     inkscape:window-width="1440"+     inkscape:window-height="824"+     inkscape:window-x="0"+     inkscape:window-y="27"+     inkscape:window-maximized="1"+     fit-margin-top="0"+     fit-margin-left="0"+     fit-margin-right="0"+     fit-margin-bottom="0"+     showguides="true"+     inkscape:guide-bbox="true">+    <inkscape:grid+       type="xygrid"+       id="grid3834"+       empspacing="5"+       visible="true"+       enabled="true"+       snapvisiblegridlinesonly="true"+       originx="-56.941089px"+       originy="-465.18127px" />+  </sodipodi:namedview>+  <metadata+     id="metadata7">+    <rdf:RDF>+      <cc:Work+         rdf:about="">+        <dc:format>image/svg+xml</dc:format>+        <dc:type+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />+        <dc:title></dc:title>+      </cc:Work>+    </rdf:RDF>+  </metadata>+  <g+     inkscape:label="Layer 1"+     inkscape:groupmode="layer"+     id="layer1"+     transform="translate(-56.941089,12.819102)">+    <path+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#dedede;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:57.94400024;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:5.19999981;stroke-dasharray:115.88800049, 57.94400024;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"+       d="m 349.58008,-12.728516 c -19.78034,0.499891 -39.51808,2.890348 -58.82031,7.2539096 4.10872,18.8723954 8.21745,37.7447914 12.32617,56.6171874 33.74925,-7.665785 69.12626,-7.971229 103.02539,-1.0293 3.71633,-18.821141 8.65912,-38.435398 11.61328,-56.7636714 -22.39128,-4.5980686 -45.29405,-6.6135646 -68.14453,-6.0781256 z m 105.80078,78.716797 c 31.47813,14.008295 59.87299,34.867319 82.70703,60.664059 14.44727,-12.81901 28.89453,-25.63802 43.3418,-38.457028 C 553.05494,56.141376 517.74279,30.253699 478.60547,12.900391 470.86393,30.596354 463.1224,48.292318 455.38086,65.988281 Z M 227.18164,16.626953 C 189.51961,34.723972 155.71119,60.77538 128.625,92.591797 c 14.7487,12.470703 29.49739,24.941413 44.24609,37.412113 22.37137,-26.20404 50.37565,-47.593699 81.60157,-62.169926 -8.17123,-17.501302 -16.34245,-35.002604 -24.51368,-52.503906 -0.92578,0.432292 -1.85156,0.864583 -2.77734,1.296875 z M 568.0293,168.66016 c 16.99699,30.09909 27.33124,63.91871 30.12695,98.36914 19.23893,-1.70833 38.47787,-3.41667 57.7168,-5.125 -3.5014,-42.55686 -16.29754,-84.32012 -37.26568,-121.51953 -16.85936,9.42513 -33.71871,18.85026 -50.57807,28.27539 z M 89.939453,150.27539 c -18.701268,36.38678 -29.811885,76.6502 -32.357428,117.48438 19.276042,1.22135 38.552083,2.44271 57.828125,3.66406 2.15345,-34.4883 11.88032,-68.47463 28.29492,-98.88281 -17.08268,-9.01302 -34.16536,-18.02605 -51.248045,-27.03907 -0.839191,1.59115 -1.678381,3.18229 -2.517572,4.77344 z"+       id="path4626"+       inkscape:connector-curvature="0" />+    <circle+       style="fill:none;stroke:#bebebe;stroke-width:75.08624021;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"+       id="path2985-7"+       cx="381.42856"+       cy="433.79074"+       transform="matrix(0.50880116,0,0,0.55776489,164.13818,45.848517)"+       ry="118.57143"+       rx="130" />+    <path+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"+       d="m 430,220 30,55 -85,0 0,50 85,0 -30,55 170,-80 z"+       transform="translate(56.941089,-12.819102)"+       id="path3757-7"+       inkscape:connector-curvature="0"+       sodipodi:nodetypes="cccccccc" />+    <path+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"+       d="m 170,220 -170,80 170,80 -30,-55 85,0 0,-50 -85,0 z"+       transform="translate(56.941089,-12.819102)"+       id="path3761-7"+       inkscape:connector-curvature="0"+       sodipodi:nodetypes="cccccccc" />+    <path+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.40008163;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:5.19999981;stroke-dasharray:none;stroke-dashoffset:94.40000153;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"+       d="m 356.94141,187.18164 c -55.02475,0 -100.00001,44.97526 -100,100 -1e-5,55.02475 44.97525,100 100,100 55.02475,0 100,-44.97525 100,-100 0,-55.02475 -44.97525,-100 -100,-100 z m 0,34.39844 c 36.43357,0 65.59961,29.168 65.59961,65.60156 0,36.43356 -29.16604,65.59961 -65.59961,65.59961 -36.43357,0 -65.59961,-29.16605 -65.59961,-65.59961 0,-36.43356 29.16604,-65.60156 65.59961,-65.60156 z"+       id="path4619"+       inkscape:connector-curvature="0" />+  </g>+</svg>
+ data/icons/scalable/org.freedesktop.Bustle.svg view
@@ -0,0 +1,253 @@+<?xml version="1.0" encoding="UTF-8" standalone="no"?>+<!-- Created with Inkscape (http://www.inkscape.org/) -->++<svg+   xmlns:dc="http://purl.org/dc/elements/1.1/"+   xmlns:cc="http://creativecommons.org/ns#"+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"+   xmlns:svg="http://www.w3.org/2000/svg"+   xmlns="http://www.w3.org/2000/svg"+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+   width="605.06"+   height="605.06"+   id="svg2"+   version="1.1"+   inkscape:version="0.48.4 r9939"+   sodipodi:docname="bustle.svg">+  <defs+     id="defs4">+    <inkscape:path-effect+       is_visible="true"+       id="path-effect4126"+       effect="spiro" />+    <inkscape:path-effect+       is_visible="true"+       id="path-effect4123"+       effect="spiro" />+    <inkscape:path-effect+       is_visible="true"+       id="path-effect4120"+       effect="spiro" />+    <inkscape:path-effect+       is_visible="true"+       id="path-effect4117"+       effect="spiro" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3763"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3759"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770-1"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770-3"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3759-7"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3763-2"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770-6"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770-3-1"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770-6-2"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3763-2-7"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3770-3-1-2"+       is_visible="true" />+    <inkscape:path-effect+       effect="spiro"+       id="path-effect3759-7-2"+       is_visible="true" />+    <filter+       id="filter4104"+       inkscape:label="Chalk and sponge"+       inkscape:menu="Distort"+       inkscape:menu-tooltip="Low turbulence gives sponge look and high turbulence chalk"+       width="1.6"+       height="2"+       y="-0.5"+       x="-0.30000001"+       color-interpolation-filters="sRGB">+      <feTurbulence+         id="feTurbulence4106"+         baseFrequency="0.4"+         type="fractalNoise"+         seed="0"+         numOctaves="5"+         result="result1" />+      <feOffset+         id="feOffset4108"+         dx="-5"+         dy="-5"+         result="result2" />+      <feDisplacementMap+         id="feDisplacementMap4110"+         in2="result1"+         xChannelSelector="R"+         yChannelSelector="G"+         scale="30"+         in="SourceGraphic" />+    </filter>+    <filter+       id="filter4183"+       inkscape:label="Chalk and sponge"+       inkscape:menu="Distort"+       inkscape:menu-tooltip="Low turbulence gives sponge look and high turbulence chalk"+       width="1.6"+       height="2"+       y="-0.5"+       x="-0.30000001"+       color-interpolation-filters="sRGB">+      <feTurbulence+         id="feTurbulence4185"+         baseFrequency="0.4"+         type="fractalNoise"+         seed="0"+         numOctaves="5"+         result="result1" />+      <feOffset+         id="feOffset4187"+         dx="-5"+         dy="-5"+         result="result2" />+      <feDisplacementMap+         id="feDisplacementMap4189"+         in2="result1"+         xChannelSelector="R"+         yChannelSelector="G"+         scale="30"+         in="SourceGraphic" />+    </filter>+    <inkscape:path-effect+       is_visible="true"+       id="path-effect4117-2"+       effect="spiro" />+  </defs>+  <sodipodi:namedview+     id="base"+     pagecolor="#ffffff"+     bordercolor="#666666"+     borderopacity="1.0"+     inkscape:pageopacity="0.0"+     inkscape:pageshadow="2"+     inkscape:zoom="0.59"+     inkscape:cx="351.05408"+     inkscape:cy="216.30891"+     inkscape:document-units="px"+     inkscape:current-layer="layer1"+     showgrid="false"+     inkscape:window-width="1388"+     inkscape:window-height="833"+     inkscape:window-x="50"+     inkscape:window-y="223"+     inkscape:window-maximized="0"+     fit-margin-top="0"+     fit-margin-left="0"+     fit-margin-right="0"+     fit-margin-bottom="0">+    <inkscape:grid+       type="xygrid"+       id="grid3834"+       empspacing="5"+       visible="true"+       enabled="true"+       snapvisiblegridlinesonly="true"+       originx="-56.941089px"+       originy="-465.18127px" />+  </sodipodi:namedview>+  <metadata+     id="metadata7">+    <rdf:RDF>+      <cc:Work+         rdf:about="">+        <dc:format>image/svg+xml</dc:format>+        <dc:type+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />+        <dc:title />+      </cc:Work>+    </rdf:RDF>+  </metadata>+  <g+     inkscape:label="Layer 1"+     inkscape:groupmode="layer"+     id="layer1"+     transform="translate(-56.941089,17.879098)">+    <path+       style="fill:none;stroke:#74b674;stroke-width:27.59247017;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:82.77741051, 27.59247017;stroke-dashoffset:27.59247017"+       d="m 70.761814,288.36996 c -0.01207,-1.2669 -0.02449,-2.53589 -0.02449,-3.80671 0,-159.41492 129.271656,-288.6461129 288.736206,-288.6461129 159.46457,0 288.73621,129.2311929 288.73621,288.6461129 l 0,0 0,0 c 0,1.27082 -0.009,2.53969 -0.0245,3.80671"+       id="path3802-8"+       inkscape:connector-curvature="0" />+    <path+       sodipodi:type="arc"+       style="fill:none;stroke:#000000;stroke-width:34.42315674;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"+       id="path2985-7"+       sodipodi:cx="381.42856"+       sodipodi:cy="433.79074"+       sodipodi:rx="130"+       sodipodi:ry="118.57143"+       d="m 511.42856,433.79074 a 130,118.57143 0 1 1 -260,0 130,118.57143 0 1 1 260,0 z"+       transform="matrix(0.50880116,0,0,0.55776489,164.13818,45.848517)"+       />+    <path+       style="fill:none;stroke:#000000;stroke-width:18.45480156;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"+       d="m 417.41556,287.80173 211.44171,0"+       id="path3757-7"+       inkscape:path-effect="#path-effect3759-7"+       inkscape:original-d="m 417.41556,287.80173 211.44171,0"+       inkscape:connector-curvature="0"+       />+    <path+       style="fill:none;stroke:#000000;stroke-width:18.17925262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"+       d="m 294.08479,287.66116 -211.718251,0.2812"+       id="path3761-7"+       inkscape:path-effect="#path-effect3763-2"+       inkscape:original-d="m 294.08479,287.66116 -211.718251,0.2812"+       inkscape:connector-curvature="0"+       />+    <path+       style="fill:none;stroke:#000000;stroke-width:18.33793068;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"+       d="M 200.97285,226.67532 77.897224,289.6408 200.97285,348.92819"+       id="path3768-2"+       inkscape:path-effect="#path-effect3770-6"+       inkscape:original-d="M 200.97285,226.67532 77.897224,289.6408 200.97285,348.92819"+       inkscape:connector-curvature="0"+       sodipodi:nodetypes="ccc"+       />+    <path+       style="fill:none;stroke:#000000;stroke-width:18.33793068;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"+       d="M 520.66838,225.39683 643.74401,288.36232 520.66838,347.6497"+       id="path3768-9-7"+       inkscape:path-effect="#path-effect3770-3-1"+       inkscape:original-d="M 520.66838,225.39683 643.74401,288.36232 520.66838,347.6497"+       inkscape:connector-curvature="0"+       sodipodi:nodetypes="ccc"+       />+  </g>+</svg>
+ data/org.freedesktop.Bustle.appdata.xml.in view
@@ -0,0 +1,36 @@+<?xml version="1.0" encoding="UTF-8"?>+<!-- Copyright 2014 Philip Withnall <philip@tecnocode.co.uk> -->+<application>+	<id type="desktop">org.freedesktop.Bustle.desktop</id>+	<metadata_license>CC-BY-SA-3.0</metadata_license>+	<project_license>LGPL-2.1+ and GPL-2.0+ and GPL-3.0</project_license>+	<_name>Bustle</_name>+	<_summary>Draw sequence diagrams of D-Bus activity</_summary>+	<description>+		<!-- Translators: These are the application description paragraphs in the AppData file. -->+		<_p>Bustle draws sequence diagrams of D-Bus activity.+		    It shows signal emissions, method calls and their+		    corresponding returns, with time stamps for each individual+		    event and the duration of each method call. This can help+		    you check for unwanted D-Bus traffic, and pinpoint why your+		    D-Bus-based application isn't performing as well as you+		    like. It also provides statistics like signal frequencies+		    and average method call times.</_p>+	</description>+	<screenshots>+		<screenshot type="default">+			<!-- Translators: This should be the URI of a 2400×1350, pixel screenshot of Bustle in your language. If you can't take a screenshot, leave the string as the English screenshot. -->+			<_image type="source">https://wiki.freedesktop.org/www/Software/Bustle/bustle-0.5.2-1.png</_image>+			</screenshot>+		<screenshot>+			<!-- Translators: This should be the URI of a 2400×1350, pixel screenshot of Bustle in your language. If you can't take a screenshot, leave the string as the English screenshot. -->+			<_image type="source">https://wiki.freedesktop.org/www/Software/Bustle/bustle-0.5.2-2.png</_image>+		</screenshot>+	</screenshots>+	<url type="homepage">https://www.freedesktop.org/wiki/Software/Bustle/</url>+	<updatecontact>will_at_willthompson.co.uk</updatecontact>+	<translation type="gettext">bustle</translation>+	<provides>+		<id>bustle.desktop</id>+	</provides>+</application>
+ data/org.freedesktop.Bustle.desktop.in view
@@ -0,0 +1,10 @@+[Desktop Entry]+_Name=Bustle+_Comment=Draw sequence diagrams of D-Bus activity+Exec=bustle+Icon=org.freedesktop.Bustle+Terminal=false+Type=Application+Categories=GTK;Development;Debugger;Profiling;+StartupNotify=true+_Keywords=debug;profile;d-bus;dbus;sequence;monitor;
− ldd-me-up.sh
@@ -1,4 +0,0 @@-#!/bin/sh-set -e--ldd $1 | perl -lne 'm{(lib(?:ffi|gmp|pcap)\S+) => (\S+) } and print $2'