Updated Console Keyboard Shortcuts in Firefox

Keyboard

keyboard” by Mark Lane on Flickr

Cmd-Alt-K on OS X or Ctrl-Shift-K on Linux or Windows will now always focus the console input line. It will no longer close the entire toolbox and you’ll have to use one of the other global toolbox commands, Cmd-Alt-i (or Ctrl-Shift-i) or F12.

Keyboard shortcuts.

They are the bane of Firefox Developer Tools engineers. Ask us in #devtools for a new keyboard shortcut to do X and you will be greeted by a chorus of groans. There just aren’t enough keys on a keyboard for everything we need to use them for.

I added a recent change to automatically focus the Console’s input line when clicking anywhere in the console’s output area (bug 960695). This spawned a series of follow-ups.

The first of these was the addition of Page Up and Page Down controls on the input line. (bug 962531). Now when the input line is focused, it will scroll the output area with page up and page down keys. If the autocomplete popup is active, it’ll scroll too. It’s a little thing that’s nice to have when you’re flipping through all of the completions for, say, the global window object.

The most important change we landed this weekend is a change to the Console’s main Keyboard Shortcut, Cmd-Alt-K on OS X or Ctrl-Shift-K if you’re on Linux or Windows. This key will now always focus the console input line. It will no longer close the entire toolbox and you’ll have to use one of the other global toolbox commands, Cmd-Alt-i (or Ctrl-Shift-I) or F12. (see bug 612253 for details and history)

Try it out. Tell us if you hate it. You can reach us here, IRC, or on the twitters.

And there’s still more to do. I filed bug 967044 to make the Home and End keys do the right thing in the Console’s input line. We have this “metabug” tracking all of the open shortcut bugs in Firefox Devtools. Are we missing any? Let us know!

Devtools Resolved Bugs, 2013-09-10 – 2013-09-17

