Skip to main content

Topic: Questions to the Developer (Read 33007 times)

  • ersi
  • [*][*][*][*][*]
Questions to the Developer
Here's some I have come up with

- Why dependent on Qt5? This dependency makes it difficult to install. 
- Will the GUI be skinnable with old Opera skins?
- Any plans to implement the startup dialog (options 'continue from last', 'home page', etc.)? Old Opera had excellent crash management.
- What are the plans with otter.conf? I would like a human-readable configuration file where absolutely everything is there. An otter:config page would be nice as a perfect mirror of otter.conf, but the conf file is more important.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #50
Were they specifically Arch-related unresolved issues?

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #51
@ersi, nope, just not enough stuff got done in time.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #52
There's a menu item Clone Tab that works. Is there a corresponding macro action available that would work for keyboard? It's not CloneTab, this much I figured out. Is there a list of available actions?

Edit: I tried to combine actions to make an action macro to clone tab, but there must be something I am missing. In another browser, Dwb, duplicate tab or clone tab was also missing and I had to create a macro for that. It was easy to do in Dwb but I am not getting it to work in Otter.
  • Last Edit: 2014-11-06, 16:55:00 by ersi

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #53
What is ShowAddressTooltip supposed to do in about:config? When it's set to false, is it supposed to hide the tooltips with link information (url and title) on webpages?

I would very much like this feature, to hide the link tooltips, because the tooltips in Otter are not trimmed. The tooltips go all over the page when the title or url is long, and the page will be hidden. This is why the tooltip should be possible to turn off. Similarly it would be nice to be able to turn off tab previews in tab bar.

Edit: I see that ShowAddressToolTips is meant to hide the link tooltips https://github.com/Emdek/otter/issues/449#issuecomment-51692171 However, this setting changes nothing for me. It has no effect.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #54
@ersi, Clone Tab action is now available globally, I'm planning to the same with remaining actions from that context menu ((Un)pin Tab and Detach Tab).

Tooltips ca be fully disabled since 1007b169e62d74ceeec07cc0a56b3cab839fd51c.

Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #55
Since weekly 49 or so there appeared a new action "Reload or Stop" which reloads the page when it's not already reloading, and stops the reload when its reloading.

Question: Why is this a single action and not a macro? In my opinion, this would be a perfect candidate for a macro.

Follow-up question: When will the first macro be available, so I can see the syntax and begin trying out my own macros?

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #56
@ersi, that action existed for looong time. ;-)
And it's not suitable for being a macro since it must change own icon and text.

Currently macros are limited to being just a list of actions to be executed in specified order, but in future they will be able to execute simple scripts using APIs that might be shared with extensions (and this is one of reasons why this part is not yet available, to avoid duplication / incompatibility in cases when specific API could be shared by macros and extensions).
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #57

@ersi, that action existed for looong time. ;-)

I didn't notice it earlier. There are definitely more actions active than can be seen under Preferences > Advanced > Keyboard, but I only see them when they appear there.


And it's not suitable for being a macro since it must change own icon and text.

In Opera things like Button, 21235=Stop | Reload, , , 21210 were able to change icons etc. I understand that Otter's macros are not on that level yet but hopefully will be.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #58
There are definitely more actions active than can be seen under Preferences > Advanced > Keyboard, but I only see them when they appear there.

Currently some actions are available only for tabs containing WebWidget (and shortcuts can be set only for actions defined globally) and there is a good reason for that, albeit it's complicated and hopefully will be finally changed before beta4.
In Opera things like Button, 21235=Stop | Reload, , , 21210 were able to change icons etc. I understand that Otter's macros are not on that level yet but hopefully will be.

Possible, but that syntax isn't user friendly and we should design something more modern.

Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Frenzie
  • [*][*][*][*][*]
  • Administrator
Re: Questions to the Developer
Reply #59
Possible, but that syntax isn't user friendly and we should design something more modern.

What part do you mean exactly? That was made a whole lot more user-friendly by changing from numbers referencing strings to textual identifiers:
Code: [Select]
Button, SI_STOP_BUTTON_TEXT=Stop | Reload, , , SI_RELOAD_BUTTON_TEXT

That leaves the problem of all the commas that have to be included.

The rest was pretty friendly to me back in '02 or so. :)

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #60

What part do you mean exactly? That was made a whole lot more user-friendly by changing from numbers referencing strings to textual identifiers:
Code: [Select]
Button, SI_STOP_BUTTON_TEXT=Stop | Reload, , , SI_RELOAD_BUTTON_TEXT

That leaves the problem of all the commas that have to be included.

For me this particular change meant a move towards less user-friendliness. With the numbers I understood that this was a code. I was able to look up the code in language files, and use a different code to get a different label for the button. With the change came English-only approach in ini files, while lang files never adopted the English-looking codes, so they were impossible to connect.

  • Frenzie
  • [*][*][*][*][*]
  • Administrator
Re: Questions to the Developer
Reply #61
Oh, I hadn't noticed that. I thought it was more user-friendly because it made it clear what it was while reducing the likelihood of having to look it up in the first place, but obviously that wouldn't always be true. Also, my personal menu and toolbar files are still full of numbers simply because they were essentially finished around the days of Opera 8 and 9. Probably the only exception is:
Code: [Select]
Item, M_DEVELOPER_TOOLS = Attach Developer Tools Window | Close Developer Tools Window ,,,,"Checkmark"

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #62
@Frenzie, well, it doesn't look user friendly for those who see it for first time. ;-)
I would like to go for ECMAScript directly, defining some generic APIs that could be used in snippets.
It's more flexible and easier to do (and can be at least partially shared with extensions) while adding just slight overhead.
We can even add syntax highlighting and basic auto completion (action identifiers, methods etc.).

As part of my thesis I've made application for simulating logical circuits using similar concepts.
State changes were generating events which could be used to execute specified snippets, like updating state of outputs after input value was changed etc.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #63
@Frenzie, well, it doesn't look user friendly for those who see it for first time.

When I first saw the contents of ini files (which were just about the first config files I ever opened for a program), I understood them immediately. Besides, Opera's standard can easily be made frendlier.

For example, Opera has this: Button, 21235=Stop | Reload, , , 21210
Now imagine something like this: Button=Stop | Reload

By adjusting Opera's standard a little we got rid of the commas and numbers. In our new standard, "Button" says what kind of dingus goes onto the toolbar (button or slider or menu item or whatnot).

"Stop" and "Reload" are actions, whereas "|" defines their relation, as in a macro.

Icons and labels (images and image text displayed on the toolbar, which also gets translated/localised by the app) we can imagine are embedded into the action name, so there's no separate need to specify icons and labels.

Voila. Within the minutes that took me to type this text I massively improved on an existing syntax. I can do the same to yours if you give us further clues how it exactly looks like :)

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #64
@ersi, and how would look like (if doable at all) macro to add to bookmarks all tabs from current stack?
With scripting we could event try to automatically generate keywords based on host name among lots of other stuff, as long as needed APIs will be exposed, which is not hard to do.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #65

@ersi, and how would look like (if doable at all) macro to add to bookmarks all tabs from current stack?

The principle is simple. The devil is in the details. My problem is that when it comes to programming, I am completely blind to that which is not in plain sight. I can read what's there, but not write. I do not know a single programming language.

So, how do you write "stack" in your programmese? The principle for me is simple: Take the stack and prompt for save (like in sessions) with the option to select the bookmarks folder or create a new one.

(Opera misses the prompt step. "Bookmark all" saves everything into the latest used folder, so to make sure that the stuff goes into the right folder I have to keep the sidebar open and click the right folder first, then do "bookmark all". The prompt would make sense, I think.)


With scripting we could event try to automatically generate keywords based on host name among lots of other stuff, as long as needed APIs will be exposed, which is not hard to do.

Sounds totally fabulous :)

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #66
So, how do you write "stack" in your programmese? The principle for me is simple: Take the stack and prompt for save (like in sessions) with the option to select the bookmarks folder or create a new one.

Well, we don't have such APIs yet so it's up to be decided, although this is interesting case, as this concept is not used in extension architectures which we are targeting.

Anyway, the point was to show that this approach (scripting) can be more powerful than one used in classic Opera while being much more friendly for those who already are familiar with JavaScript and ECMAScript.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #67

Anyway, the point was to show that this approach (scripting) can be more powerful than one used in classic Opera while being much more friendly for those who already are familiar with JavaScript and ECMAScript.

Javascript is friendly for those who know it. I was able to read the syntax of ini macros without any prior experience with programming languages, but Javascript and any other proper scripting language is still obscure to me after more than a decade of trying to learn some.

I have no doubt that scripts can do more than mere macros. That's why they are called scripts and that's what programmers are for. Macros are for really simple people.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #68
@ersi, it's simple and hopefully we will get some examples on wiki, not just boring documentation. ;-)
Moreover, most likely we will keep basic macros in current way, as just list of already defined actions to be executed in specified order.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Frenzie
  • [*][*][*][*][*]
  • Administrator
Re: Questions to the Developer
Reply #69
@Frenzie, well, it doesn't look user friendly for those who see it for first time. ;-)

Actually that's exactly the part where I disagree. When I first saw Opera-style INI files, a world opened up for me. A world where I could easily customize things to my heart's desire, as opposed to the incomprehensible gibberish of the Windows registry or XML. This doesn't mean that Opera's syntax should be minutely copied or anything, but I sincerely believe that the opinion that e.g. JSON is somehow easier represents a coder's distorted view on the matter.

@ersi
I use all of the options often enough; it's just when you're not passing any options that it complicates matters. A more JSON-like structure would improve quality for that particular aspect.

  • ersi
  • [*][*][*][*][*]
Re: Questions to the Developer
Reply #70
@ersi
I use all of the options often enough; it's just when you're not passing any options that it complicates matters. A more JSON-like structure would improve quality for that particular aspect.

Luckily I can read JSON. I have tried to configure JSON files, with mixed results.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #71
@Frenzie, storage format is completely different topic. ;-)
I'm not trying to criticize INI here (which is perfect for up to two levels deep data structures) as format of commands in classic Opera is more like CSV anyway (I mean definition of single command).
The whole point is to find more flexible way to create custom actions; ability to access loops, timers and to query other objects may be handy in more advanced cases.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Frenzie
  • [*][*][*][*][*]
  • Administrator
Re: Questions to the Developer
Reply #72
The whole point is to find more flexible way to create custom actions; ability to access loops, timers and to query other objects may be handy in more advanced cases.

Yup, that sounds great. :)

  • exley
  • [*][*][*]
Re: Questions to the Developer
Reply #73
here's 1 from me / universal question
I love the fact that Otter is light, but problem was when I wanted to use it on old PC
which CPU isn't SSE2 supportive, and every QTWebKit based browser crashes on such PC

so my question is, is there any plan to compile it for such CPU's or never ?

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Questions to the Developer
Reply #74
@exley, we are using precompiled binaries which seems to require SSE2 since Qt 5.3.
It is still possible to avoid compilation of entire stack by using Qt 5.2 SDK to just compile Otter (which shouldn't took long even on older machines) as we still support that version (we will switch to 5.3 as minimum after beta4) but that is quite big download.

Sadly my Windows machine (laptop) is not powerful enough to recompile entire Qt but I could later try to cross-compile it using my main machine.
It might be a good idea to do the same for default package, we could try to drop some odd dependencies that way.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.