ID Summary
893677 [markup view] we should limit the size of an attribute
912543 [rule view] Alignment for warning icon is bad (below line…
913509 [rule view] Papercuts – Inconsistent behavior when modify…
909121 Inspector breaks when navigating backwards
912929 [app manager] UI polish
910830 TypeError: e is undefined: callback@chrome://mochitests/c…
892268 Ctrl/Cmd+0/+/- should change the text size in all the dev…
915556 en-US consistency: use single unicode character … instead…
914753 Remove ‘js2-mode’ references from Emacs graffiti
905103 Use a about URL for the app manager urls (was “devtools:…
912889 [app manager] tooltip and help everywhere
913234 Disconnecting leaves toolboxes open
913717 Fix up placeholder text for hosted app
914729 Use about:app-manager in menu item
915067 wipe sensitive data on system debugging
898559 Add metadata API for add-on globals
762608 Intermittent browser_webconsole_bug_598357_jsterm_output….
864152 Intermittent browser_webconsole_network_panel.js | uncaug…
902385 Intermittent TEST-UNEXPECTED-FAIL | browser/devtools/webc…
902816 Intermittent browser_console_private_browsing.js | This t…
916329 Use proper plural forms in messageRepeats.tooltip
916601 Remove Ctrl +/-/0 zooming shortcuts from web console
789349 Show status messages above the toolbox
915926 Ending a style property edit via click reverts displayed …
912887 [app manager] first run experience
912892 [app manager] simulator launch UI
913945 [app manager] Turn it on!
913947 this.elementStyle is undefined
913949 this.touchEventHandler is undefined
914110 Land Simulator.jsm
915388 Remove “my” from the panels name in index.xul
915740 Integrate adb helper addon into the app manager (UI part)
916597 [app manager] fix locales in help.xhtml
916698 [app manager] 2 connect buttons
855523 Nodes in the markup panel and rule/computed views are har…
912372 [markup view] Empty tags should not be expandable in the …
913641 resource:///modules/devtools/inspector/inspector-panel.js:312″ on all mochitest-bc runs”> “TypeError: this.markup is undefined: InspectorPanel_onNa…
914079 The whole pseudo elements bar should be clickable
893848 Manifest properties aren’t updated when installing apps m…
911785 Allow installing apps local apps from the app manager UI
912213 Webapps getAppActor doesn’t work with non-oop apps
912475 Use promise instead of custom event for install request f…
914239 Enable app debugging on device
914594 [app manager] Services.settings not available
914604 Add test for app resinstall and redirects when installing…
915204 Integrate adb helper addon into the app manager
915226 Start / Stop / Debug shown in project view even when unin…
915096 Remove needless prefs for `devtools.layoutview.*`
900418 Inplace editor should not destroy itself when the focus i…
900430 Should be able to Tab complete and cycle through the comp…
916391 Part of test/browser_dbg_multiple-windows.js seems to be …
760876 Can’t drag-select multiple messages in the Web Console
907278 Firefox24 hangs if debugging onkeydown listener both with…
724224 Console shows incorrect URL when a hash is used
773291 Clicking to the regions/areas to the left and right of th…
706755 want to select code in Web Console
886848 Promisify the debugger frontend
891439 Standardize the sheduleSearch/performSearch methods
901271 Disabled breakpoints are lost on page reload
913060 pretty print should use devtools.editor.tabsize
897050 Prefer displayName instead of name
628019 Web Console cleanup: Use attributes instead of classes fo…
906249 The number of lines in onResume is TOO DAMN HIGH
908283 Don’t attach onStep hooks to frames without scripts
876277 Cleanup the debugger tests
876633 Explanation panel for findbox in debugger breaks textbox …
884436 Sorting by METHOD is really painful
894311 Finding a string with ‘:’ breaks scripts list
874591 Copy/paste from Developer Console does not include “[Mixe…
777428 debug webapps running in desktop webapp runtime
675487 Add tooltip to repeat bubble in Web Console
881219 When filtering sources, hiding items in the sources list …

Pinchy Rediscovered

I had a funny moment this morning. I set up my Mac’s wireless keyboard and trackpad and was looking around for Firefox’ gesture preferences. I had setup Shift+Swipe-left / Swipe Right to switch tabs on my trackpad and am fairly used to that behavior. I did a search and found a link on Duck Duck Go was a link to a Firefox support post talking about Pinchy: a simple addon I wrote a couple of years back to set those preferences.

Too bad it requires a manual uninstall but for the most part, it does the trick and I got my gestures back.

  • pinch in == zoom in
  • shift + pinch in == close tab
  • pinch out == zoom out
  • shift + pinch out == toggle full screen
  • shift + 3-finger swipe left == previous tab
  • shift + 3-finger swipe right == next tab

Source: https://github.com/robcee/pinchy

AMO: https://addons.mozilla.org/en-US/firefox/addon/271845/

Firefox 23 Developer Tools Fixes

Bug ID Summary
581352 Console HTTP output should make JSON viewable as objects
586125 “””Copy”” “”Select All”” etc. popup menu item in the Web Console displays keyboard shortcuts
587757 Implement Browser Console
638953 Cannot copy keys or values in web console object inspector
640225 Make Property Panels Editable
688400 Web Console throws a TypeError when trying to display objects with no toString method
688401 Web Console displays “”[null]“” for [Object.create(null)]
711846 Intermittent browser_webconsole_bug_595934_message_categories.js | Test timed out (mostly on WinXP PGO)
725771 xpath use in console returns null elements
744741 console.dir tree is empty with cached messages
748851 Web Developer Console incorrectly displays escaped hex/unicode characters
757897 All code in the web console is considered to be at line 1
774365 Web Console setTimeout can’t find declared functions by name
783499 Web Console should use the debugger API
808370 Use the VariablesView in webconsole
809424 Intermittent browser_webconsole_bug_611795.js | The unknown CSS property warning is displayed only once – Got 1, expected 2
831400 Intermittent devtools/webconsole/test/browser_webconsole_bug_764572_output_open_url.js| Timed out while waiting for: complete to initialize the opening tab
836720 “”InternalError: too much recursion”” not correctly caught
840093 Text in object inspector can’t be copied
841129 Intermittent browser_repeated_messages_accuracy.js | two repeats for the second css warning – Got 1, expected 2
843287 UI improvements for the variables view and sidebar
847349 Variables View should have left arrow do collapse and navigate in separate steps
853568 Intermittentbrowser_webconsole_bug_599725_response_headers.js | we do not have the Content-Type header | Content-Length != 60 – Didn’t expect 60, but got it
855058 Intermittent browser/dom/tests/browser/browser_ConsoleAPITests.js | timer duration is positive
857441 Autocompletion popup is very jumpy while typing text
859170 Trying to select […] for a very long message printed to the web console will hang Firefox
859818 ConsoleAPIStorage.jsm tries to delete var-declared _consoleStorage
859858 Intermittent browser_bug664688_sandbox_update_after_navigation.js | Timed out while waiting for: window.location.href result is displayed after goBack(), browser_repeated_messages_accuracy.js | Timed out while waiting for: messages displayed
862024 Warning about replaced window.console API shows when content scripts do not change the object
863943 Intermittentbrowser_webconsole_bug_602572_log_bodies_checkbox.js | Test timed out, browser_webconsole_bug_603750_websocket.js | uncaught exception – ReferenceError: ok is not defined
865288 console.log with different object logged from same line number are grouped together
865792 Firefox for Android remote console doesn’t evaluate JS expressions
865871 Object inspector can’t be closed
677930 Style Inspector: make URLs clickable
777681 [rule view] Abbreviate long CSS file names source links
777877 Switch CssRuleView.jsm back to WeakMaps
854948 GCLI context.environment.contentDocument points to doc from when GCLI first opened
855502 we need a proper design for the new checkboxes
855520 “”No element selected”” in the inspector sidebar could use some margins
861908 Destroying Inspector without destroying Toolbox fails.
866381 Inspector shouldn’t break if target is a chrome document
679364 Use either content/devtools/* or content/browser/devtools/* for aliases
851231 Output console.jsm API calls to the browser console
855544 Implement a network monitor
855763 [ResponsiveMode] Intermittent browser_responsiveuiaddcustompreset.js | Test timed out, | Found a tab after previous test timed out: data:text/html,foo,browser_Services.js | Services.prompt is an nsIPromptService
855914 Start using the jetpack loader in devtools
859089 [netmonitor] Under very constrained sizes text in the timeline view is sometimes not rendered
859221 [netmonitor] Sizes are displayed in KB not kb
861197 chrome.manifest files created by the devtools loader should be ignored
723923 Debugger ‘breakpoint list’ GCLI command should have extra nice output
792815 Update promise usage in gcli commands
831720 GCLI needs an appcache command
861192 gcli addon command shows [object Object] instead of a list of addons
865680 devtools.gcli.allowSet is in firefox.js twice
869233 TEST-UNEXPECTED-FAIL | browser_cmd_appcache_valid.js | html output for appcache validate should match successfully. Actual textContent: “”Manifest URI…””
739031 Check for unused strings not used in translation (e.g. scoped.label) and remove them
740541 Style sheets in iframes are not listed in the style editor
816967 Remotable Style Editor
866264 Intermittent devtools/styleeditor/test/browser_styleeditor_new.js | new editor shows 1 rule after modification – Got 2, expected 1
772119 expose source mapped sources over the remote debugging protocol
818134 Allow multiple debuggers in toolboxes to debug separate tabs
832231 After a reload, breakpoints require multiple resumes to allow execution to continue
837723 [jsdbg2] Debugger should provide a way to get Debugger.Object referents directly
840292 The debugger’s xpcshell tests should use listTabs/attachTab instead of listContexts
843187 Variables view: going down through the properties via keyboard is really broken
849069 relative source map URLs should be resolved according to the spec’s rules
849071 Create some kind of chrome to turn source mapping on/off in the debugger
850738 Add a crap load of telemetry tests
851836 breakpoints[aLocation.line] is undefined after bug 820012
853787 Report errors in nested event loops in xpcshell tests
856232 initialize globalActorFactories upon declaring DebuggerServer
859181 Variables view closes immediately on first open
860349 Intermittent browser_dbg_createChrome.js | application timed out after 330 seconds with no output
861783 Removing watch expression of large object not possible via mouse
861817 Stop using Ctrl+Shift+O shortcut for function searching.
861852 Telemetry data from the remote protocol always appear in the remote buckets
862142 remote debugger doesn’t find any sources for simulator on nightly
862186 remove unused FileUtils import in DebuggerUI.jsm
862360 Use the exported Promise.all instead of reimplementing it
863571 Enable source map xpcshell tests on B2G
864802 The _store on each variables view instance is redundant
864900 The listTabs protocol request can fail if made immediately after a tab is closed
865073 remote debugging protocol: handlers should systematically catch and log exceptions
865328 JS debugger: clean up DebuggerClient.prototype.close
865509 JS debugger: UnsolicitedPauses in dbg-client.jsm should mention ‘exception’
866278 remote debugging protocol: number packets when dumping
867481 Remote debugging connection screen is broken
839515 Tiny fonts in the remote connection screen
849500 navigate and will-navigate events for remoted targets carry payload that is incompatible with the non-remoted case
851546 Create an Options panel for the toolbox
857082 TabTarget.makeRemote doesn’t need any arguments
859569 Target.makeRemote should attachTab
860101 payload._navPayload is a Window in ‘will-navigate’ event handler
862294 Sidebar should be responsive in docked Toolbox.
862363 Sync the killswitch upon (un)registering of a tool and respect it in Options Panel
862398 Maintain the order of tools in the tab and the options panel list
863600 Intermittent browser_toolbox_options.js on Windows PGO builds | Test timed out
851381 Make the Scratchpad evaluate asynchronously
865803 Unable to save Scratchpads, Style Editor, about:memory, … on OS X
852777 Make Tilt more extensible
862435 Tilt doesn’t open if the Inspector was opened beforehand
855244 Profiler hangs after pressing “”Stop”” if it was started in multiple profiles in different tabs
856797 Typo in “”profilerNotStarted”” in gclicommands.properties
858759 profiler.css in browser/devtools/ should actually be in browser/themes instead
859062 Hide right arrow in the SideMenuWidget
859085 Add tooltips to all labels in the UI that may have cropped values
859308 Hide Blocked in Timings tab until we know what that’s doing
859968 JSONP requests are not parsed into a tree
859980 JSON request not parsed
860055 SideMenuWidget shouldn’t scroll back to the selected item when new requests are coming in
860175 On netmonitor examining the specific details of a network action leads to bad overlapping display
860232 Function callbacks in jsonp responses should be displayed in the Response tab
861487 Sizes are displayed with non-localized decimal separator
862198 Intermittent browser_net_json-long.js | Test timed out, found a tab
864176 Details pane should remember its height when docked on the right
864519 Several Netmonitor tests fail when ECMAScript Internationalization API is enabled
866091 Intermittentdevtools/netmonitor/test/browser_net_prefs-reload.js | Test timed out | Found a tab after previous test timed out: http://example.com/browser/browser/devtools/netmonitor/test/html_simple-test-page.html and tons of fallout

Source: Firefox 22 – 23.

Bookmarks Deiconizer Deprecation and Fix

I’ve been getting some comments that my addon Bookmarks Deiconizer has stopped working with Firefox 20 or so. Please note that it’s been broken for sometime requiring a disable/re-enable recycling since sometime around Firefox 12 if you opened multiple windows.

A simple fix is to use a userChrome.css hack which I’ve described before, but will repost here, in its awesomesplendid entirety:

A couple of years ago, I made a simple addon to remove the icons from bookmarks in the bookmarks toolbar in Firefox. It was a fun hack, but I knew then that it wasn’t the right way to do this. Nevertheless, easy is the enemy of perfect (or something) so I kept on using it, and AMO kindly kept on updating it when new versions of Firefox were released.

All was right in the world.

Then this week, some changes to Firefox’ toolbar caused the add-on to stop working. It still works if you do the enable-disable dance in the Addons Manager, but that’s no way to live everytime you restart your browser or open a new window. Something had to give!

To banish your bookmarks icons forever, add the following to your userChrome.css file (it’s in your Profile Directory‘s chrome subdirectory). If it doesn’t exist, create a new file named userChrome.css and add:

scrollbox#PlacesToolbarItems > toolbarbutton.bookmark-item > .toolbarbutton-icon {
  display: none;
}

Update: If you’re on Windows, you’ll probably want to include:

scrollbox#PlacesToolbarItems > toolbarbutton.bookmark-item > .toolbarbutton-menu-dropmarker {
    display: -moz-box !important;
}

This makes the little folder drop-down arrow visible on folders.

Save the file, restart your browser and your icons should be gone forever.